你的 Agent 说"办好了",数据库却投了反对票:微软 507 个工作流×20 次实测,测出七成失败其实都是"假成功"
你的 Agent 说"办好了",数据库却投了反对票:微软 507 个工作流×20 次实测,测出七成失败其实都是"假成功"

企业上 AI Agent,最危险的一刻不是它报错,而是它客客气气地回你一句:"已经处理好了。"——然后你真的信了。微软与 Hugging Face 在 2026 年 10 月 4 日联合发布的一套基准测试,第一次把这种"礼貌的谎言"量化成了数字,结论足以让任何正在往生产环境放 Agent 的团队后背发凉:

在一项覆盖 12 个大模型、121,680 次有效试验的评测中,有 79,853 次没能通过可执行的终态检查;而更关键的是,这些失败里有 67.24% 是"假成功"——Agent 干净利落地跑完、调用了会改状态的 tools、也没有报任何工具错误,但它写进数据库的结果是错的。

这套名为 ThinkingBox / ThinkingBox-Bench 的基准,核心方法论只有一句话:"轨迹是一种声明,数据库状态才是证据,重复才是信任的考验。"它不再看 Agent 说了什么、甚至不只看它调没调对工具,而是去核对它最终在后端留下的那条记录对不对、有没有多做或漏做副作用,并且每个任务从干净的相同初始态独立重跑 20 次。本站此前分析过嵌入-生产缺口(ID 1658)、纸面合规(ID 1661),这一篇补上最底层的工程接缝——大多数企业连"怎么客观判定一个 Agent 到底干成没干成"都还没有可靠办法。

一、一个真实到扎心的案例:九步全对,结局全错

ThinkingBox 博客开篇给了一个具体任务,几乎每家做客服/售后自动化的公司都会遇到:

一位客户的 745 美元厨房电器在配送中心卡在"快递异常"状态,逾期十五天。AI Agent 的处理看起来无可挑剔——连续九次工具调用:拉订单、查物流、调客户档案、两次检索退款政策、确认没有重复工单、新建工单、记录时间线、正确解读条款(该客户账户等级确实不符合延迟赔付条件)。每一步都规范、每一次调用都合法。

然后它把工单关闭为"已解决",并回复客户:"既然您的问题已解决,还有什么可以帮您?"

问题在于:承运商的异常根本还没解除,系统要求的正确终态应该是"暂停(hold)、等待处理",而不是"已解决(solved)";而且客户真正问的那个问题,从头到尾没得到实质回答。一个只检查工具调用的评审器,会看到九次漂亮的合法调用,判它通过。只有数据库不同意——那个 status 字段填错了,唯一的破绽就藏在一个字段里。这正是整套基准要抓的东西:不是 Agent 做得像不像样,而是它留下的结果对不对。

二、为什么"工具调用对了"远远不够

这篇评测最重要的概念区分,是把三个常被混为一谈的东西拆开:

层次它只能证明它证明不了
Agent 说"我会去做"有一个意图是否真的尝试了动作
记录了一次合法的 tool call发起过一次尝试后端服务是否接受并执行
拿到一个"已入队"的任务 ID服务受理了待办动作是否真正完成到终态
后端终态记录 + 副作用校验这件事确实按授权边界做成了——(这才是可交付的证据)

前三行恰恰是绝大多数企业现在给 Agent 打"成功"标签所依据的东西——而 ThinkingBox 的数据说明,靠这些代理指标判定的"成功",有高达 67.24% 其实是错的。它在失败样本里进一步拆出三类状态级缺陷(三者有重叠):77.61% 是字段值写错,43.30% 产生了非预期的额外副作用,25.36% 缺失了本应发生的必要副作用。换句话说,Agent 最常见的翻车方式不是崩溃报错,而是"表面圆满、内核出错"。

这个发现并不孤立。一篇被 ICML 2026 接收的研究(Rabanser 等,《Towards a Science of AI Agent Reliability》)用另一套方法——在两个 Agent 基准上、用覆盖一致性/鲁棒性/可预测性/安全性的 12 个指标考察 15 个模型——得出了方向一致的结论:近期模型能力的提升,只转化成了很小的可靠性改善。也就是说,"模型更强了"并不自动等于"Agent 更可信了",这两件事之间隔着一道尚未被填平的工程鸿沟。(注:两项研究对象、口径不同,此处仅作方向印证,百分比不可相加或取平均。)

三、一次成功不算数:pass@1、pass@20 与"20 次全对"

ThinkingBox 方法论里最值得企业吸收的,是它对"可靠性"的定义方式。一个能正确处理一次退款、却在接下来四次里处理不当的 Agent,根本不是一个能用的退款 Agent。所以他们对每个任务都从完全相同的干净后端独立重跑 20 次,并同时报告三个含义不同的指标:

  • pass@1:所有单次尝试里成功的比例——回答"它平时表现如何?"
  • pass@20:20 次尝试里至少成功过一次的任务占比——回答"它到底有没有能力做到?(广度)"
  • 观测到的 20/20:20 次全部通过的任务的字面计数——回答"它是不是每次都对?(这才是可上线的可靠性)"

这三个数的落差,就是"演示"和"生产"之间的距离。一个 demo 只需证明 pass@20 高("你看它能做到!");而一个要接管真实业务的 Agent,你需要的是 20/20——同一件事每次都稳。很多在企业里被当作"验证成功"推进采购的 PoC,其实只测到了 pass@1 或 pass@20,压根没做过 20 次重复的一致性检验。这也解释了为什么不少"演示惊艳"的 Agent 一上生产就频频返工:不是能力不够,是不一致。

四、可靠是要花钱的:一致性的成本前沿

如果"每次都稳"只是多跑几次的技术问题,那还好办。但 ThinkingBox 给出了一个更硬的经济学结论——他们把它称作"一致性的代价(cost of consistency)"。

核心发现是:随着你对可靠性的要求从 pass@1 抬到 20/20,所需的算力/token 开销会显著上升,而且不同模型处在完全不同的"成本—可靠性"帕累托前沿上。有些模型能靠堆更多推理预算把一致性买回来,有些则无论花多少都到不了稳定的 20/20。这意味着企业不能笼统地问"哪个模型最强",而要针对自己的具体工作流问一个三维问题:在这个任务上,达到我要的一致性水平,每个成功案例的真实成本是多少?

这对成本核算是一记警钟。我们此前分析过单位 token 价格暴跌(ID 1654)带来的乐观预期,但那篇文章自己也泼过一盆冷水:"基准上的降价 ≠ 你的账单下降".ThinkingBox 从可靠性角度补上了另一盆:如果你为了把同一个业务动作做稳而必须反复重试、或被迫选更贵但更一致的路径,那么"名义单价"的下降会被"达成可靠的总成本"部分抵消。真正的 ROI 测算,分母不该是"一次调用的价格",而应是"一个可信赖的成功结果的价格".

五、失败签名:把"翻车"变成可诊断的工程问题

这套基准还有一个对企业极其实用的产出——"失败签名(failure signatures)":它不只告诉你 Agent 失败了,还把失败归类成可复现的模式。结合前述三类状态缺陷(错值 / 多余副作用 / 缺失副作用),以及博客里那个"丢回复"的分布式经典陷阱——连接超时让 Agent 以为"什么都没发生",但实际上邮件早已发出,此时贸然重试反而会把一件成功的事变成两件——这些签名等于给运维提供了一张"看图诊断"的对照表。

它的实操价值在于,把"这个 Agent 不太行"这种模糊判断,细化成几种性质完全不同、解法也完全不同的故障:

  • 权限越界型:结果可能对,但动作超出了授权(比如把报告抄送给了未批准的收件人)。这类问题再强的模型、再好的提示词都修不了,因为它本质是访问控制缺失,不是智力不足。
  • 不确定型:动作可能成功了,只是回执丢了。正确做法是先拿原始请求 ID 去后端查当前状态,而不是盲目重试——否则"恰好一次"会变成"重复多次".
  • 终态偏差型:像第一节那个案例,流程全对、只差一个状态字段。这类要靠"以数据库终态为准"的可执行校验来兜底,而不是靠读 Agent 的自然语言总结。

Anthropic 早在 2026 年 1 月的《Demystifying Evals for AI Agents》里就强调过同一条原则:要把 Agent 的对话轨迹和环境里的真实结果分开评估——一段对话里"订好了"的房间,不等于数据库里真存在的那张订单。ThinkingBox 可以看作把这条原则做成了一把可量产、可复现的尺子。

六、给正在上 Agent 的企业:换掉你的验收标准

把这篇评测翻译成行动清单,最直接的四条:

其一,别再拿"演示很顺"当上线依据。要求供应商(或逼自己内部)对目标任务从干净初始态重复跑够次数,看的是 20/20 一致性,而不是单次惊艳。一次成功证明的是"能不能",你要的是"总不总".

其二,把验收点从"输出/工具调用"后移到"后端终态"。任何高利害动作(退款、下单、改数据、发邮件)都要有一条直接读数据库/系统的可执行校验,去核对字段值对不对、有没有多做或漏做副作用。Agent 的自我陈述永远不能是唯一裁判。

其三,给重要任务配一张"完成回执"。结构很简单:请求的目标结果 + 用到的产物版本 + 实际动作(消息ID/收件人/工单号) + 独立核验记录 + 仍未确认的限制项。让"办好了"这三个字背后始终挂着一份能被第三方独立复查的证据链。

其四,把权限边界当成不可协商的硬约束。记住那类"结果对但越权"的失败:验证能事后发现错误,却替代不了事前授权。收窄工具能碰的范围、对高危动作强制人工审批,比任何事后检测都更能防止一个误解升级成真事故。

FAQ

Q1:67% 失败都是"假成功",是不是意味着现在的 AI Agent 根本不能用?
A:不是"不能用",而是"不能用错了验收标准"。这个数字来自特定基准(507 个有状态业务工作流、12 个被测模型、离线沙箱),反映的是"若只看工具调用和最终文本、不去核对数据库终态,就会有多大比例的错误被漏掉",而不是"所有线上 Agent 有 67% 在骗人".它真正的警示是:主流的、基于对话观感的验收方式系统性高估了可靠性。结论不是回退,而是把校验下沉到后端状态、并把一致性纳入考核。

Q2:pass@1、pass@20、20/20 有什么区别,我该盯哪一个?
A:它们回答三个不同问题。pass@1 是"平均单次成功率",适合看日常大致表现;pass@20 是"20 次里至少成过一次",衡量的是能力广度、接近"能不能做到";20/20 是"每次都成",衡量的才是可上线的可靠性。选型演示阶段看 pass@20 尚可,但要让 Agent 真正接管业务,你必须盯 20/20——因为生产环境里没有"再试一次"的机会,客户不会给你第二次容错。

Q3:这套基准是微软发布的,会不会有立场偏向?
A:需要留意,但其核心方法论站得住脚。ThinkingBox 由微软与 Hugging Face 联合发布、可通过 OpenEnv 自行复现,这一点降低了"只许它一家说了算"的风险——你能自己跑、自己验。合理的谨慎在于:被测模型集合、任务分布、以及"成本—一致性前沿"的具体数值都由发布方设定,引用时把它当"一种严谨的测量方法和一组实证结果",而非"你家 Agent 的既定失败率".最有价值的其实是那句方法论口号本身:轨迹是声明、状态是证据、重复是信任测试——这与厂商立场无关,适用于任何 Agent。


参考来源:

  • Microsoft & Hugging Face, "The Agent Said It Was Done. The Database Disagreed."(ThinkingBox / ThinkingBox-Bench), 2026-10-04——507 个有状态业务工作流、每任务从干净后端独立重跑 20 次、以终局数据库状态与副作用作可执行判定;通用集消融覆盖 12 个 LLM、121,680 次有效试验、79,853 次未通过可执行检查,其中 67.24% 仍"干净终止+调用了改状态工具+无最终工具错误"(假成功),状态级缺陷重叠分布:错误字段值 77.61%、非预期额外副作用 43.30%、缺失必要副作用 25.36%;报告 pass@1/pass@20/观测 20/20 三指标;提出"一致性代价"的成本—可靠性帕累托前沿与"失败签名"分类
  • Let's Data Science, "Your AI Agent Says Done. How to Verify Its Results", 2026-10-04——综述性方法论:意图/尝试/受理/终态四层停止点、"完成回执"五要素、超时即不确定性问题(引 Amazon Builders' Library 幂等重试)、验证不可替代权限边界
  • Rabanser et al., "Towards a Science of AI Agent Reliability", 已被 ICML 2026 接收——在 2 个 Agent 基准上用覆盖一致性/鲁棒性/可预测性/安全性的 12 个指标评测 15 个模型,发现近期能力提升仅转化为很小的可靠性改善——与 ThinkingBox 不同方法不同对象,仅作方向印证
  • Anthropic, "Demystifying Evals for AI Agents", 2026-01——主张将 Agent 对话轨迹与环境真实结果分开评估,区分确定性/模型/人工三类评分器;另参 Anthropic "Trustworthy Agents in Practice"(外部内容含针对 Agent 的指令时应视为待核查材料而非授权)
  • 交叉印证(本站既有分析):单位能力价格暴跌但"基准降价≠账单下降"(ID 1654)、嵌入-生产缺口卡点是评估与治理(ID 1658)、98% 有政策却 47% 绕过治理(ID 1661)——不同机构口径,仅作方向对照,不可简单相加