ThinkingBox 基准测试揭示了 AI 代理在 507 个业务工作流中的稳定性差距
TL;DR
ThinkingBox 现已在 Hugging Face 上提供,通过检查 AI 代理留下的最终数据库状态来评估其表现,揭示出大多数代理在单次运行中成功,但在 20 次尝试中无法重复正确结果,且 12 个 LLM 之间存在显著的成本-一致性权衡。
一次工具调用不等于结果
代理可以发出有效的工具调用,但仍会产生错误的数据库记录。
- 在对 12 个 LLM 进行的 121,680 次消融实验中,79,853 次尝试未通过可执行性检查。
- 67.24 % 的失败尝试干净终止,未报告工具错误,但仍改变了状态。
- 在失败的轨迹中,77.61 % 的字段值错误,43.30 % 产生了意外副作用,25.36 % 缺失了必需的效果。
"一条轨迹是一种声明。数据库状态是证据。重复是信任的测试。"
因此,该基准测试根据 终端后端状态 评分,而非表面对话或工具调用次数。
一次成功不代表可靠性
将每个任务运行 20 次,可揭示代理可信赖的频率。
报告了三个指标:
| 指标 | 衡量内容 | 回答的问题 |
|---|---|---|
| pass@1 | 所有尝试中成功的比例 | 模型通常表现如何? |
| pass@20 | 在 20 次尝试中至少成功一次的任务比例 | 它能否解决该任务? |
| Observed 20/20 | 在 全部 20 次尝试中均成功的任务数量 | 它是否始终正确? |
博客重点关注 Observed 20/20 —— 即每次重复都通过的任务的实际计数。
你能依赖你代理背后的模型吗?
广度(pass@20)和一致性(Observed 20/20)在不同模型间存在分歧。
- Kimi‑K3 至少一次成功解决 93.89 % 的任务(最广的广度),但仅实现 13.41 % 的 Observed 20/20。
- Claude Opus 5 至少一次成功解决的任务较少(79.09 %),但达到 47.53 % 的 Observed 20/20,为最高一致性。
- Claude Opus 5.5 提升了 pass@1(67.16 % vs 66.50 %),但 并未 增加始终正确的任务数量(仍为 241 个 Observed 20/20)。
"如果你选择一个用于操作真实记录的工作模型,pass@20 是你应该避免查看的列。"
一致性带来的成本
每次成功任务的成本 由 token 使用量按 OpenRouter 列表价格计算。
- GPT‑5.4:507 次尝试花费 $43.49 → $0.131 每次成功任务。
- GPT‑5.6 Sol:每次成功任务成本最低,为 $0.127。
- Claude Opus 5.5:每次成功任务成本为 $0.276,准确率更高。
帕累托成本前沿
三个模型位于前沿(没有其他模型在更便宜的同时更准确):
- GPT‑5.6 Sol – 每次成功成本最低。
- GPT‑5.4 – 每次成功多花 $0.004,获得适度的准确率提升。
- Claude Opus 5.5 – 每次成功花费 $0.276,进一步提升 1.8 % 的准确率。
每个可靠任务的成本(20 次运行的一致性)
| 模型 | 通过 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 |
| … | … | … | … |
单次正确答案的最便宜模型,并非始终正确答案的最便宜模型。
失败特征
四种诊断类别解释了大多数失败。
| 特征 | 失败占比 |
|---|---|
| 工具使用 | 79.9 % |
| 错误的状态更新 | 10.3 % |
| 不完整的用户解决 | 7.0 % |
| 无状态变更操作 | 2.9 % |
主要问题是工具处理错误,而非模型推理。代理经常在工具调用失败的流程阶段无法恢复,表明需要更好的重试和错误恢复逻辑。
工作原理
ThinkingBox 提供沙箱环境和基准数据集(ThinkingBox‑Bench)。
- 任务定义 – 初始后端状态、用户目标、可用的 MCP 工具、策略和可执行检查。
- 隔离的 MCP 会话 – 每次 20 次重复均从全新的数据库快照开始。
- 代理执行 – 模型与工具交互,更新状态,并生成最终响应。
- 副作用提取 – 记录实际的数据库变更。
- 确定性裁判 – 将提取的状态与所需最终状态进行比较;任何达到正确状态的轨迹均视为通过。
所有评估逻辑在评估者端运行;模型从未看到黄金状态或评分代码。
自行运行
ThinkingBox 已在 Hugging Face 上发布,支持完整的 OpenEnv 集成。
前提条件
- Linux/WSL,Python 3.11+,
uv,Docker。 - 克隆 OpenEnv、thinkingbox-data 的固定版本,并安装
thinkingboxCLI。
快速入门(摘录)
# 克隆并安装 OpenEnv + ThinkingBox 环境
git clone https://github.com/huggingface/OpenEnv && cd OpenEnv
uv sync --project envs/thinkingbox_env --frozen
# 克隆数据仓库 v1.0
git clone https://github.com/microsoft/thinkingbox-data && \
git -C thinkingbox-data checkout thinkingbox-bench-v1.0
# 安装 CLI
uv tool install "thinkingbox @ git+https://github.com/microsoft/thinkingbox"
然后按照博客描述,在三个独立终端中启动 Typesense、MCP 会话代理和 OpenEnv 服务器。完成就绪检查后,评估单个任务:
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 \
--repeat 1 --message-timeout 1800
CLI 返回二元通过/失败奖励,并记录任何系统错误以确保可复现性。
未来方向
该基准测试的主要贡献是 环境,它使可重复性和基于状态的评分易于采用。
对实践者的建议:
- 检查失败 – 查看实际的数据库变更,而不仅仅是最终对话。
- 使用 OpenEnv 用你自己的模型复现任务。
- 报告重复指标(例如 best-of-k 或 every-of-k),并明确说明聚合方法。
所有代码均为开源(沙箱为 MIT 许可,数据为 CDLA‑Permissive‑2.0 许可)。该基准测试仍为合成数据,但模拟了真实企业级代理模式。
资源
- ThinkingBox 环境:
https://huggingface.co/docs/openenv/environments/thinkingbox - ThinkingBox‑Bench 数据集:
https://huggingface.co/datasets/microsoft/ThinkingBox-Bench - 论文:
arXiv:2608.19741 - GitHub 仓库:
microsoft/thinkingbox,microsoft/thinkingbox-data,microsoft/thinkingbox-training(RL 训练即将发布)