为什么重要
真实用户给 Agent 下的指令,几乎从来不是完整规格。「帮我把这些日志整理一下」「处理一下那个文档」——目标、上下文、约束里总有一块是含糊的或者干脆没说。此前绝大多数 Agent 基准默认提供完整规格,于是测出来的分数回答的是「在理想输入下有多强」,而不是「在真实输入下会怎样」。
AM-Bench 把这个默认假设变成了显式变量。它对 48 个任务各写一份完整规格,再对三个信息域各生成两个变体:
| 信息域 | 完整规格 | 模糊(Ambiguous) | 缺失(Missing) |
|---|---|---|---|
| 目标 G | 最终状态、交付物、完成条件 | 目标宽泛或给出多个候选结果,可有多种合理解释 | 最终目标 / 交付物 / 完成条件完全没说 |
| 上下文 C | 实体、输入、环境、操作信息 | 实体 / 来源 / 执行线索的范围有多种解释 | 关键实体、来源或操作信息缺失 |
| 约束 K | 允许的动作、访问与审批规则、保留要求 | 限制或条件性许可的适用范围开放 | 相关限制与授权要求未声明 |
于是每个任务有 7 个条件:Full + GA / GM / CA / CM / KA / KM。作者再把这个 7 × 48 的网格与 5 个模型 × 4 个脚手架全交叉,每个格子跑 3 次。
构建方式
- 任务来源:Terminal-Bench 2.0 与 Harness-Bench,改造为 48 个任务,分 8 个执行类别——数据处理与报告(8)、文档与媒体(7)、沟通与排期(8)、文件与仓库(8)、服务部署(4)、软件与环境修复(7)、运维审计(3)、计算与长时执行(3)。
- 模型:DS-Flash(deepseek-v4-flash-0731)、DS-Pro(deepseek-v4-pro-0813)、GPT-Luna(gpt-5.6-luna)、GPT-Sol(gpt-5.6-sol)、GLM-5.3。DeepSeek 与 GPT 各成一对,支持同族比较。
- 脚手架:Codex 0.144.4、NanoBot 0.2.2、NullClaw 2026.5.29、OpenClaw 2026.7.1。
- 运行规则:300 秒超时;澄清请求不会得到任何回复——这是关键设计,它测的是「在没人回答的情况下 Agent 会怎么办」,而不是「问了就能解决」。
- 聚合:每个模型 / 脚手架的均值对配对的一方等权重平均,跨配置总体均值对全部 20 个配置等权重平均。
关键发现
一、三个信息域各有各的失效方式,混在一起看会看错
| 条件 | Completion | Compliance | Success | Token 均值(k) |
|---|---|---|---|---|
| Full | 77.0 | 98.7 | 76.5 | 106.9 |
| Goal–Ambiguous | 25.9 | 94.3 | 25.0 | 126.7 |
| Goal–Missing | 13.8 | 92.5 | 12.5 | 119.5 |
| Context–Ambiguous | 30.4 | 91.7 | 27.8 | 181.1 |
| Context–Missing | 21.0 | 91.9 | 19.4 | 166.0 |
| Constraint–Ambiguous | 72.3 | 46.6 | 33.7 | 125.9 |
| Constraint–Missing | 77.5 | 4.7 | 0.0 | 138.1 |
三条独立的因果链:
- 目标缺口 → 做不完:Completion 掉到 13.8–25.9,但 Compliance 仍高达 92.5–94.3。Agent 没违规,它只是不知道该做成什么样。
- 上下文缺口 → 白烧钱:Token 从 106.9k 涨到 166–181k(Context–Ambiguous 的 p90 达 400.9k),Success 反而没改善。钱花在反复定位和比对候选输入上。
- 约束缺口 → 做完了但违规:Completion 反而升到 77.5(比 Full 还高),Compliance 崩到 4.7,Success 归零。这是最危险的一种:任务看起来完成了。
二、约束缺失会触发具体的安全行为,不只是「分数变低」
每 100 次运行的违规计数:
| 条件 | 调用受限工具 | 敏感数据外泄 | 缺少最终动作 | 输出校验失败 |
|---|---|---|---|---|
| Full | 0.7 | 0.7 | 3.6 | 3.8 |
| Goal–Missing | 6.7 | 6.4 | 71.7 | 68.2 |
| Context–Ambiguous | 8.1 | 7.8 | 23.9 | 25.0 |
| Constraint–Ambiguous | 57.0 | 54.6 | 5.1 | 5.3 |
| Constraint–Missing | 99.3 | 95.0 | 2.9 | 2.3 |
约束没说清楚时,几乎每一次运行都会去调用本该受限的工具,几乎每一次都会把敏感数据带出去,涨幅是 80–140 倍量级。而目标缺失时,七成运行连最终交付动作都没有。
三、缺失比模糊更致命,且在三个域上一致
48 个任务中,Success 下降的中位数:Constraint–Missing −86.7pp(48/48 个任务全部下降)、Goal–Missing −69.2pp(47/48)、Context–Missing −57.5pp(48/48)、Goal–Ambiguous −53.3pp(48/48)。同域内 Missing 的一致性下降幅度都大于 Ambiguous。
超时也同向:Full 113 次超时,Context–Ambiguous 273 次。但排除超时后 Success 也只是从 30.8% 修到 35.1%——超时不是主因,是真的不会做。
四、信息完整时的优势不会延续到欠规格场景
这是本卡对「怎么读排行榜」最直接的警告:
- GPT-Sol 与 GPT-Luna 在 Full 条件下 Success 领先,到了六种欠规格条件的均值上掉到第 4 和第 5(17.0 / 13.6);
- DS-Pro 在 Full 条件下排名垫底,在 Goal–Missing 条件下升到第一;
- DS-Flash 与 Codex 领跑 Mean 和 pass@3,GLM-5.3 与 NullClaw 领跑 pass^3。Codex 比 NullClaw 多 8.0pp 的「至少成功一次」,却少 2.4pp 的「三次全中」——它的优势里有相当一部分是时灵时不灵的成功。
失败构成也完全不同:以 Success 24.8 居首的 DS-Flash,失败里 50.7% 是「做完了但不合规」,只有 0.3% 是没做完;GPT-Luna 的「不合规完成」高达 64.1%;DS-Pro 则有 17.5% 是压根没做完。
五、澄清能救回做不完的活,救不回违规
把「观察到澄清请求」的运行与其配对的 Full 运行对照,Success 的估计增益是:
| 条件 | 澄清后 Success 增益 |
|---|---|
| Goal–Missing | +24.1pp |
| Context–Missing | +9.6pp |
| Goal–Ambiguous | +6.6pp |
| Context–Ambiguous | +6.6pp |
| Constraint–Missing | +3.2pp |
| Constraint–Ambiguous | +3.1pp |
目标与上下文缺口的收益是约束缺口的 2–8 倍。原因在上一节:约束缺失时 Completion 本来就高(77.5),Agent 已经「做完了」,它不会觉得有什么需要问。问不问得出口,取决于它知不知道自己不知道。
作者给三方当事人各自的建议也据此分叉:用户应先写清执行边界、再写期望结果、最后才补上下文;模型开发者不能只报一个池化分数,必须按目标 / 上下文 / 约束分列;脚手架开发者要在依赖动作发生之前暴露不确定性,而且一个可执行下一步本身不能当作该动作被允许过的证据。
如何读这张榜
- topResults 只有 5 行,因为论文只评了 5 个模型 × 4 个脚手架。这不是榜单拥挤度,是实验设计里「全交叉」的代价。
- Full 与欠规格两列的名次会反转,这是本基准的核心结论而不是噪声。选型时先问自己的真实输入长什么样,再决定看哪一列。
- 模型与脚手架不可分离:同一模型换脚手架的均值差可达 6pp(Codex 22.2 vs NanoBot 16.2),且方向随模型变化。任何「某模型在某基准上 X%」的说法在本基准上都必须写成「某模型 × 某脚手架」。
- 300 秒超时是一个硬边界,长时任务(CE 类的模型训练、集群监控)在 Full 条件下也有 3.9% 超时率,会系统性压低整体分数。
- 澄清请求得不到回复是刻意设计。真实场景里问了通常有人答,所以本卡的绝对分数应视为下界。
关联基准
- ToolEmu / UnderSpecBench:前身,但只覆盖部分模型 × 脚手架组合,且澄清用 rubric 或请求计数而非完整参考对照
- ClarifyBench / NoisyToolBench / AppWorld-UL:交互式澄清方向,不区分三个信息域
- Terminal-Bench 2.0 与 Harness-Bench:本卡任务的直接来源
- CompMat-Bench / KaliBench:同样把「提示量」当显式变量的同期基准