如果要把整本书压缩成一个工程检查清单,可以保留下面这些问题。
但如果只把它们理解成一串散点问题,还不足以真正用于设计和评审。
更好的方式,是把它们组织成十个检查面。这样无论是评审一个现有系统、从零设计一个系统,还是排查一个问题系统,都能按同一顺序执行。
因此,第 40 章第一条结论应该是:
一个成熟的 Agent 架构,不是靠“感觉它挺聪明”来判断,而是靠一组可逐项检查的结构条件来判断。第一,目标面。
- 这个问题真的需要 Agent 吗?
- 任务目标是否足够具体,而不是“万能助手”式空目标?
- 成功条件、失败条件、停止条件、升级条件是否都被外部定义?
第二,对象面。
- 业务对象、字段、关系、状态是否被显式建模?
- 关键业务规则是否程序化,而不是全塞进 prompt?
- 模型看到的是清洗后的任务对象,还是原始噪声堆?
第三,模型面。
- 模型能力画像是否真的匹配任务?
- 哪些步骤需要推理强度,哪些只需要稳定结构化输出?
- 是否存在大小模型分层与预算控制,而不是默认全程用最贵能力?
第四,输入与状态面。
- 输入契约是否清楚?
- 当前轮上下文、会话状态、长期记忆、外部状态是否明确分层?
- 状态写入、覆盖、过期、回滚规则是否被显式定义?
第五,动作面。
- 动作空间是否足够完成任务,同时保持可控?
- 读、写、删、触发、外发、支付、执行脚本等高副作用动作是否被分层?
- 哪些动作允许自动执行,哪些动作必须审批,哪些动作绝不能代理?
第六,控制流面。
- 决策循环是否被显式设计?
- 哪些步骤由代码固定,哪些步骤由模型决定?
- 如果是多 Agent,角色边界、交接状态和最终控制权是否明确?
第七,验证与评测面。
- 最终结果是否有外部验证器?
- 是否有 trace、eval、grader、回放和失败归因机制?
- 系统能否区分幸运成功、隐藏失败和稳定成功?
第八,治理与安全面。
- 高风险动作是否有审批和权限边界?
- 是否区分可信与不可信输入?
- 是否对 prompt injection、越权调用、状态污染和错误自动化有明确防线?
- 是否具备 audit、kill switch、sandbox、fallback 和人工接管路径?
第九,运行面。
- 成本、延迟、并发和重试是否可承受?
- 是否有 timeout、限流、背压、降级和容错策略?
- 这个系统在真实流量下是否仍然能稳定运行,而不是只在小样本 demo 下看起来聪明?
第十,演化面。
- 新工具、新规则、新角色、新业务对象能否在不打碎整体结构的情况下加入?
- 系统是否能持续回归测试?
- 团队能否在版本迭代中持续理解、修复和扩展它,而不是越来越依赖少数人经验?
如果这十个检查面里有几项长期答不清,那么系统大概率还不是真正成熟的 Agent,而只是带着 Agent 外观的原型。
因此,第 40 章第二条结论应该是:
判断一个 Agent 是否成熟,不要先看它会多少花活,而要先看它在目标、对象、模型、状态、动作、控制流、评测、治理、运行和演化十个面上是否都能自圆其说。这套清单还有一个更重要的用法:它不只是验收工具,也是设计工具和复盘工具。
设计前先跑一遍,可以提前暴露结构缺口; 上线前再跑一遍,可以暴露治理和评测短板; 事故后再跑一遍,可以迅速找到根因是目标失焦、状态失控、动作越界、控制权混乱,还是观测不足。
所以,本章最后要留下的判断是:
Agent 架构的成熟,最终不是体现在一段更聪明的对话里,而是体现在这套系统能否经得起逐项检查、逐项解释、逐项治理和逐项演化。