当工具返回「合理但错误」的结果时,Agent 会累积隐性错误;严格模式 silent 错误率 0.2% 时整体失败率仅 1.8%,宽松模式则飙升至 24%。
一次错误的工具调用有两种截然不同的结局。它要么报错——404、schema 违规、权限拒绝——此时智能体能看到错误并重试、同时将该工具排除在外;要么返回一个看似合理的结果——空列表、默认对象、外形正确但内容错误——此时智能体会在被污染的状态下继续执行。把第二种情况称为「静默」。那么此后每一个验证自身输入的调用,都是一次偶然的校验器:称之为单步概率触发。
这里没有任何语言模拟。一个步骤是在 K 个工具中选择,正确率为 p,整页内容归结为一个封闭公式:
success = p^H
wrong = SUM_i p^i * (1-p) * silent * (1-trip)^(H-1-i)
value of a check at step j, relative to the last = (1-trip)^(H-1-j)
读第二行:step i 发生静默错误后,还有 H-1-i 次后续调用可以捕获它,所以它触达用户的概率随发生时刻的提前而几何衰减。无依赖的 JavaScript,五个世界各 1000 任务:https://dev48.infy.uk/ai/days/day69-agent-step-reliability.html
十二步每步 96.5% 正确率,复合后是 65.2%——这个半数是大家熟悉的。没人定价的那个半数是工具层。严格模式(静默 0.20,触发 0.35):91.5% 成功率,每千任务 18 个自信的错误答案。宽松模式(静默 0.85,触发 0.05):68.6% 成功率,240 个。相同的模型、相同的 prompt、相同的重试策略,账单 12.18 对 11.92——触达用户的那个结果相差 13.6 倍,这完全由一次错误调用是否报错、以及下一个调用是否验证其输入所决定。这两点在任何 agent 配置里都找不到。
我本来要给出的建议被帕累托支配了
分散验证预算:每步都检查,或每三步抽样一次。本来是这样的建议。在检查次数相同的情况下,检查位置比预算更能移动结果。
末尾一次检查在两个维度上都胜过前端三次抽样。三次前置检查每任务花 1.43,仅将 7.7% 移动到 7.6%——和什么都没买没区别。机制在于几何项:在触发率 0.22 的十二步中,step 1 的一次检查价值只有 step 12 的 1/15.4,因为下游所有调用都在免费替它检查。
然后后续结论也没能成立
既然发现检查应该放在尾部,下一步诱人的推论是中段是浪费。不是——它对两个目标之一才是浪费,这一页不得不重写。两次尾部检查和全部十二步都检查都达到了 0.7% 错误率,但成功率分别是 80.0% 和 93.9%。验证器将静默错误转换为响亮错误,这做了两件独立的事:它阻止错误答案送达用户(这只在接近末尾时才重要),以及它修复了这个步骤(这只在任何位置都重要)。只有修复才需要均匀分配预算,而一个单一的准确率数字掩盖了你做的到底是哪种选择。
还有两点也站不住脚。将重试升级到 4x 模型每任务多花 1.37 成本换来 0.3 分,因为重试是否有效取决于错误信息本身。而那个 4x 模型本身——每任务 47.86,成功率 93.0%,错误率 2.7%——在所有三个维度上都被「廉价加全量验证」方案击败,后者价格仅为前者的 36%。
93 个验证断言,包括一个从零开始构建的参考模拟器,在 1200 种配置上完全一致;其中 23 个在页面中运行。每天一个 AI 概念,浏览器内实测:https://dev48.infy.uk/aifromzero.php