智能体说"搞定了",数据库不同意:ThinkingBox 用终态给 Agent 打分

一个退款工单,9 次工具调用全部合规,数据库终态却是错的。微软 ThinkingBox 用"终态 + 重复 20 次"重新定义智能体评测:121,680 次有效试验中,近八成失败的模型其实"看起来像成功"。本文完整编译:pass@1 / pass@20 / 20/20 的区别、一致性成本,以及失败特征。

分享
智能体说"搞定了",数据库不同意:ThinkingBox 用终态给 Agent 打分

一句话结论:判断一个智能体是否真的完成了工作,不要看它说了什么、也不要只数它调用了多少工具——要看它留下的数据库终态。而且,"能做对一次"和"每次都能做对"是两回事。微软与 Hugging Face 联合发布的 ThinkingBox,在隔离沙箱里用可执行检查(executable checks)核对终态与副作用,并把每个任务重复 20 次,专门测量这个差距。

本文完整编译自 Microsoft × Hugging Face 联合博客《The Agent Said It Was Done. The Database Disagreed.》(2026-10-03),并做中文整理。


一、一个"看起来完成"的工单

一位顾客来信:她 745 美元的厨房电器,在纳什维尔配送中心卡在快递"异常"状态,比预计送达日期晚了 15 天。

AI 智能体做了看似仔细的工作——9 次工具调用:拉订单、查物流、查客户档案、两次检索退款政策、确认没有已有工单、创建工单、记录时间线,并且正确读懂政策:她的账户分层确实不符合延迟配送补偿条件。

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

两件事错了。 第一,承运商的异常状态仍然打开,而要求的工作流终态本应是 "挂起(hold)"——等待异常解决。第二,顾客实际上从未得到一个真正的答复。

一个只看"工具调用形态"的评估器会看到 9 次格式规范的调用;一个只检查"是否写入了数据库"的评估器也会通过。但数据库不同意。 那个可执行检查只查一个字段——工单状态是 solved(已解决),而要求的终态是 hold(挂起)——就这么失败了。

ThinkingBox 在隔离的 MCP 工具会话中运行智能体,然后对其留下的终态与副作用打分

图 1:ThinkingBox 在隔离的 MCP 工具会话中运行智能体,然后对后端终态与副作用打分(来自 ThinkingBox 论文 arXiv:2608.19741)。

二、工具调用不是结果:67% 的失败"看着像成功"

文章的核心观点:最终回答和格式合法的工具调用都只是代理指标(proxies)。智能体可以听起来完全正确,却写入了错误的值、改错了记录,或者多出一个副作用。只有它留下的记录才能给出答案。

差距有多大?在一组覆盖 12 个 LLM、121,680 次有效试验的公共消融实验里:

  • 79,853 次尝试没有通过可执行检查;
  • 这些失败中,67.24% 仍然"干净收尾"——调用了改变状态的工具、且没有报告任何最终工具错误;
  • 可执行检查在这些尝试中查出:77.61% 存在字段值错误、43.30% 存在非预期的额外副作用、25.36% 缺少必需的副作用(这些发现之间有重叠)。
轨迹是一种主张(claim)。数据库状态才是证据(evidence)。重复运行才是信任测试(trust test)。

三、一次成功不等于可靠:pass@1、pass@20 与 observed 20/20

一个能把退款处理对一次、接下来四次都搞错的智能体,不是一个能用的退款智能体。所以 ThinkingBox 让每个任务独立运行 20 次,每次都从完全一致的干净后端开始,并报告三个不同的数字:

指标 它测量什么 它回答的问题
pass@1 所有尝试中成功的比例 它通常表现如何?
pass@20 20 次里至少成功一次的任务比例 它有没有可能做到?(广度)
Observed 20/20 20 次全部通过的实测任务数 它是否总是正确?

文章强调:这里的 20/20 是字面计数——在 507 个任务里真正 20 次全过的数量,没有估计量、没有平滑。

四、先看熟悉的榜单:pass@1

下表是各模型按领域拆分的 pass@1(单次尝试得分估计),这也是大多数榜单会发布的数字:

模型 零售 (98) 车险 (100) 旅行 (104) 数字银行 (104) 咨询 (101) 总体 (507)
闭源模型
Claude Opus 5.5 80.97 68.40 54.28 71.25 61.58 67.16
Claude Opus 5 80.71 65.80 49.95 70.62 66.19 66.50
GPT-5.4 76.33 62.65 68.12 65.34 54.60 65.36
GPT-5.6 Sol 67.65 65.30 60.34 59.09 57.52 61.91
Claude Sonnet 4.6 72.35 54.40 58.94 56.39 54.31 59.19
GPT-6 Astra 71.73 46.55 55.87 60.87 56.83 58.31
GPT-5.2 70.20 22.40 53.70 51.15 34.06 46.28
Claude Opus 4.6 68.62 8.30 21.11 35.67 27.82 32.09
o3-pro 37.70 2.95 17.31 24.28 14.60 19.31
Grok-4.3 43.93 2.60 15.14 1.78 9.55 14.38
开源权重模型
Kimi-K3 82.24 50.80 61.83 41.35 51.63 57.37
Qwen3.8-27B 64.03 47.85 53.41 47.88 45.69 51.70
DeepSeek-V4-Pro 68.21 29.65 43.13 44.86 31.04 43.26
Kimi-K2.6 53.72 24.50 39.52 33.65 37.33 37.66
GLM-5.1 58.67 25.70 35.43 13.27 34.06 33.19
Qwen3.6-27B 43.11 29.00 46.39 27.84 18.37 32.94
Qwen3.5-9B 19.90 0.70 4.71 1.15 2.33 5.65
Mistral-Large-3 11.28 1.30 8.99 1.15 0.74 4.66

Claude Opus 5.5 以 67.16% 总体领先;开源权重里 Kimi-K3 最强,57.37%,与 GPT-6 Astra 只差不到一个点。领域差异同样重要:Claude Opus 4.6 在零售上拿到 68.62%,在车险上只有 8.30%。

五、关键问题:剩多少分能活下来?

把每个模型的 507 个任务跑满 20 次,看单次得分里有多少能活下来:

每个模型的单次得分有多少能扛过 20 次重复

图 2:每个模型的单次得分能扛住多少次重复。

  • 只有三个模型保住了大部分 pass@1:GPT-6 Astra 保留 78%,Claude Opus 5.5 与 Claude Opus 5 各保留 71%;
  • 另一端,GLM-5.1、Kimi-K2.6、DeepSeek-V4-Pro 都只剩约 8%。

"能做一次"和"每次都能"的差距,就是整篇文章的故事。

广度与一致性会分叉

广度与一致性互相分离

图 3:广度与一致性拉开差距(18 个模型展示 12 个,低于 33% pass@1 的 6 个省略)。

Kimi-K3 是覆盖面最广的模型:至少在 20 次里解出一次的任务占 93.89%(476/507),只有 31 个任务完全解决不了;零售工作流上以 82.24% 的 pass@1 领先所有闭源模型。

但它也是一致性最差的之一:507 个任务里只有 68 个(13.41%) 在 20 次尝试中全部成功。

Claude Opus 5 恰好相反:解出的任务更少(至少一次 79.09%,106 个任务完全失败),但47.53% 的任务在每一次尝试中都完成。

新模型也不能自动修复这个问题:Claude Opus 5.5 的平均分比 Opus 5 高(67.16% vs 66.50%),至少解出一次的任务也更多,但20 次全过的任务数完全一样:241 个。半个点的头部精度,没有换来任何额外的可靠性。

  • Kimi-K3 比 Opus 5 多解出 75 个"至少一次"的任务;
  • Opus 5 比 Kimi-K3 多稳定完成 173 个任务。

如果你的工作要触碰真实记录,pass@20 是错的列。 这就是文章给出的选型建议。

六、一致性要多少钱:两种成本口径

能力对比通常止步于分数。对真正要部署的人来说,相关问题是:一个"成功的工作单元"要花多少钱。

口径一:每次成功尝试的成本(cost per successful task attempt)

成本 = 507 次尝试(每任务一次)的估算花费 ÷ (507 × pass@1)

例:GPT-5.4 跑 507 次尝试花 $43.49,pass@1 = 65.36%,则 $43.49 ÷ (507 × 0.6536) = $0.131/次成功。

Pareto 成本前沿:如果一个模型在"不更贵且至少一样准"上没有对手,它就在前沿上。只有三个模型入选:

  • GPT-5.6 Sol:每次成功成本最低,$0.127;
  • GPT-5.4:多花 $0.004,pass@1 提高 3.45 个百分点;
  • Claude Opus 5.5:每次成功 $0.276,再添 1.80 个百分点。

清晰的案例:Claude Opus 5($0.475、66.50%)比 Opus 5.5($0.276、67.16%)又贵又差,直接被支配。

每次成功尝试的成本 vs. pass@1

图 4:每个成功尝试的成本对 pass@1,带圈的是 Pareto 成本前沿模型。

口径二:每个"可靠任务"的成本(cost per dependable task)

成本 = 20 轮完整 507 次的估算花费 ÷ 20 次全过的任务数

例:GPT-6 Astra 一轮 $86.03 × 20 = $1,720.60,231 个任务 20/20 全过,则 $1,720.60 ÷ 231 = $7.45/个可靠任务。

模型 20/20 任务数 20 轮估算成本 单个可靠任务成本
GPT-5.4 128 (25.25%) $869.80 $6.80
GPT-6 Astra 231 (45.56%) $1,720.60 $7.45
Claude Opus 5.5 241 (47.53%) $1,880.77 $7.80
GPT-5.6 Sol 82 (16.17%) $800.00 $9.76
Claude Opus 5 241 (47.53%) $3,206.00 $13.30
Claude Sonnet 4.6 102 (20.12%) $1,587.60 $15.56
GPT-5.2 44 (8.68%) $878.00 $19.95
Kimi-K3 68 (13.41%) $1,406.40 $20.68
Qwen3.8-27B 38 (7.50%) $925.80 $24.36

结论:三者互不支配——每多一个"可靠任务"都要多花钱。GPT-5.6 Sol 的单次成功最便宜($0.127),但要得到一个可靠任务却要 $9.76。"用最便宜的方式拿到一个正确答案"和"拿到一个可靠的答案"完全是两码事。

七、失败特征:八成失败出在"工具处理",不是推理

每个失败轨迹会被分配一个确定性的诊断签名。最可操作的结论:大约五分之四的失败是工具处理问题,而不是推理问题。

失败签名 占失败比例
工具使用(Tool usage) 79.9%
状态更新错误 10.3%
用户请求未真正解决 7.0%
没有执行改变状态的操作 2.9%

这是各模型占比的未加权平均,是"可观察标签",不是唯一的因果解释。

实际模式很简单:智能体通常能走到"尝试执行工作流"这一步,然后栽在工具错误、前置条件失败或空查询上——在成为模型问题之前,它首先是一个重试与错误恢复问题。

给部署者的建议:

  • 把 20/20 率当作设计输入,而不是判决书。生产里可以拿到的同一个信号是:在提交之前检查终态,而不是模型对终态的总结;
  • 对工具错误与系统错误分类,让重试只针对可恢复的那些;
  • 把工具面缩到工作流真正需要的范围;
  • 对不能廉价回滚的变更,强制人工批准。

八、ThinkingBox 怎么工作

ThinkingBox 是智能体沙箱,ThinkingBox-Bench 是评估用的数据集基准。每个任务定义:起始后端状态、用户目标、可用的 MCP 工具、领域政策、以及针对终态的可执行检查。一个模拟用户持有私有上下文(订单号、偏好、出生日期),只在被问到时才提供。

  • 每次尝试都获得隔离的 MCP 会话,状态全新初始化;同一任务两次尝试绝不共享数据库行或工具缓存——这是 20 次重复对比有意义的前提;
  • 结束时,副作用提取器推导出"实际发生了什么变化",由确定性判官与要求的终态对比:只要产生正确结果,任何轨迹都接受;错误、缺失或多余的副作用都拒绝;
  • 对没有干净数据库值的需求(例如"智能体有没有说明这不保证?"),用一条窄口径的二元评分问题处理语义。507 个任务里 477 个只看状态评分,30 个额外加回答评分;
  • 信任边界:模型只能看到任务、对话和工具 schema;黄金状态、断言、评分内部逻辑与凭据都留在评测方。
沙箱循环:隔离工具会话、终态数据库、副作用与可执行判官

图 5:沙箱循环(对应图 1 的 Panel A)——隔离工具会话、终态数据库、副作用、可执行判官。

九、自己跑一遍

ThinkingBox 已上 Hugging Face:harness 与数据集都可获取。每种任务走 OpenEnv 接口,每个完整 episode 返回二元通过/失败奖励。

环境要求:Linux 或 WSL、Python 3.11+、uv、Docker;还需要一个固定在指定 release 的 thinkingbox-data 检出,以及智能体、模拟用户、判官三类模型端点(留一个端点同时服务三个角色是最省事的起步方式)。

# 1. OpenEnv + ThinkingBox 环境
git clone https://github.com/huggingface/OpenEnv
cd OpenEnv
uv sync --project envs/thinkingbox_env --frozen
# 2. 可执行基准,固定 release
git clone https://github.com/microsoft/thinkingbox-data
git -C thinkingbox-data checkout thinkingbox-bench-v1.0
# 3. ThinkingBox CLI(提供 tb 命令)
uv tool install "thinkingbox @ git+https://github.com/microsoft/thinkingbox"
# 启动 Typesense 30.1
mkdir -p .typesense-data
docker run --rm -d --name thinkingbox-typesense \
  -p 8108:8108 \
  -v "$PWD/.typesense-data:/data" \
  typesense/typesense:30.1 \
  --data-dir /data --api-key=Fake --enable-cors
until curl -fsS http://127.0.0.1:8108/health; do sleep 1; done

# 启动 Session Proxy 与 MCP servers
cd OpenEnv
tb mcp-start --host 127.0.0.1 --port 7111 \
  --servers "$PWD/thinkingbox-data/servers/servers.yaml"
curl -fsS http://127.0.0.1:7111/health
# 启动 OpenEnv server(需要一个指定三个模型的 ThinkingBox YAML 配置)
OPENENV_TB_CONFIG="$PWD/thinkingbox.yaml" \
uv run --project envs/thinkingbox_env --frozen server

# 就绪检查(返回 503 表示数据/配置/代理检查未通过)
curl -sS http://127.0.0.1:8000/ready
# 给一个真实 episode 打分
echo "- sandbox_external_retail_group1.py:test_case_ST002_001" > one_task.yaml
uv run --project envs/thinkingbox_env thinkingbox-eval \
  one_task.yaml \
  --config "$PWD/thinkingbox.yaml" \
  --output results.jsonl \
  --errors-output errors.jsonl \
  --repeat 1 --message-timeout 1800

运行会被固定框架 commit、固定数据 release 和 bundle hash 约束,因此"标准结果"是可验证的,而不是口头声称的。

十、下一步:环境比榜单更有用

作者说,这项工作最有价值的部分不是那张 pass@1 榜单,而是这个环境。如果你正在评估会触碰真实记录的智能体:

  • 检查一次失败:找一个"干净收尾但仍然失败"的轨迹,看看数据库里到底改了什么——它会重塑你对自家评测的认知;
  • 用自己的模型复现一个任务:通过 OpenEnv 跑通;
  • 报告重复指标,并定义清楚:选一个你的场景能接受的 k,说明你报的是 best-of-k 还是 every-of-k,以及怎么算的。
免责声明:公开基准里的每个任务都是合成重建——工作流和政策模仿真实的智能体企业模式,顾客不是真人。ThinkingBox 代码为 MIT 许可,基准数据为 CDLA-Permissive-2.0,OpenEnv 环境为 BSD-3-Clause。

参考来源

  • Microsoft × Hugging Face:《The Agent Said It Was Done. The Database Disagreed.》(2026-10-03)https://huggingface.co/blog/microsoft/thinkingbox
  • 论文:https://arxiv.org/abs/2608.19741
  • 数据集:https://huggingface.co/datasets/microsoft/ThinkingBox-Bench
  • 框架:https://github.com/microsoft/thinkingbox

延伸阅读(本站)

本文由汇智网编译整理,转载请注明出处。

阅读更多