AI 智能体的误差累积:为什么每步 95% 的准确率还不够
AI 智能体的误差累积(compounding error)是指:长任务的成功概率等于每一步成功概率的乘积。若每步准确率为 95%,10 步的链条大约有 60% 的概率成功,20 步则只有约 36%。Harness 通过逐步检查并固定已验证的状态来对抗这一效应,使错误不会继续向后传递。
什么是误差累积
智能体解决问题时并不是一步到位,而是完成一条链条:读取文件、修改函数、运行测试、修正导入。假设每一步正确的概率为 p,步骤之间相互独立,并且一步的错误会破坏之后的所有步骤,那么 n 步链条整体成功的概率就是 p 的 n 次方。这就是 AI 智能体的误差累积,英文称为 compounding error。
直觉容易误导人:每步 95% 听起来很可靠,但指数会很快吃掉这点余量。
| 步数 | p = 0.95 | p = 0.99 |
|---|---|---|
| 1 | 95% | 99% |
| 10 | ≈ 60% | ≈ 90% |
| 20 | ≈ 36% | ≈ 82% |
| 50 | ≈ 8% | ≈ 61% |
这个模型很粗略:实际中各步并非完全独立,而且有些错误是无害的。但它准确地指出了方向:自主运行的链条越长、中间没有检查,结果正确的可能性就越小。
为什么长链条会崩溃
早期步骤中的错误不会原地消失。智能体会在错误的基础上继续构建,等到问题明显暴露时,bug 上面往往已经堆了十几层代码。更糟的是,当智能体自己评判结果时,它的判断天然偏向“一切正常”,因此报告“完成,测试全部通过”的同时,代码可能已经有一半不能工作。
Harness 如何应对
提高 p 只能起到一部分作用,模型也不会因此变得万无一失。更主要的杠杆是阻止错误进入下一步。Harness 负责闭合反馈回路。
- 每一步之后的传感器。 一条检查命令(例如包含测试和 linter 的
make verify)客观地衡量结果,而不是依赖智能体的自我评价。 - 恢复点。 通过检查的步骤用一次提交固定下来。之后的链条从已验证的状态开始,累积的错误实际上被清零。
- 最小化修正。 检查失败时,智能体只修复具体的原因,而不是从头重写。这样可以抑制震荡。
- 短任务。 一次一个任务、步子小、检查频繁。与其盲目执行二十步,不如拆成二十个只有一步的链条。
在 Claude Code 中,可以把检查挂到 hooks 上,让它自动运行,而不是依赖模型的自觉。
总结
AI 智能体的误差累积是一道简单的算术题:0.95 的十次方约为 0.60,二十次方约为 0.36。解决办法不是“更聪明的模型”,而是 Harness:逐步检查、提交已验证的状态、使用短任务。这一回路及其背后的规律,在课程的讲座中有详细讲解。
常见问题
这是否意味着智能体无法完成 50 步的任务?
没有中间检查时,成功的概率确实很小。每步之后进行检查并提交,任务就变成一系列短链条,总体成功率不再取决于所有步骤的乘积。
更强的模型是否有帮助?
有帮助:把准确率从 95% 提高到 99%,可以把 20 步的成功率从 36% 提高到 82%。但即使 99% 的准确率做 50 步,成功率也只有约 61%,因此检查依然必不可少。
智能体出错时为什么仍然很有把握?
没有外部传感器时,智能体是拿结果与自己的预期比较,而不是与实际情况比较。它的信心会增长,与代码是否正确无关。
能否直接让智能体自己检查自己?
在提示词中提出要求并不能保证执行。更可靠的做法是把检查机械化:单独的命令、hook,或 CI 中的检查。