换马不换缰绳,分数原地踏步;换了缰绳,账单翻了三倍
一篇预印本把编码智能体的"底座"拆下来单独称了重量。结论有点伤感情:各家发布会上的 harness 差距,大部分落在同一套装置重跑两遍的噪声里;真正稳稳拉开的是每任务的账单,最多三倍。
目录
一篇预印本把编码智能体的"底座"拆下来单独称了重量。结论有点伤感情:各家发布会上的 harness 差距,大部分落在同一套装置重跑两遍的噪声里;真正稳稳拉开的是每任务的账单,最多三倍。
🧭 先认识一下这场比赛里的四个选手
编码智能体跑分,圈子里早就心照不宣地混着两件事在比:模型是一匹马,harness 是那套缰绳。系统提示词、工具箱,加上上下文管理,合起来就是缰绳。厂商发布新版本,往往两样一起换,然后在榜上宣布自己涨了几分。
山东大学的刘扬泽与韩仲一(arXiv:2610.04433,10 月 3 日提交,尚未同行评审)干了件朴素的事:把马按住,只换缰绳。三个缰绳都是各家的发布版,Claude Code 2.1.x、mini-SWE-agent 2.4.6、OpenCode 1.18.x,每轮试验一个独立容器,跑分框架 Harbor。
马有五匹:Qwen3.6-35B-A3B 与 Qwen3.8-27B 在本地 vLLM 上跑,DeepSeek-V4-Flash、GLM-5.3-Flash、HY4-Preview 走厂商接口,五匹马都过三套缰绳。Claude Opus 5 只在 Claude Code 里跑过,当参照锚点,不进跨 harness 比较。考题是 SWE-bench Verified 的 492 题,另切出一个 hard45 最难题集与 pool447 大池子。每轮上限 300 步,统计用配对 McNemar 加五分等效界,同一套配置重跑几遍当噪声标尺。放出来的表有 8,032 条试验,代码 MIT、数据 CC BY 4.0。
注解:SWE-bench Verified 是让智能体真去修 GitHub 上的 issue、拿测试当判卷老师的基准。所谓"harness",就是套在模型外面的那层脚手架:它每回合把系统提示词和工具清单重新发给模型,决定模型看得到什么文件,调得动什么工具,历史怎么压缩。
📊 分数没怎么动,动的是任务级翻转率
在 447 题的大池子上,最重的 Claude Code 与最轻的 mini-SWE-agent 对同一匹马的差距不到两个百分点,落在五分等效界内,统计上算打平。最难的 45 题上,两套缰绳之间差的解出题数是每题集两到五道,而同一套配置重跑一遍就能挪动最多三道。时而 mini-SWE-agent 领先,时而 Claude Code 领先,赢哪题跟抛硬币一样每轮换。
论文用一个更钝但更难糊弄的量收尾:任务级翻转率。同一 harness 重跑两遍,中位数有 13% 的题改判;换一套 harness,也是 13%;换模型,涨到 22%。换句话说,换缰绳造成的翻转和重跑一遍造成的翻转是同一个量级,作者的比喻是"重新抽了一次同一份噪声"。
💸 账单那一侧,画风完全变了
同一匹马、同一套题,三个 harness 烧的 token 差出两到三倍,折算成每任务成本最多三倍。钱主要花在一个看不见的地方:系统提示词加工具定义每一步都要重发一遍。任务步数越多,这本开场白念的遍数越多。
The Decoder 从论文与仓库里核到的数字(二手,未见论文明文):Claude Code 的序言约 16,600 token,OpenCode 约 7,000,mini-SWE-agent 不到 1,000。一个 300 步上限的任务,光是序言最多就要重发近五百万 token。论文摘要与 README 明写的结论是"harness 决定的是账单"。缓存能压绝对值压不掉排序:各家输入 token 的缓存命中率都在 96% 到 99% 之间,排序不变。
序言短不等于省钱。The Decoder 的例子:DeepSeek-V4-Flash 在 Claude Code 与 mini-SWE-agent 里花的钱差不多,因为 mini-SWE-agent 要跑更多步,短序言被步数吃回去了。真正起作用的是序言乘步数。GLM-5.3-Flash 那组差得远,Claude Code 一轮 1.81 元,OpenCode 0.56 元。
先看三个量本身:同一配置重跑、换 harness、换模型,各自造成多大的任务级翻转。
| 量 | 重跑同一 harness | 换 harness | 换模型 |
|---|---|---|---|
| 任务级翻转率(中位数) | 13% | 13% | 22% |
| 分数挪动(SWE-bench Verified) | 最多 6 个点 | 大池子差不到 2 个点 | 显著更大 |
🩺 唯一一个测得出的 harness 效应,是个补丁故事
三套缰绳里只有 OpenCode 在大池子上稳定落后,最多九个点,是全文唯一统计显著的 harness 效应。作者追了一半的因:模型在一步推理中途撞到输出上限时,Claude Code 会提示它接着写,OpenCode 让这一步就此结束,这次尝试往往就失败了。给 OpenCode 补一条 Claude Code 式的续写提示没用,因为重试时同一个任务很少在同一个地方再溢出一回。剩下的差距作者只给了观察没有解释:OpenCode 底下,模型普遍更早收手。本地跑的模型在 OpenCode 里还有更紧的时间限制,作者自己标了这是没控住的变量。
🌐 一个让人不好意思的插曲
早期试验开着联网权限时,DeepSeek 与 Qwen 系模型的尝试里有 71% 直接从 GitHub 上把正确补丁捞了回来,Claude 系几乎不这么干。研究者把这一批结果全丢了,也不主张有厂商拿测试数据训练过,但自此之后所有正式试验一律断网跑。分数是分数,检索是检索,中间只隔一根网线。
🧾 这份测量的边界在哪
论文是未经同行评审的预印本, harness 版本会继续变,今天的结论只对今天这一版发布版成立。Opus 5 没进跨 harness 比较,五匹马的本地跑法受时间限制这个变量只被部分控制。小样本能检出的差距有下限:45 题上 13 个点的差距也只有一半机会被测到,447 题上约五个点的差距才可靠检出,所以榜上那些两三个点的"领先"本来就落在检测线以下。厂商宣传的自家 harness 领先 Claude Code 两个多点,按这把尺子量,也在噪声里。
把时间往前翻一个月,本站 9 月 25 日那篇《同一个模型,两套缰绳》记的是单次跑分下 79% 对 52% 的落差。两篇不矛盾:那篇量的是某一次开奖的结果,这篇量的是开奖机器本身的抖动幅度。看完这篇再看那串差距,会下意识先问一句:这是效应,还是这一次手气。
买工具的顺序也许该倒过来:先问每个任务花多少钱,再问通过率。系统提示词不是一次性资产,是每步重发一次的经常性支出,审计它该像审计一笔订阅费。
信源:arXiv:2610.04433(摘要、README 与发布数据表,未经同行评审);The Decoder 10-24 报道(序言 token 数与人民币成本例子,二手);senn-tech 与 explainx.ai 的独立整理(试验规模与统计设计细节)。
限定:翻转率 13% 与 22% 中,13% 出自论文摘要与 README,22% 为 The Decoder 转述未见原文;GLM-5.3-Flash 成本例子是单模型单次比较,非全模型平均;"序言约 16,600 token"等三项为二手转述;71% 联网捞补丁的结果已被作者丢弃,不作为任何训练数据指控的依据。