【Agent工程】(1)—— 演示成功不等于系统可用

发布时间:2026/10/16 23:02:02

【Agent工程】(1)—— 演示成功不等于系统可用 【Agent工程】1—— 演示成功不等于系统可用文章目录【Agent工程】1—— 演示成功不等于系统可用1. 演示成功不等于系统可用2. 本专栏在解决什么问题2.1 问题定义2.2 非目标3. 专栏内容划分与方向4. 最小上线闭环5. 工具面先分清三层边界6. 贯穿示例工单助手 Agent6.1 同一请求下的两种写法7. 可运行示意用字典描述一版最小任务卡片8. 四个常见误区9. 适用边界10. 术语速查11. 小结与下一篇摘要很多项目已经能把大模型接到几个工具上演示时偶尔成功真正难的是做成可长期运行的系统——任务可拆、权限可控、结果可验收、成本可封顶。本篇说明 Agent / 工具系统工程在解决什么问题、专栏后续大致写哪些方向并用工单助手作为贯穿示例给出一版最小任务卡片与验收代码。适合准备把 Agent 从演示推进到业务链路的工程师。读完可以判断当前停在演示层还是已经具备可上线系统的骨架。1. 演示成功不等于系统可用把模型接到工具以后常见的「成功」长这样提示词里写清目标挂上查库、改状态、发消息等工具人工连点几次看起来做对了这在演示里足够在业务里不够。演示通常不回答这次成功的条件是什么换一批工单是否仍成立写操作是否被限制在最小必要范围失败时如何重试、降级或交给人一次运行花了多少钱、会不会在循环里把预算烧光事后能否还原调用了哪些工具、改了什么状态本专栏把这类问题统称为Agent / 工具系统工程关注的不是又一个更炫的对话效果而是把工具调用做成有边界、有验收、有审计的系统能力。2. 本专栏在解决什么问题2.1 问题定义给定一个业务目标例如把符合条件的工单升级为紧急并通知值班一组可调用工具查询、写入、通知、检索代码等一个会规划步骤并调用工具的 Agent 运行时要求系统在约束内完成目标并且可验证有明确的完成定义与验收方式可约束工具权限与副作用范围事先声明可观测关键调用与状态变更留痕可控成本有超时、次数与费用上限2.2 非目标本专栏不展开模型预训练、微调配方的完整教程某一家厂商控制台的逐屏点击说明把 Agent 神化成「全自动替代全部岗位」的叙事模型能力当然重要但在工具系统里它往往只是规划与语言层真正决定能不能上线的常常是任务定义、权限边界与验收门禁。3. 专栏内容划分与方向后续内容按工程顺序展开先把任务与权限说清楚再谈多 Agent 与成本否则编排只会把混乱放大。方向主要讨论什么总览分清演示与可上线系统固定最小闭环任务与验收模糊目标如何拆成任务卡片与完成定义工具面工具注册、读写分离、作用域、危险操作编排单 Agent 闭环以及多 Agent 委托边界运行时上下文预算、限流、超时、幂等观测、成本与上线审计、评测、配额、灰度、回滚与人机协同常见切入方式项目现状更合适的阅读重点只会演示对话还没有任务卡片先读任务与验收再读工具面已有工具调用但权限混乱先读工具面再回头补任务卡片单 Agent 已稳定准备拆多 Agent验收做扎实后再读编排马上要接业务流量对照观测、成本与上线相关章节做检查不必按专栏顺序通读但若跳过任务与验收直接做多 Agent后面排障成本通常更高。4. 最小上线闭环把一版 Agent 系统视为「可以进入业务」至少要闭合下面五环环节最少产出物缺了会怎样目标一句话业务结果 非目标Agent 优化错误目标权限工具清单与读写边界误改生产或越权读取执行可追踪的调用轨迹出问题无法复盘验收命令、断言或对照表只剩「感觉对了」无法复现成本步数 / 时间 / 费用上限循环调用拖垮预算这五环是本专栏的验收骨架。后文每一块内容都会回到其中至少一环而不是另起一套口号。实践里可以用一句话自检如果无法用命令或断言证明「这次做完了」就还停留在演示层。任务卡片不是文牍而是把这句自检提前写成字段。五环不必一次做完美但上线前至少要能指出目标写在哪里、谁有写权限、失败如何发现、怎样判定完成、预算上限是多少。缺任何一项演示里的偶然成功都很难复现。5. 工具面先分清三层边界工具不只是「函数能调用」。工程上至少要分开三层发现层有哪些工具、参数是什么、返回什么Agent 规划依赖这一层的准确性。权限层当前角色是否允许调用只读工具与写操作是否分开挂载。副作用层调用会改哪些外部状态失败时是否可补偿、是否要求幂等键。很多演示把三层揉在一个 tools 数组里短期省事长期会在排障时付出代价分不清是提示词问题、权限问题还是工具本身的副作用设计问题。6. 贯穿示例工单助手 Agent后续篇章默认使用同一业务故事降低上下文切换成本。场景客服或值班同学提出——把工单 T-1024 升为紧急写明原因并通知值班频道。允许的工具示意工具类型说明get_ticket只读查询工单当前状态update_ticket_priority写入修改优先级add_ticket_comment写入追加备注notify_oncall写入外部副作用通知值班完成定义示例工单优先级为urgent备注中包含约定关键词如升级原因值班通知已发送或明确记录「通知失败并已降级」全程未调用未授权工具例如直接删单、改账单演示版只关心模型有没有说出正确步骤系统版还要关心步骤是否在权限内、验收是否可机器执行。6.1 同一请求下的两种写法维度演示写法系统写法输入一段自然语言自然语言 任务卡片或由拆分器生成卡片工具临时塞进提示词注册表声明运行时按角色挂载成功标准人看对话觉得对acceptance_report可返回passed失败处理再问一句模型重试策略、降级通知、人工接管事后聊天记录审计字段工具、参数摘要、结果码、耗时本专栏后文会反复使用这张对照表每当引入新机制多 Agent、限流、配额都先看它落在上表哪一列。7. 可运行示意用字典描述一版最小任务卡片下面代码不绑定某一家 Agent 框架只表达本专栏反复使用的数据结构。字段可以映射到具体编排器。from__future__importannotationsfromtypingimportAnydefbuild_ticket_upgrade_card(ticket_id:str,reason:str)-dict[str,Any]:构造工单升级任务卡片示意。return{goal:f将工单{ticket_id}升级为紧急并通知值班,non_goals:[删除工单,修改计费字段,读取无关客户隐私备注],allowed_tools:[get_ticket,update_ticket_priority,add_ticket_comment,notify_oncall,],write_tools:[update_ticket_priority,add_ticket_comment,notify_oncall,],acceptance:{priority_equals:urgent,comment_must_contain:[升级原因,reason],notify_required:True,},budgets:{max_steps:8,max_seconds:60,max_tool_calls:12,},}defacceptance_report(card:dict[str,Any],final_state:dict[str,Any])-dict[str,Any]:根据最终状态做最小验收示意不连真实系统。acccard[acceptance]checks{priority_ok:final_state.get(priority)acc[priority_equals],comment_ok:all(keyin(final_state.get(comment)or)forkeyinacc[comment_must_contain]),notify_ok:(notacc[notify_required])orbool(final_state.get(notified)),tools_ok:set(final_state.get(used_tools,[])).issubset(set(card[allowed_tools])),}checks[passed]all(checks.values())returnchecksif__name____main__:cardbuild_ticket_upgrade_card(T-1024,产线停机)# 假设某次运行后的终态成功路径final_state{priority:urgent,comment:升级原因产线停机,notified:True,used_tools:[get_ticket,update_ticket_priority,add_ticket_comment,notify_oncall,],}print(acceptance_report(card,final_state))再给一段越权路径对照说明验收为什么必须检查工具集合if__name____main__:cardbuild_ticket_upgrade_card(T-1024,产线停机)bad_state{priority:urgent,comment:升级原因产线停机,notified:True,used_tools:[get_ticket,update_ticket_priority,delete_ticket,# 未授权],}reportacceptance_report(card,bad_state)assertreport[passed]isFalseassertreport[tools_ok]isFalseprint(越权路径已被验收拦住:,report)这两段代码的重点不是把工单系统写完而是固定专栏口径先有任务卡片再谈 Agent 自由发挥验收必须可机器判断未授权工具即使结果碰巧对了也不能算通过8. 四个常见误区误区典型表现更稳妥的做法把对话当系统只保存聊天记录没有任务卡片先写目标拆解与完成定义工具权限过大读写、高危操作挂在同一角色用注册表与权限策略拆开只看成功率抽测几次「好像行」建立评测集与成本配额无人值守幻想无审计、无人工接管点准备灰度、回滚与人机协同项目若同时踩中前两条建议先不要上多 Agent把单 Agent 的权限与验收做稳收益通常更大。9. 适用边界本专栏适合已经能调用模型 API 或本地推理准备把工具链路产品化的工程师需要给 Agent 项目补权限、验收与审计的技术负责人本专栏不适合作为大模型数学原理第一课某一具体 IDE 插件的操作手册替代品「无需工程、只靠提示词即可上生产」的证明材料若主要短板是模型写不出可用代码或检索质量差应先补齐编码能力或检索评测工具系统工程解决的是调用与约束不能替代那两块基础。10. 术语速查术语含义Agent能按目标规划步骤并调用工具的运行时角色工具Tool可被调用的外部能力如查询、写入、通知任务卡片目标、非目标、允许工具、验收与预算的结构化描述完成定义怎样算做完最好可机器判定权限边界谁能调用哪些工具、读写是否分离副作用调用对外部状态的真实改变审计保留关键调用与决策轨迹便于复盘降级主路径失败时的保守替代路径11. 小结与下一篇回到文首的判断如果只有提示词和临时工具列表还没有任务卡片、权限边界与验收命令那么当前更接近演示而不是可上线系统。本篇固定了三件事专栏主线是任务 → 工具面 → 编排 → 运行时 → 观测与上线最小上线闭环是目标、权限、执行、验收、成本贯穿示例是工单助手 Agent下一篇进入「任务与验收」把模糊业务一句话拆成可执行的任务卡片字段并给出第一版拆分脚本。系列导航本篇为专栏第 1 篇下一篇【Agent工程】2—— 模糊目标到任务卡片撰写中
延伸阅读

更多相关文章

2026/10/16 22:26:10

Node系列 · 数据库:视图

Node系列 数据库:视图视图(View)是"虚拟表"——查询时按定义动态生成结果,不存储实际数据。视图能简化复杂 JOIN、控制数据访问权限、抽象业务规则——但性能与可维护性有 trade-off,需要明确何时该用、何时…

2026/10/16 18:32:07

Grok Bot 技术架构拆解:四个支柱撑起一个会干活的AI队友

上一篇我聊了 Grok Bot 的定位——「拥有自己云电脑的 AI 队友」。很多人看完追问:它到底是怎么做到的?为什么别的 AI 还停在「问答」,它已经能「执行」了? 这篇不谈营销话术,只拆技术架构。把 Grok Bot 拆开看&#…

2026/10/17 18:05:53

基于R语言的钻石价格回归分析:数据清洗到多元线性建模

简介:一份基于R语言的钻石价格分析报告,面向R语言数据分析和回归建模学习者,以ggplot2包自带的diamonds数据集为实例,系统展示从数据预处理到预测建模的完整流程。压缩包仅含1个docx文档,大小约2.4MB,已有2…

2026/10/17 18:05:53

伺服中的电子凸轮与追剪

一、机械凸轮 机械凸轮是一个具有曲线轮廓或凹槽的构件,它把运动特性传递给紧靠其边缘移动的推杆,推杆又带动机架做周期性运动。 凸轮的推杆位置跟随凸轮角度的周期性变化而变化,其运动特性与机械凸轮的外形相关,定义凸轮…

2026/10/17 18:05:53

Vue 3 + Django 实战:从零搭建内容社区平台的架构设计与部署

说起来这可能不算最“主流”的技术选型,但我最近把一个茶文化交流平台从零搭到上线,前端用的 Vue 3,后端是 Python Django,整体跑下来非常顺手。这类平台既不是纯内容站,也不是纯社区产品,它更像一个“内容…

2026/10/17 18:05:53

姿态估计驱动运动计数:从关键点角度到状态机实现

说到运动计数APP开发,上一篇我们把摄像头预览、媒体管线和基础工程走通了,框架搭起来之后,其实真正决定项目能不能落地的,是后面这两块硬骨头:一块是姿态估计模型给出的原始关键点数据怎么变成有意义的动作信息&#x…

2026/10/17 18:00:53

Kimi K2 + Claude Code 接入 3 个神级开源 MCP,相当丝滑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 5:33:43

Python调用Gemini Structured Outputs实现工单路由门禁

客服工单最怕的不是模型“答错一句话”,而是它给出一段看起来合理的说明,程序却从中猜错优先级。通俗做法是:要求模型只交 JSON(JavaScript Object Notation,轻量数据格式),再让代码验证它。Gem…

2026/10/16 4:03:48

Spring Boot超市进销存系统毕设实战:从需求拆解到答辩通关

最近带的一个学生项目组里,有A同学跑来问我:选什么毕设题目最稳妥,既能让评审老师觉得工作量够,又不会在答辩时被问到语无伦次。我第一反应就是推荐基于Spring Boot的超市仓库管理系统——也就是超市进销存系统。这个题目乍一看平…

2026/10/17 14:20:58

Flutter StatefulWidget 生命周期核心解析

很多刚开始接触 Flutter 的朋友,在看完一堆“Hello World”和基础组件之后,大概率都会撞上同一堵墙:StatefulWidget 里那堆 initState、build、dispose 方法,到底什么时候被调用?为什么顺序是那样?在里面到…

2026/10/17 0:04:32

PlanarSLAM:面向曼哈顿世界的点线面联合SLAM系统

简介:本资源是面向机器人视觉与SLAM研究者的C开源RGB-D SLAM系统实现,专为结构化室内场景(如办公室、走廊)设计,通过融合点、线、平面三类几何特征并引入“曼哈顿世界”假设,显著提升位姿跟踪鲁棒性与稠密地…

2026/10/17 0:04:32

TDH Workflow调度实战:从DAG依赖驱动到任务编排与故障排查

1. 从一个调度脚本说起:TDH Workflow到底在解决什么问题第一次接触TDH的Workflow,是在一个数据清洗项目里。当时团队每天要跑几十个ETL任务,任务之间有严格的先后依赖——A表清洗完才能跑B表的关联,B表跑完才能触发C表的聚合。最开…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑