QuoteBench: How Matched Scores Can Hide Command-Path Failures
AI编程智能体的评测分数可能掩盖了命令在被二次解析时就已经失效的事实
LLM编程智能体生成的Bash命令,常常要先被序列化、包裹,再被下游环节重新解析后才真正执行,而传统只看命令是否执行成功的评测分数,分不清失败是模型生成的问题还是下游二次解析造成的破坏。QuoteBench用56个任务把两者拆开:把同一条模型生成的回复分别在原始路径和额外加了一个故意不做转义处理的解析器的路径上重放,结果发现仅加这一层解析,成功率就在55.4到73.2个百分点之间下降;而事先告知模型这个边界的存在,能在八组配置中的六组里挽回30.4到60.7个百分点。以GPT-5.6-sol为例,常规匹配分数几乎没变(-3.6分),但背后其实是-64.3分的破坏和+60.7分的补偿相互抵消的结果。
他们做了什么
- 问题所在:智能体生成的命令常常要经过ssh远程执行、容器执行(docker exec sh -c)、或CI流水线等环节被重新包进一层双引号里解析,普通的匹配成功率无法区分这是模型生成错了,还是命令在下游被这层重新解析破坏了。
- 方法:作者构建了QuoteBench,包含来自14个真实事故案例总结出的14类操作、共56个一次性Bash任务,把模型生成命令的约定方式(生成契约)和命令实际执行的传输路径(执行传输)做交叉实验。他们把同一条已生成的回复分别放到原始路径和故意加了一个未转义解析器的嵌套路径上重放,并测试了一种提前告知模型存在该边界的契约。
- 结果:在最前沿模型上,原始路径执行的成功率已接近饱和(91.1%到100%),但只要多加这一层重新解析,成功率就会在八组配置中普遍下降55.4到73.2个百分点;而提前告知模型这个边界,能在其中六组配置里挽回30.4到60.7个百分点,另外两组则没有改善甚至略微变差。
- 关键发现:模型的表面匹配分数可能具有误导性。GPT-5.6-sol的匹配分数变化仅为-3.6分,看似几乎没受影响,但实际上是-64.3分的严重破坏和+60.7分的大幅补偿正好相互抵消。仅仅改变执行路径,就足以让26对可比较模型中至少一对的排名发生明确反转。
- 实践启示:正确的转义处理或改用临时脚本都能完全消除这个问题,但作者对六个真实公开智能体系统的调查发现,这层引号解析边界往往是在模型输出契约之外的下游环节处理的,单靠模型自身并不总能解决。
| Instruction | Create a file named out.txt whose content is exactly the text ⟨⟨back\slash and `date` here↩ ’single’ "double" $(pwd) 100%⟩⟩ followed by a single trailing newline. |
|---|---|
| Hazards | backslash, backtick, command substitution, multiline, mixed quotes |
| Naive command | echo "back\slash and `date` here …" > out.txt; the backticks execute date, $(pwd) expands locally, and the payload’s inner double quote terminates the string early |
| Final-state gate | exact bytes of out.txt, including one trailing newline, with no collateral files |
| One passing command | a single-quoted printf with an embedded-quote splice (the machine oracle). Any other correct encoding receives equal credit |

| Model | Best observed setting | Control | Hostile | All 56 (%) | Hostile LOFO range (%) |
|---|---|---|---|---|---|
| GPT-5.5 | xhigh | 14/14 | 42/42 | 100.0 | [100.0, 100.0] |
| Opus-5 | xhigh | 14/14 | 42/42 | 100.0 | [100.0, 100.0] |
| Fable-5 | max | 14/14 | 42/42 | 100.0 | [100.0, 100.0] |
| GPT-5.6-sol | high | 14/14 | 41/42 | 98.2 | [97.4, 100.0] |
| Opus-4.8 | max | 12/14 | 41/42 | 94.6 | [97.4, 100.0] |
| Gemini-3.1-Pro | low | 14/14 | 37/42 | 91.1 | [87.2, 89.7] |
| Sonnet-4.6 | high | 9/14 | 27/42 | 64.3 | [61.5, 69.2] |
| Gemini-3.5-Flash | medium | 10/14 | 26/42 | 64.3 | [59.0, 66.7] |
| Haiku-4.5 | medium | 8/14 | 13/42 | 37.5 | [28.2, 33.3] |
| Qwen3.5-27B | non-think | 8/14 | 9/42 | 30.4 | [15.4, 23.1] |
| Qwen3.5-4B | think | 5/14 | 7/42 | 21.4 | [10.3, 17.9] |
| Qwen3.5-9B | non-think | 5/14 | 5/42 | 17.9 | [5.1, 12.8] |
| Gemini-3.1-Flash-Lite | default | 6/14 | 2/42 | 14.3 | [2.6, 5.1] |
| Model | Attempts | Raw (%) | Native (%) | Δ (pp) |
|---|---|---|---|---|
| Opus-4.8 | 840 | 95.4 | 98.0 | +2.6 |
| Opus-5 | 840 | 98.2 | 97.4 | −0.8 |
| Fable-5 | 840 | 99.3 | 97.1 | −2.1 |
| Gemini-3.1-Pro | 504 | 98.8 | 95.0 | −3.8 |
| GPT-5.6-sol | 672 | 96.9 | 94.3 | −2.5 |
| Gemini-3.5-Flash | 672 | 95.7 | 85.7 | −10.0 |
| Model | RR | RN | NR | NN | Damage | Comp. | Matched gap |
|---|---|---|---|---|---|---|---|
| GPT-5.6-sol | 94.6 | 30.4 | 55.4 | 91.1 | −64.3 | +60.7 | −3.6 |
| GPT-5.5 | 100.0 | 28.6 | 50.0 | 89.3 | −71.4 | +60.7 | −10.7 |
| Opus-5 | 96.4 | 30.4 | 42.9 | 89.3 | −66.1 | +58.9 | −7.1 |
| Gemini-3.1-Pro | 98.2 | 25.0 | 33.9 | 80.4 | −73.2 | +55.4 | −17.9 |
| Gemini-3.5-Flash | 96.4 | 28.6 | 67.9 | 58.9 | −67.9 | +30.4 | −37.5 |
| Opus-4.8 | 91.1 | 26.8 | 62.5 | 57.1 | −64.3 | +30.4 | −33.9 |
| Qwen3.5-27B | 85.7 | 30.4 | 83.9 | 30.4 | −55.4 | 0.0 | −55.4 |
| Gemini-3.1-Flash-Lite | 78.6 | 19.6 | 80.4 | 14.3 | −58.9 | −5.4 | −64.3 |

| Model | RR | RN | NR | NN | Damage | Comp. | Interaction | Matched gap |
|---|---|---|---|---|---|---|---|---|
| GPT-5.6-sol | 92.9 | 19.0 | 50.0 | 97.6 | −73.8 | +78.6 | +121.4 | +4.8 |
| Opus-4.8 | 92.9 | 16.7 | 59.5 | 42.9 | −76.2 | +26.2 | +59.5 | −50.0 |
| Model | Raw | Nested wrapper | Temporary script | Script gain (pp) |
|---|---|---|---|---|
| GPT-5.6-sol | 41/42 | 8/42 | 41/42 | +78.6 |
| Opus-4.8 | 40/42 | 7/42 | 40/42 | +78.6 |
| Qwen3.5-27B | 30/42 | 9/42 | 30/42 | +50.0 |
| Mechanism group | Representative failures | QuoteBench families |
|---|---|---|
| Literal quote and expansion | Apostrophes, double quotes, dollars, backticks, multiline payloads | write-file, JSON writing, Git commit, environment passing, heredoc writing |
| Word splitting and path semantics | Spaces, globs, leading dashes, hostile filenames, argument boundaries | argv passing, hostile filenames, find/glob, bulk rename |
| Embedded-language escaping | Regex versus literal matching, sed replacement, AWK string processing | grep count, sed replace, field lookup, JSON writing |
| Second parser or remote-like expansion | Local expansion before a second shell, argument joining, heredoc transport | SSH-like nested execution, SSH-like heredoc |
| Command-boundary representation | Command string, shell stdin, temporary file, argv, provider tool schema | raw/nested crossover, native-tool study, script bypass, typed pilot |
| System | Contract | Source anchor | Observed boundary |
|---|---|---|---|
| Codex | native | core/src/shell.rs:20--30, commit fa1d4c4 | command string becomes shell -c/-lc R |
| SWE-agent | raw | agents.py:936--967 and swe_env.py:197--222, commit 3ea751c | agent action enters a persistent Bash session |
| LangChain | native | shell_tool.py:217--232,491--515, commit b3a6d9a | structured command: string is written to shell stdin |
| Terminal-Bench | raw | tmux_session.py:26--33,75--173, commit d28711d | command/key strings enter an interactive shell through tmux |
| OpenHands | native | acp-command.ts:11--45,65--147, commit 850bd64 | human-readable command is tokenized to argv, and spawn has no shell |
| AutoGen | native | _docker_code_executor.py:327--363, commit 027ecf0 | generated code is written to a temporary file and invoked by argv |
| Configuration | Raw | ssh | ssh damage | Nested damage |
|---|---|---|---|---|
| GPT-5.6-sol | 94.6 | 30.4 | −64.3 | −64.3 |
| GPT-5.5 | 100.0 | 28.6 | −71.4 | −71.4 |
| Opus-5 | 96.4 | 30.4 | −66.1 | −66.1 |
| Gemini-3.1-Pro | 98.2 | 26.8 | −71.4 | −73.2 |
| Gemini-3.5-Flash | 96.4 | 28.6 | −67.9 | −67.9 |
| Opus-4.8 | 91.1 | 26.8 | −64.3 | −64.3 |
| Qwen3.5-27B | 85.7 | 30.4 | −55.4 | −55.4 |
| Gemini-3.1-Flash-Lite | 78.6 | 19.6 | −58.9 | −58.9 |
| Campaign | Generations | Design | Feeds |
|---|---|---|---|
| Study A same-window sweep | 8 configs × 56 × 2 contracts | one randomized window, effort unset | Tables 4, 15 |
| Study A ladder sweep | 44 rungs, 11 configs | per-provider windows | Tables 2, 12 |
| Study A rung crossover | 30 rungs, 7 configs, 26 crossover pts | replay both transports | Table 14, Fig. 3 |
| Public three-draw repeat | 8 configs × 56 × 2 × 2 draws | same design as the sweep | Appendix E.1.6 |
| Study B native tool | 8,736 generations, 17,472 replays | observational, both userlands | Tables 3, 17, 18 |
| Private-v2 crossover | 2 models × 42 hostile payloads | one serving window | Table 5 |
| Private-v1 replay | 3 models × 42 tasks | earlier generations; script bypass | Table 6 |
| BSD-live legacy | 6 configurations | BSD-elicited, GNU-replayed | Table 16 |
| Real-ssh grounding | 8 configs × 56 | ssh localhost replay | Table 9 |
| Advice arm | 8 configs × 56 × 2 | same-window paired advice contrast | Table 19 |
| Grammar crossover | 8 configs × 56 × 2 disclosed | replay-only wrapper 2×2 | Table 20 |
| Real-ssh full crossover | 6 configs × 56 × 2 | disclosed replies on real ssh | Table 21 |
| JSON boundary | 6 configs × 56 | serializer replay | Table 22 |
| Model | Unset (%) | Nearest rung | Distance to lowest rung |
|---|---|---|---|
| GPT-5.6-sol | 91.1 | low | 0.0 |
| GPT-5.5 | 89.3 | high | −5.4 |
| Opus-5 | 89.3 | medium | +28.6 |
| Gemini-3.1-Pro | 80.4 | none within the ladder | −10.7 |
| Gemini-3.5-Flash | 58.9 | low | +1.8 |
| Opus-4.8 | 57.1 | xhigh | +17.9 |
| Gemini-3.1-Flash-Lite | 14.3 | all four rungs tie | 0.0 |
| Model | Settings (in order) | Success (%) | Mean output tokens |
|---|---|---|---|
| GPT-5.6-sol | low / medium / high / xhigh | 91.1 / 92.9 / 98.2 / 98.2 | 362 / 565 / 773 / 1,073 |
| GPT-5.5 | low / medium / high / xhigh | 94.6 / 92.9 / 91.1 / 100.0 | 507 / 655 / 1,164 / 2,757 |
| Opus-5 | low / medium / high / xhigh / max | 60.7 / 91.1 / 96.4 / 100.0 / 98.2 | 796 / 1,336 / 1,458 / 2,421 / 3,499 |
| Fable-5 | low / medium / high / xhigh / max | 71.4 / 75.0 / 96.4 / 92.9 / 100.0 | 332 / 569 / 843 / 1,212 / 2,396 |
| Opus-4.8 | low / medium / high / xhigh / max | 39.3 / 48.2 / 50.0 / 62.5 / 94.6 | 835 / 1,291 / 1,706 / 3,481 / 6,960 |
| Gemini-3.1-Pro | low / medium / high | 91.1 / 91.1 / 91.1 | 5,267 / 5,753 / 6,308 |
| Sonnet-4.6 | low / medium / high / xhigh | 23.2 / 28.6 / 64.3 / 62.5 | 28 / 1,411 / 4,337 / 4,539 |
| Gemini-3.5-Flash | minimal / low / medium / high | 57.1 / 58.9 / 64.3 / 62.5 | 3,851 / 3,108 / 3,081 / 3,389 |
| Haiku-4.5 | low / medium / high / xhigh | 32.1 / 37.5 / 32.1 / 26.8 | 5,432 / 4,717 / 4,708 / 4,783 |
| Qwen3.5-27B | non-thinking / thinking | 28.6 / 28.6 | 20 / 7,489 |
| Gemini-3.1-Flash-Lite | minimal / low / medium / high | 14.3 / 14.3 / 14.3 / 14.3 | 20 / 20 / 20 / 20 |
| Display name | Model identifier | Effort settings queried | Decoding parameters |
|---|---|---|---|
| GPT-5.6-sol | gpt-5.6-sol | low, medium, high, xhigh | max output tokens 16,000, temperature not sent |
| GPT-5.5 | gpt-5.5 | low, medium, high, xhigh | max output tokens 16,000, temperature not sent |
| Opus-5 | claude-opus-5 | low, medium, high, xhigh, max | provider defaults, no sampling or length control sent |
| Opus-4.8 | claude-opus-4-8 | low, medium, high, xhigh, max | provider defaults, no sampling or length control sent |
| Fable-5 | claude-fable-5 | low, medium, high, xhigh, max | provider defaults, no sampling or length control sent |
| Sonnet-4.6 | claude-sonnet-4-6 | low, medium, high, xhigh | provider defaults, no sampling or length control sent |
| Haiku-4.5 | claude-haiku-4-5 | low, medium, high, xhigh | provider defaults, no sampling or length control sent |
| Gemini-3.1-Pro | gemini-3.1-pro-preview | low, medium, high | temperature 0, max tokens 4,096 in the sweep, omitted in the ladder |
| Gemini-3.5-Flash | gemini-3.5-flash | minimal, low, medium, high | temperature 0, max tokens 4,096 in the sweep, omitted in the ladder |
| Gemini-3.1-Flash-Lite | gemini-3.1-flash-lite-preview | minimal, low, medium, high | temperature 0, max tokens 4,096 in the sweep, omitted in the ladder |
| Qwen3.5-27B | Qwen/Qwen3.5-27B | non-thinking, thinking | temperature 0, max tokens 4,096 non-thinking, omitted thinking |
| Qwen3.5-9B | Qwen/Qwen3.5-9B | non-thinking, thinking | temperature 0, max tokens 4,096 non-thinking, omitted thinking |
| Qwen3.5-4B | Qwen/Qwen3.5-4B | non-thinking, thinking | temperature 0, max tokens 4,096 non-thinking, omitted thinking |
| Configuration | Rung | RR | RN | NR | NN | Damage | Compensation | Matched gap |
|---|---|---|---|---|---|---|---|---|
| GPT-5.6-sol | low | 98.2 | 28.6 | 53.6 | 91.1 | −69.6 | +62.5 | −7.1 |
| GPT-5.6-sol | medium | 94.6 | 30.4 | 48.2 | 92.9 | −64.3 | +62.5 | −1.8∗ |
| GPT-5.6-sol | high | 98.2 | 32.1 | 48.2 | 98.2 | −66.1 | +66.1 | +0.0∗ |
| GPT-5.6-sol | xhigh | 98.2 | 30.4 | 51.8 | 98.2 | −67.9 | +67.9 | +0.0∗ |
| Opus-5 | low | 98.2 | 28.6 | 57.1 | 60.7 | −69.6 | +32.1 | −37.5 |
| Opus-5 | medium | 100.0 | 32.1 | 41.1 | 91.1 | −67.9 | +58.9 | −8.9 |
| Opus-5 | high | 96.4 | 30.4 | 42.9 | 96.4 | −66.1 | +66.1 | +0.0∗ |
| Opus-5 | xhigh | 98.2 | 32.1 | 42.9 | 100.0 | −66.1 | +67.9 | +1.8∗ |
| Opus-5 | max | 100.0 | 32.1 | 46.4 | 98.2 | −67.9 | +66.1 | −1.8∗ |
| Gemini-3.1-Pro | low | 100.0 | 25.0 | 32.1 | 91.1 | −75.0 | +66.1 | −8.9 |
| Gemini-3.1-Pro | medium | 98.2 | 26.8 | 41.1 | 91.1 | −71.4 | +64.3 | −7.1 |
| Gemini-3.1-Pro | high | 98.2 | 26.8 | 35.7 | 91.1 | −71.4 | +64.3 | −7.1 |
| Fable-5 | low | 100.0 | 30.4 | 48.2 | 71.4 | −69.6 | +41.1 | −28.6 |
| Fable-5 | medium | 100.0 | 30.4 | 48.2 | 75.0 | −69.6 | +44.6 | −25.0 |
| Fable-5 | high | 98.2 | 32.1 | 42.9 | 96.4 | −66.1 | +64.3 | −1.8∗ |
| Fable-5 | xhigh | 100.0 | 33.9 | 46.4 | 92.9 | −66.1 | +58.9 | −7.1 |
| Fable-5 | max | 100.0 | 30.4 | 35.7 | 100.0 | −69.6 | +69.6 | +0.0∗ |
| Gemini-3.5-Flash | minimal | 96.4 | 23.2 | 75.0 | 57.1 | −73.2 | +33.9 | −39.3 |
| Gemini-3.5-Flash | low | 92.9 | 25.0 | 67.9 | 58.9 | −67.9 | +33.9 | −33.9 |
| Gemini-3.5-Flash | medium | 96.4 | 23.2 | 76.8 | 64.3 | −73.2 | +41.1 | −32.1 |
| Gemini-3.5-Flash | high | 96.4 | 23.2 | 71.4 | 62.5 | −73.2 | +39.3 | −33.9 |
| Opus-4.8 | low | 87.5 | 28.6 | 69.6 | 39.3 | −58.9 | +10.7 | −48.2 |
| Opus-4.8 | medium | 92.9 | 28.6 | 67.9 | 48.2 | −64.3 | +19.6 | −44.6 |
| Opus-4.8 | high | 96.4 | 33.9 | 64.3 | 50.0 | −62.5 | +16.1 | −46.4 |
| Opus-4.8 | xhigh | 98.2 | 32.1 | 60.7 | 62.5 | −66.1 | +30.4 | −35.7 |
| Opus-4.8 | max | 98.2 | 30.4 | 44.6 | 94.6 | −67.9 | +64.3 | −3.6∗ |
| Gemini-3.1-Flash-Lite | minimal | 78.6 | 19.6 | 80.4 | 14.3 | −58.9 | −5.4 | −64.3 |
| Gemini-3.1-Flash-Lite | low | 78.6 | 19.6 | 80.4 | 14.3 | −58.9 | −5.4 | −64.3 |
| Gemini-3.1-Flash-Lite | medium | 78.6 | 19.6 | 80.4 | 14.3 | −58.9 | −5.4 | −64.3 |
| Gemini-3.1-Flash-Lite | high | 78.6 | 19.6 | 80.4 | 14.3 | −58.9 | −5.4 | −64.3 |
| Fixed-reply transport | Contract-conditioned compensation | |||||
|---|---|---|---|---|---|---|
| Model | Effect [95% CI] | Enum. p | Holm p | Effect [95% CI] | Enum. p | Holm p |
| GPT-5.6-sol | −64.3 [−80.4,−46.4] | .000244 | .001465 | +60.7 [+46.4,+75.0] | .000244 | .001953 |
| GPT-5.5 | −71.4 [−85.7,−55.4] | .000244 | .001465 | +60.7 [+44.6,+75.0] | .000244 | .001953 |
| Opus-5 | −66.1 [−82.1,−50.0] | .000244 | .001465 | +58.9 [+41.1,+75.0] | .000488 | .002930 |
| Gemini-3.1-Pro | −73.2 [−87.5,−58.9] | .000122 | .000977 | +55.4 [+33.9,+73.2] | .001221 | .006104 |
| Gemini-3.5-Flash | −67.9 [−82.1,−51.8] | .000244 | .001465 | +30.4 [+12.5,+48.2] | .013672 | .041016 |
| Opus-4.8 | −64.3 [−80.4,−46.4] | .000244 | .001465 | +30.4 [+14.3,+48.2] | .003906 | .015625 |
| Qwen3.5-27B | −55.4 [−69.6,−41.1] | .000244 | .001465 | 0.0 [0.0,0.0] | 1.000000 | 1.000000 |
| Gemini-3.1-Flash-Lite | −58.9 [−71.4,−48.2] | .000122 | .000977 | −5.4 [−10.7,0.0] | .250000 | .500000 |
| Model | Raw BSD→GNU | Nested BSD→GNU | Transfers better to |
|---|---|---|---|
| Fable-5 | →91.1 | →87.5 | BSD |
| Qwen3.5-27B (non-thinking) | →87.5 | →32.1 | GNU |
| Qwen3.5-27B (thinking) | →82.1 | →50.0 | GNU |
| Gemini-3.1-Pro | →100.0 | →96.4 | GNU |
| Gemini-3.5-Flash | →96.4 | →67.9 | BSD |
| Opus-4.8 | →87.5 | →73.8 | BSD (raw); tie (nested) |
| BSD live | GNU replay | |||||
|---|---|---|---|---|---|---|
| Model | Δ | LOFO | PF/FP | Δ | LOFO | PF/FP |
| Opus-4.8 | +3.10 | [+2.18,+3.46] | 5/31 | +2.62 | [+1.67,+2.95] | 11/33 |
| Opus-5 | −0.36 | [−0.51,0.00] | 12/9 | −0.83 | [−1.03,−0.51] | 16/9 |
| Fable-5 | +0.95 | [0.00,+1.15] | 3/11 | −2.14 | [−2.44,−0.64] | 22/4 |
| GPT-5.6-sol | −1.19 | [−1.92,−0.48] | 25/17 | −2.53 | [−3.37,−0.64] | 26/9 |
| Gemini-3.1-Pro | +1.98 | [−0.64,+3.21] | 8/18 | −3.77 | [−4.91,−0.64] | 23/4 |
| Gemini-3.5-Flash | −4.02 | [−4.33,−3.04] | 37/10 | −9.97 | [−10.74,−6.89] | 77/10 |
| Userland | Contract | Pass | Adherence | Syntax | Nonzero | Exit-0 wrong |
|---|---|---|---|---|---|---|
| BSD | raw | 4230 | 0 | 31 | 59 | 48 |
| BSD | native | 4236 | 20 | 9 | 41 | 62 |
| GNU | raw | 4252 | 0 | 39 | 36 | 41 |
| GNU | native | 4146 | 20 | 22 | 128 | 52 |
| Configuration | Advice-free | With advice | Δ (pp) |
|---|---|---|---|
| GPT-5.6-sol | 54 | 49 | −8.9 |
| GPT-5.5 | 49 | 53 | +7.1 |
| Opus-5 | 52 | 54 | +3.6 |
| Sonnet-4.6 | 32 | 46 | +25.0 |
| Haiku-4.5 | 25 | 32 | +12.5 |
| Opus-4.8 | 30 | 34 | +7.1 |
| Qwen3.5-27B | 17 | 18 | +1.8 |
| Gemini-3.1-Flash-Lite | 7 | 8 | +1.8 |
| Double disclosed | Single disclosed | Diag−anti | |||
|---|---|---|---|---|---|
| Configuration | on double | on single | on single | on double | (pp) |
| GPT-5.6-sol | 54 | 7 | 53 | 10 | +80.4 |
| GPT-5.5 | 49 | 8 | 54 | 8 | +77.7 |
| Opus-5 | 52 | 8 | 45 | 16 | +65.2 |
| Sonnet-4.6 | 32 | 11 | 23 | 16 | +25.0 |
| Opus-4.8 | 30 | 11 | 23 | 18 | +21.4 |
| Haiku-4.5 | 25 | 13 | 20 | 11 | +18.8 |
| Qwen3.5-27B | 17 | 11 | 11 | 17 | +0.0 |
| Gemini-3.1-Flash-Lite | 7 | 19 | 9 | 19 | −19.6 |
| Configuration | RR | RN | NR | NN | ssh comp. | Nested comp. |
|---|---|---|---|---|---|---|
| GPT-5.6-sol | 53 | 17 | 31 | 51 | +60.7 | +60.7 |
| GPT-5.5 | 56 | 16 | 28 | 50 | +60.7 | +60.7 |
| Opus-5 | 54 | 17 | 24 | 50 | +58.9 | +58.9 |
| Opus-4.8 | 51 | 15 | 35 | 32 | +30.4 | +30.4 |
| Qwen3.5-27B | 48 | 17 | 47 | 17 | +0.0 | +0.0 |
| Gemini-3.1-Flash-Lite | 44 | 11 | 45 | 10 | −1.8 | −5.4 |
| Configuration | Raw | Correct | Naive | Naive damage |
|---|---|---|---|---|
| GPT-5.6-sol | 53 | 53 | 21 | −57.1 |
| GPT-5.5 | 56 | 56 | 19 | −66.1 |
| Opus-5 | 54 | 54 | 22 | −57.1 |
| Opus-4.8 | 51 | 51 | 18 | −58.9 |
| Qwen3.5-27B | 48 | 48 | 19 | −51.8 |
| Gemini-3.1-Flash-Lite | 44 | 44 | 8 | −64.3 |
为什么重要
在实际部署中,智能体经常通过ssh、容器或CI流水线发送命令,这正是本文所研究的二次解析边界会出现的地方,因此忽略这一点的排行榜可能无法反映模型部署后的真实表现。任何评估或上线会下达命令的编程智能体的人,都应该关注一个分数背后所依赖的执行路径和生成契约,而不只是分数本身。
本文术语
- 匹配分数(matched score) · 直接执行模型生成命令后得到的常规成功率,没有拆分失败究竟来自哪个环节
- 生成契约(generation contract) · 告诉模型应该以什么格式或前提生成命令的约定
- 执行传输(execution transport) · 生成的命令在真正到达shell执行之前所经过的路径,例如直接执行或被重新包裹后执行
- 嵌套传输(nested transport) · 人为加入的一种测试条件,给命令再套一层双引号解析,模拟ssh、容器或CI包装器对命令的二次解析
- 最终状态验证(final-state validation) · 只根据执行后文件、参数或仓库状态是否与预期完全一致来打分,不关心命令是如何达到该状态的
论文原文摘要(英文)
LLM coding agents issue Bash commands through interfaces that may serialize, wrap, and reparse model output. Matched execution scores alone cannot distinguish command-generation errors from failures introduced after generation. QuoteBench measures this boundary with exact final-state validation on 56 one-shot tasks from 14 incident-derived families, crossing the generation contract with the execution transport around one deliberately unescaped added parser. Escaping at the interpolation point reproduces each replayed reply's raw-path outcome, so any recovery under a disclosed boundary must come from the model changing its generation. Across eight same-window configurations, replaying the same reply through the added parser lowers success by 55.4 to 73.2 percentage points; disclosure recovers 30.4 to 60.7 points for six configurations, and zero or slightly negative for the other two. Raw generation is nearly saturated at the frontier; boundary adaptation is what still separates models. GPT-5.6-sol's matched gap of -3.6 points hides -64.3 points of damage and +60.7 points of compensation. The deployment configuration reorders models: one reversal among 26 comparable pairs is unambiguous and four more sit on single-task margins. Evaluations of command-issuing agents should report the model configuration, generation contract, execution path, operating point, and final-state validator rather than treat a matched score as an intrinsic model property.
在 arXiv 阅读最新论文
- Specification-delta-driven data governance: an empirical study of the {\guillemotleft}spec-delta{\guillemotright} as the unit of change in lakehouse data platforms把数据平台的变更当作可审阅的'规格增量'来管理,而不是靠代码差异——一篇实验设计论文
- Forking Fast: Efficiently Estimating Uncertainty Dynamics in Text Generation不用对每一步都重采样几百次,靠一个统计平滑模型就能便宜地找到大模型推理中答案分叉的关键点
- FlashPrefill V2: Block-Sparse Prefill Attention for Long-Context LLM Serving把稀疏注意力从论文原型变成能真正上线服务的加速方案
- Stopping and Routing LLM Judge Panels一套决定该叫多少个AI评委、何时停止叫更多评委的方法
- EXIMO: VLM Guided Exploration of VLA Policies不用人工遥控演示,让会说话的AI来教机械臂做新家务
- A knowledge-guided agentic framework for mitigating patient-context ambiguity in health queries让AI在回答模糊的健康问题前先反问关键信息
- Robust Incomplete Multimodal Sentiment Analysis via Iterative Proxy Correction文本信息缺失或损坏时,这个AI不靠一次性猜测,而是反复修正猜测结果,从而更准确地判断情绪
- Reliable Financial Named Entity Recognition under Domain ShiftAI在正式文件里学到的自信,一到推特上就变得不可信
METAL LAB 最新报道
图片来源: Shangao Li et al., arXiv:2608.13547, CC BY 4.0