课题二十二:自我验证与自动评判(Self-Verification)

优先级: 观察中

核心问题

Agent 在多步骤任务中如何自动验证自己输出的正确性?不依赖人逐步骤审核,实现从 HITL(Human-in-the-Loop)到 Auto-Judging 的转变。

关键方向

1. 自我验证机制

  • 内部反馈回路:Agent 每步输出后自动检查
  • 一致性验证:同一问题的多次回答是否一致
  • 外部工具验证:调用计算器、编译器、数据库等作为验证器

2. 错误检测与恢复

2a. 故障分类体系

  • 按可恢复性区分:瞬态故障(API 超时/限流、网络抖动 — 可重试) vs 永久故障(参数错误、权限不足 — 需升级给人)
  • 按影响范围区分:局部故障(单次工具调用) vs 全局故障(状态损坏、内存泄漏 — 需 checkpoint 恢复)
  • 按来源区分:LLM 层(输出异常/幻觉)、工具层(调用异常/超时)、环境层(系统崩溃/网络中断)

2b. 恢复策略

  • 重试退避:指数退避 + 抖动,区分幂等和非幂等操作
  • 替代路径:某工具不可用时切换到等价工具(如 Claude API 降级到 OpenAI API)
  • 状态回滚:检测到状态不一致时回退到上一个已知一致的状态点
  • 热切换:主模型故障时无缝切换到备选模型,不影响正在执行的任务
  • 优雅降级:部分能力不可用时告知用户”当前只能做 X,Y 功能暂时不可用”,继续执行核心功能

2c. 状态一致性与 Checkpoint

  • 多步骤 Agent 在工具调用 A(成功)→ B(失败)时崩溃,恢复后需识别已完成的 A 避免重复执行
  • checkpoint/snapshot 机制:关键节点(工具调用前后、状态变更时)持久化状态快照(序列化/存储机制依赖课题四 Harness 的 checkpoint API)
  • 恢复后执行”干运行”验证:确认外部系统状态与 Agent 内部状态一致,差异自动修复

2d. 错误模式识别

  • 积累常见错误类型,形成故障知识库
  • 同类错误多次出现时主动调整行为策略(如某 API 频繁超时 → 自动增加超时时间或换工具)
  • 事后分析:每次恢复完成后记录故障摘要(原因 + 恢复动作 + 耗时),供系统改进

3. 置信度评估

  • Agent 对其输出主动标”不确定”
  • 低置信度时自动寻求外部验证

当前问题

  • 自我验证的可靠性本身需要验证——谁验证验证器?
  • 验证成本:每步验证增加 token 消耗
  • 过度自信:LLM 倾向给出高置信度但错误的回答

典型场景

  1. API 故障自动恢复:Agent 在执行途中 LLM API 返回 429/503,自动执行指数退避重试 + 切换到备选模型,任务不中断
  2. 工具异常降级:Agent 调用的外部工具超时,检测后重试或切换等价工具,记录故障供事后分析
  3. 长时间运行崩溃恢复:Agent 运行 30 分钟后进程崩溃,重启后从最近 checkpoint 恢复状态继续执行
  4. 状态不一致修复:Agent 在工具链中间步骤崩溃,恢复后识别已完成的上游操作,避免重复执行

关联课题

经典理论映射

重构(Fowler, 1999)的核心原则——“在不改变外部行为的前提下改善内部结构”——与自我验证形成有趣的类比。Agent 的自我验证本质上是在做”重构的反面”:不改变内部结构的前提下验证外部行为的正确性。两者的共同点是都需要行为保持性测试(behavior-preserving tests)。

TDD(Beck, 2002)的红-绿-重构循环直接对应 Agent 自我验证的策略模式:红 = “这个输出我怀疑有问题”(检测异常),绿 = “验证通过,输出正确”(确认正确),重构 = “调整行为策略避免同类问题”(学习改进)。这套模式为 Agent 自我验证提供了成熟的可参照流程——不是从零发明,而是把软件工程已验证的实践翻译到 Agent 语境。

心理学理论映射

邓宁-克鲁格效应(Kruger & Dunning, 1999)—— 能力最差的人最倾向于高估自己,因为他们缺乏”知道自己不行”的元认知能力。这与 Agent 的自我验证困境完美对应:LLM 对自己不知道的事情没有感知,反而可能给出高置信度的错误回答。邓宁-克鲁格效应的深层解释是——评估自己需要的能力与被评估的能力是同一套。你不会 Python 就无法判断自己写的 Python 好不好。对应到 Agent:自我验证之所以困难,不是因为验证器不够好,而是 Agent 无法用比生成答案更强的能力来验证自己——验证能力和生成能力在同一模型上,上限就是一样的。这解释了为什么外部验证器(另一个模型、工具、规则)可能是比自我验证更可靠的路径。

脑科学理论映射

预测编码(Rao & Ballard, 1999; Friston, 2005)—— 大脑不是被动处理所有输入,而是自上而下地预测输入应该是什么,只处理预期之外的偏差(prediction error)。这个机制对 Agent 验证有直接启发:Agent 不需要在每一步都做完整验证,而是预测”这一步应该产出什么”,然后对比实际输出。只处理偏差(prediction error)比验证整个输出节省数量级的计算。而且预测编码的层级结构——高层预测低层、低层报告偏差——正好对应 Agent 的分层验证:高层策略层预测”这个工具调用应该成功”,低层执行层报告”失败了”才是需要处理的 signal。