研究:花哨的 harness 让编码智能体更贵但没更好
Fancy harnesses make coding agents more expensive but not better, study finds
一项针对编码智能体 harness 的研究发现,Claude Code、OpenCode 和 mini-SWE-agent 在 SWE-bench Verified 上的通过率差异大多落在重复运行的噪声范围内,而 token 消耗可达最精简方案的两到三倍。
研究用重复运行量化噪声,说明编码智能体的 harness 差异多在测量误差内,成本差异却可达三倍。
此前的比较测的其实是噪声
作者指出,先前的研究报告称不同测试框架之间存在超过 20 分的差距,但这些数字几乎都来自单次运行。同一配置的纯重复运行在 SWE-bench Verified 上就已经有最多 6 分的波动。例如,Zhipu AI 宣称自家测试框架领先 Claude Code 2.4 分,而这一差距完全落在该噪声范围内。测试框架接入基准测试的方式也往往各不相同,使比较更加不可靠。
Liu 和 Han 用三个测试框架的发布版本跑了五个模型:Claude Code、OpenCode 和 mini-SWE-agent。mini-SWE-agent 只给模型一个 Bash 工具,不做上下文管理。Claude Code 和 OpenCode 则提供专门的文件与搜索工具、较长的系统提示词以及自动历史压缩。
所用模型为 Qwen3.6、Qwen3.8、Deepseek-V4-Flash、GLM-5.3-Flash 和 HY4-Preview。Claude Opus 5 仅作为参照在 Claude Code 中运行。测试使用了 SWE-bench Verified 中最难的 45 个任务,外加另外 447 个任务的池子。若干配置各运行两次以测量噪声。
所有运行均离线进行。在早期可联网的测试中,Deepseek 和 Qwen 模型的尝试有 71% 直接从 GitHub 拉取了正确修复,而非自行解题。Claude 模型几乎从不这样做。研究者舍弃了这些结果,也不声称任何厂商在测试数据上训练过,但这一模式足够明显,因此他们切断了其余所有运行的网络访问。
更换测试框架带来的结果变化与重复运行相当
在 447 个任务的较大池子上,最重与最轻的测试框架 Claude Code 和 mini-SWE-agent,对两个受测模型而言差距均不到 2 分。在 5 分区间内,二者在统计上等价。

研究者原本预期测试框架的影响在 45 个最难任务上最大。结果却是,不同测试框架在每个模型上相差 2 到 5 个解出的任务,而同一配置的简单重复运行就能让计数变化最多 3 个。有时 mini-SWE-agent 领先,有时 Claude Code 领先。
翻转率也说明了同样的问题。两次重复运行之间,中位结果在 13% 的任务上发生变化。两个不同测试框架之间,同样是 13%。更换模型则把这一比例推到 22%。某个测试框架赢下哪些任务,每次运行都会变,如同抛硬币。作者写道,测试框架差距的表现就像“同一噪声的一次重新抽样”。

这些小样本也限制了任何比较能检测出的差异。在 45 个任务下,即便 13 分的差距也只有一半概率能显现。在 447 个任务下,约 5 分的差距才能被可靠检测。Zhipu 声称的 2.4 分优势低于这两个阈值,许多其他宣传的改进也是如此。
所有测试框架表现相同,唯独 OpenCode 落后
唯一可测量的 harness 效应是 OpenCode 的稳定劣势。在大型任务池上,它落后于另外两者最多九个百分点。这一差距中约有一半可追溯到输出上限。当模型在推理过程中于某一步中途超出该上限时,Claude Code 会提示它继续。OpenCode 则让该步骤就此结束,于是这次尝试通常失败。
给 OpenCode 加上 Claude Code 风格的续写提示并没有帮助,因为同一个任务在重试时很少触发同样的溢出。至于差距的其余部分,作者们没有解释,只有一个观察:在 OpenCode 下,模型会早得多地停止工作。在本地运行的模型上,OpenCode 的时间限制也比 Claude Code 严格得多,作者们将其标记为一个未受控变量。
mini-SWE-agent 因为缺乏上下文管理而撞上上下文窗口,主要出现在其他 harness 也会失败的任务上。OpenCode 的搜索工具在首次使用时会尝试下载一个二进制文件,离线时就会出错。

系统提示与工具描述决定了账单
在相同模型、相同任务和相同价目表下,单个任务的成本因 harness 不同最高可相差三倍。工具输出几乎解释不了这一差距。三种 harness 每次调用返回的文本量相近。
真正的差异来自系统提示和工具描述。它们会在每一步重新发送,Claude Code 约为 16,600 个 token,OpenCode 约为 7,000 个,而 mini-SWE-agent 不到 1,000 个。根据研究人员的逆向工程,Claude Code 还会将模型的推理输出保留在对话历史中。

在首次调用之后,所有 harness 的上下文增长速度相近。系统提示的大小设定了基线成本,而步数会将其成倍放大。哪个因素占主导取决于模型:使用 GLM-5.3-Flash 时,Claude Code 的成本几乎是 mini-SWE-agent 的两倍。使用 Deepseek-V4-Flash 时,mini-SWE-agent 需要多出如此多的步骤,以至于两者最终持平。缓存 token 的更低价格会缩小差距,但不会改变排名。

没有主场优势,围绕思考的开放问题
Deepseek 自家的 harness 搭配自家模型时,得分并不比其他 harness 更好,但成本最高。即使研究人员从 Claude Code 中移除了工具,Claude Opus 5 仍给出完全相同的结果。一年前的版本以不到一半的成本解决了相近数量的任务,因为当时 Extended Thinking 并未默认开启。
思考是 harness 选择真正改变结果的唯一情形。在不开启思考时,使用 Qwen3.6 的 mini-SWE-agent 下降了十一个百分点,而 Claude Code 和 OpenCode 的波动在噪声范围内。HY4-Preview 在 Claude Code 中不开启思考时也下降了十一个百分点。一个 agent 对推理的依赖程度似乎与具体的模型-harness 组合有关。作者们承认他们的测试网格太小,无法解释原因。
这项研究主要依赖一个基准测试。在 Terminal-Bench 2.1 上进行的小规模交叉验证显示了相同的模式。闭源顶级模型 Opus 5 仅在 Claude Code 中运行。作者总结道,测试框架带来的是“更少的任务失败途径,以及一份账单,而非通过率”。他们建议在每次框架对比时,同时发布相同设置的复跑结果。这是判断测得的差异中有多少只是噪声的唯一方法。数据和分析脚本可在 GitHub 上获取。
在其他研究中,框架上的更多投入也很少能带来回报。在一项研究中,一个简单的 Markdown 文件胜过了面向 AI 编码代理的复杂技能系统。早前的一项研究已经表明,框架的选择可能使同一模型的成本几乎增至三倍。因此,框架设计受到了大量关注。Nvidia 最近通过更好的代理引导,将其编码代理的 token 成本削减了近一半。
来源:The Decoder · the-decoder.com