可验证的 AI:如何让 Agent 用代码自证正确

AI 自报告有多不可靠

用 AI Agent 做过复杂任务的人都知道一个规律:

AI 说"已完成"的次数,远多于它实际完成的次数。

具体表现:

  • "我已经回写到 log.md 了" → 打开文件,空的
  • "所有字段都已更新" → 检查发现漏了 3 个
  • "验证通过" → 实际根本没跑验证,只是"我觉得 OK"

这不是 AI 在"骗你"——它是真心认为自己做完了。问题是:认知 ≠ 事实

解法:退出码是唯一的真理

我的解法极其简单:

不相信 AI 说了什么,只相信脚本退出码是否=0。

每个关键操作都有一个对应的验证脚本。操作完后,AI 必须跑这个脚本。退出码不是 0?操作视为未完成。

三层验证体系

Layer 1: 数据完整性

最基础的检查——文件系统的事实是否自洽

脚本检查什么典型发现
index_verify.py索引文件 vs 实际目录内容注册了但文件不存在
frontmatter_lint.pyYAML 格式、必填字段、重复键日期格式错误、缺 type 字段
index_update.py索引是否需要更新新文件未被索引收录

这层不做业务判断——纯文件系统一致性。

Layer 2: 逻辑一致性

检查业务逻辑是否被正确执行

verify_daily.py — 日总结验证:

python3 verify_daily.py --date 2026-04-15
# 检查:
# ✓ 是否包含会议段落
# ✓ 是否包含沟通段落
# ✓ 是否包含工时表
# ✓ 格式是否符合模板
# 退出码: 0=通过, 1=失败(输出具体缺失项)

verify_chat_analyst.py — 聊天分析回写验证:

python3 verify_chat_analyst.py --date 2026-04-15
# 检查:
# ✓ 当日 comms/ 中提取的信号
# ✓ 对应 people/log.md 是否真的写入了
# ✓ 标签格式是否正确 [chat-analyst] {date}
# 退出码: 0=全部回写完成, 1=有遗漏

关键: 这些脚本直接读文件系统,不依赖 AI 的自我报告。AI 说"我写了"?grep 一下就知道是不是真的。

Layer 3: 行为合规性

最高层——检查流程是否被正确遵循

这层不是检查"结果对不对",是检查"过程对不对":

  • Gate 机制:流程中的强制检查点是否被执行
  • 宏脚本:端到端全链路验证(从采集到回写到索引,一条龙检查)

实际运作:一个会议分析的验证链

注意修复循环:验证失败不是终止——是修复后重验。AI 可以修错,但修了之后必须再跑一次脚本,不能说"我改过了应该 OK 了"。

设计原则

原则说明
脚本比 AI 可信AI 有幻觉,grep 没有
退出码是唯一通行证exit=0 才算通过,别的都不算
验证独立于执行验证脚本和业务技能是两个独立模块
可重复跑验证是幂等的,跑 10 次结果一样
先验证后提交commit 之前必须所有相关验证通过
不信自报告"我检查了"不算,跑脚本才算

给 Agent 开发者的建议

如果你在构建 AI Agent 系统:

  1. 每个关键操作都配一个验证脚本 — 成本低(通常 20-50 行 Python),收益高
  2. 验证脚本输出可读的失败信息 — AI 需要看懂失败原因才能修复
  3. 在 prompt 里强制"操作后跑验证" — 不是建议,是强制
  4. 验证脚本自己也要被测试 — 一个有 bug 的验证脚本比没有验证更危险(给你虚假的信心)
  5. 积累验证脚本库 — 它们是系统可靠性的真正底线

核心洞察:AI Agent 的可靠性不来自更聪明的模型——来自更笨但更诚实的验证脚本。模型会幻觉,exit 0 不会。与其花精力让 AI "更小心",不如花精力建验证网。

Comments