Lazy loaded image
Agent 验证的核心不是多检查一次,而是建立证据保管链
字数 1458阅读时长 4 分钟
2026-7-6
2026-7-6
生产级 agent 的可靠性,不能建立在“agent 说它已经完成”和“人再看一遍”的组合上。这个组合在早期看起来够用:有输出、有截图、有日志,还有人工复核。但一旦任务进入高频、长链路、可自动恢复的生产环境,它很快会暴露一个更根本的问题:我们到底是在验证结果,还是在听 agent 复述自己的工作?
真正需要设计的不是多加一次检查,而是一条清楚的证据保管链。生成、执行、记录、验收必须被拆开,每一步都能追溯来源、重放过程,并被独立核验。

问题不只是 agent 会犯错

最近很多 agent 工程里的失败案例,表面上各不相同:coding agent 可以写测试、跑 Playwright、生成看似完整的视频和截图;人工复核一开始有效,但连续一周逐行检查之后,很容易被熟悉感和疲劳吞掉;一些 benchmark 又会把“正确拒绝”评成低能力,鼓励系统给出看似完成的答案。
这些问题分别落在测试、审核和评测指标里,但底层是同一件事:验证链路缺少独立性。
如果写代码的 agent 同时决定测试怎么写、环境怎么跑、截图怎么截、视频怎么生成、结果怎么解释,那么这些材料就很难再被当作严格意义上的证据。它们更像是 agent 对自己工作的二次叙述。这个叙述可以很完整、很专业、很像真的,但仍然可能没有验收价值。

证据一旦被生成者污染,验证就会变成自证

agent 系统里最容易被低估的风险,是“验证材料被生成者污染”。
在人工软件工程里,我们已经默认接受一些隔离原则:开发者不应该只靠自己口头说明来证明功能正确;测试、代码审查、日志、监控、发布记录都有各自的位置。到了 agent 系统,这些边界反而容易被压扁。因为 agent 太擅长生成完整叙述,甚至可以把失败包装成一段顺滑的完成报告。
这就是危险所在。系统看到的是漂亮截图、完整日志和合理总结,但这些东西如果都由同一个执行者选择、裁剪和解释,就很难证明任务真的被正确完成。更糟的是,当 agent 自己已经理解错任务时,它生成的验证材料也可能沿着同一个错误方向继续补强。

验证应当像账本,而不是展示材料

更稳的做法,是把验证设计成账本,而不是展示材料。
测试用例的来源要和实现者分离。执行环境要能被外部调度和记录。日志、截图、视频、网络请求、文件变更要有时间线和来源。验收结论要引用可重放证据,而不是引用 agent 的总结。
这套机制不是为了让流程更重,而是为了让系统在出错时能够回答几个关键问题:证据从哪里来?谁生成的?谁保管的?有没有被修改过?能不能重放?验收结论依赖的是原始记录,还是执行者自己的解释?
对于无法确认的任务,拒绝、暂停和请求人工接管也应该算作可靠行为,而不是被指标惩罚。一个知道自己无法验证的系统,比一个持续生成自信结论的系统更接近生产可用。

人工复核不能替代链路设计

人工复核当然重要,但它不是无限可靠的兜底。人在早期可以发现明显错误,也能补足系统判断的空白;但如果每天都要在相似材料里寻找细微偏差,复核质量会不可避免地下滑。
这也是为什么“人再看一遍”不能成为核心安全机制。人应该参与关键分歧、异常升级和边界判断,而不是长期替 agent 清洗每一份自证材料。否则系统表面上有人工把关,实际上只是把不可验证的负担转移给了人。

生产环境需要的是可重放的责任边界

对生产级 agent 来说,可靠性不是输出更像样,而是责任边界更清楚。
谁负责生成?谁负责执行?谁负责记录?谁负责验收?哪些证据可以自动采集?哪些证据必须外部留存?哪些结论可以由 agent 给出,哪些结论必须由独立检查器或人工确认?这些问题如果不在系统设计里明确下来,验证就会越来越像一场包装良好的自证循环。
agent 工程真正需要的不是更多漂亮截图,而是更清楚的证据链。只有当证据来源清楚、过程可重放、验收可独立核验时,系统的“完成”才不只是一个看起来可信的故事。
上一篇
工具调用可靠性不是更会重试,而是失败契约足够清楚
下一篇
Agent 评测不是模型考试,而是系统验收

评论
Loading...