适用读者:要把 Agent 从 Demo 推到线上的人;要选框架、要过安全评审的人。
前置:S21-J21、J03(工作流)、A01(评估)、A02(安全)。
覆盖旧文:4923–4958(卷十二–卷十八,36 章:12.x 编排 5 / 13.x 评估 5 / 14.x 安全 5 / 15.x 框架 5 / 16.x 编码 Agent 6 / 17.x 项目与生产 5 / 18.x 训练与部署 5)。
扩展点:E-S21-043(Workflow vs Agent 的判据 + 五种编排模式 + DAG 的三件事)、E-S21-044(评估三类 Grader 与可回归评测集;线上/离线双指标)、E-S21-045(四条攻击面与最小权限:审批不是越多越好)、E-S21-046(框架选型五维与决策清单;Demo→生产的七个差距)。
下一篇:待写(J23 · 卷十九到卷二十四)。
1. 一句话结论
上线不是"加个监控",是四件事同时成立:编排可控(知道下一步是什么)、评估可回归(改动能证明没变差)、安全可辩护(越权有闸门)、选型可解释(为什么用这套)。缺一条,就会在上线后以"偶发"的名义反复复发。
出处:
A-4923(12.1)、A-4928(13.1)、A-4933(14.1)、A-4938(15.1)、A-4953(17.5)。
2. 编排:Workflow 还是 Agent(E-S21-043,卷十二)
| 判据 | 选 Workflow | 选 Agent |
|---|---|---|
| 步骤是否已知 | 已知 | 未知或需探索 |
| 分支是否可枚举 | 可枚举 | 不可枚举 |
| 失败代价 | 高(要可预测) | 中低(可试错) |
| 可观测性要求 | 强(每步可查) | 弱(轨迹可查) |
五种编排模式(12.5):串行链、条件分支、并行扇出/汇总、循环(带护栏)、主管-工人。判据:先用能表达的最小模式——能用串行就别上主管-工人。
DAG 的三件事(12.2/12.3):
① 依赖声明:节点间边即数据/顺序依赖
② 参数传递:显式 MapFields(谁给谁),禁止隐式全局状态
③ 状态管理:每节点输入输出可序列化,支持重跑单节点
可视化编排的边界(12.4):图画得出来的流程适合可视化;需要动态决策的环节画不出来——强行可视化会变成"图里塞脚本"。
3. 评估:为什么比训练更重要(E-S21-044,卷十三)
三类 Grader(13.2):
| 类型 | 适用 | 代价 | 偏差 |
|---|---|---|---|
| 规则/断言(代码判分) | 有确定答案 | 低 | 无(但覆盖窄) |
| 模型判分(LLM-as-judge) | 开放性、语义正确 | 中 | 有(长度/格式偏好) |
| 人工 | 高价值抽样 | 高 | 主观 |
可回归评测集(13.3)三要素:固定输入集、固定判分器、固定基线版本。判据:"改动前后必须能跑同一张表"——没有回归集的"优化"只是赌博。
线上/离线双指标(13.4):离线看准确率、Pass@k;线上看成功率、重试率、成本/任务、人工接管率。判据:"离线提升但线上下降"通常是指标选错(离线集不代表真实分布)。
五大陷阱(13.5):评格式不评内容、评一次不评多次(方差)、评平均不评长尾、评模型不评系统、评完不改基线。
4. 安全:四条攻击面(E-S21-045,卷十四)
| 攻击面 | 机制 | 闸门 |
|---|---|---|
| 提示注入 | 外部内容含指令 | 数据/指令分离 + 输出不落地执行 |
| 工具投毒 | 工具描述或返回被污染 | 来源白名单 + 描述审核 |
| 越权动作 | Agent 拿到不该有的权限 | 最小权限 + 不可逆动作审批 |
| 供应链 | 插件/Skill/依赖被替换 | 版本锁定 + 校验和 |
HITL 的取舍(14.3):不是所有步骤都要审批——审批点应落在"不可逆 + 高代价 + 外部可见"三类动作上。判据:审批越多,用户越会一路点"同意",等于没有防护(审批疲劳)。
权限最小化(14.4):默认只读、按需提权、危险动作二次确认、可撤销优先于可执行(先草稿后提交)。
审计(14.5):谁(用户/Agent)、何时、对什么、做了什么、结果如何——五个字段缺一不可回放。
5. 框架选型(E-S21-046,卷十五)
五个维度(15.1):语言生态、编排能力(图/状态机)、可观测性、部署形态(库 vs 服务)、社区与版本节奏。
| 框架 | 定位 | 适合 |
|---|---|---|
| LangChain / LangGraph | Python 生态最全,图编排 | 快速验证、复杂状态机 |
| LangChain4j / Spring AI | JVM 生态 | 已有 Java 服务 |
| ADK / AgentScope | 多 Agent 编排 | 多角色协作实验 |
| Dify / Coze | 可视化平台 | 非工程团队、快速上线 |
决策清单(15.5):已有技术栈 → 团队语言 → 是否需要图/状态机 → 是否需要多 Agent → 谁维护。判据:"框架会换,Harness 的边界不会"——把业务逻辑绑死在框架 API 上,是最贵的债。
6. 从 Demo 到生产:七个差距(17.5)
| 差距 | Demo | 生产 |
|---|---|---|
| 输入 | 干净样例 | 噪声、超长、恶意 |
| 失败 | 重跑一次 | 要降级、要人工接管 |
| 成本 | 不计 | 每任务预算与熔断 |
| 延迟 | 不在意 | P95 与首字时间 |
| 状态 | 内存 | 持久化、可续跑 |
| 权限 | 全权限 | 最小权限 + 审批 |
| 观测 | 轨迹 + 指标 + 告警 |
编码 Agent 为什么先跑通(16.1):验证成本最低——代码跑不跑得起来,机器自己能判。这也是为什么 16.x 用整卷讲 Claude Code / Codex 的能力面、CLI、规则文件与 Hooks:规则工程(CLAUDE.md)与卡点(Hooks)是"可控性"的两个抓手。
7. 反例:八种"上线后反复复发"
| 做法 | 后果 |
|---|---|
| 无回归评测集 | 每次改动靠感觉 |
| 只评平均分 | 长尾失败不可见 |
| 全步骤审批 | 审批疲劳,等于放行 |
| Agent 默认写权限 | 一次误操作造成不可逆损失 |
| 业务逻辑写进框架 API | 换框架即重写 |
| 无成本熔断 | 单任务烧穿预算 |
| 无轨迹 | 失败无法归因 |
| 把可视化编排当万能 | 动态决策塞脚本,维护地狱 |
8. 自测
- Workflow 与 Agent 的四条判据?五种编排模式?
- 三类 Grader 的代价与偏差?可回归评测集三要素?
- 四条攻击面与对应闸门?为什么审批不是越多越好?
- 框架选型五维?为什么说"框架会换,Harness 边界不会"?
- Demo→生产的七个差距?
答案
- 步骤已知/分支可枚举/失败代价/可观测要求;串行、分支、并行、循环、主管-工人。
- 规则/模型/人工;成本与偏差;固定输入、固定判分器、固定基线。
- 注入/投毒/越权/供应链;数据指令分离、白名单、最小权限+审批、版本锁定;审批疲劳。
- 语言生态、编排能力、可观测性、部署形态、社区;业务逻辑应留在自己的 Harness。
- 输入噪声、失败处置、成本、延迟、状态、权限、观测。
9. 下一篇
待写(J23 · 卷十九到卷二十四)—— 交互三范式与延迟预算、具身与 VLA、评测统计(Pass@k 与 Pass^k)、后训练四阶段、持续进化与安全边界、多 Agent 竞技场。
本篇属于系列《S21 · Agent 与工具协议》。旧文来源:A-4923–4958(卷十二–卷十八 36 章);扩展点 E-S21-043…046。框架版本与 CLI 能力随发布变化,具体命令以官方文档为准(待核)。