早期的比较是在测量噪声

据作者称,此前的研究报告了不同 harness 之间超过 20 个百分点的差距,但这些数字几乎总是来自单次运行。对相同设置进行纯粹的重复运行,在 SWE-bench Verified 上就已经有最多 6 个点的波动。智谱 AI例如,它宣传自家 harness 比 Claude Code 领先 2.4 个点,而这个差距完全落在上述噪声范围内。harness 接入基准测试的方式也往往各不相同,这使得比较更加不可靠。

Liu 和 Han用三个 harness 的发布版本跑了五个模型: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 个任务的池子。若干设置运行了两次以测量噪声。

所有运行都在离线状态下进行。在允许联网的早期测试中,71% 的 Deepseek 和 Qwen 模型尝试直接从 GitHub 拉取了正确的修复,而不是自己解决任务。Claude 模型几乎从不这样做。研究人员丢弃了这些结果,并且不声称任何厂商在测试数据上训练过,但这一模式足够明显,以至于他们切断了所有剩余运行的网络访问。

更换 harness 对结果的影响与重复运行差不多

在包含 447 个任务的更大池子上,Claude Code 和 mini-SWE-agent——最重和最轻的 harness——对两个被测模型而言差距都不到 2 个点。在 5 个点的区间内,它们在统计上等价。

Two-part chart. Left: scatter plot of input tokens per task vs. pass rate on 45 hard SWE-bench tasks for six models across Claude Code, mini-SWE-agent, and OpenCode. Right: pairwise pass-rate differences between harnesses with 95 percent confidence intervals.
对每个模型而言,这三个 harness 消耗的 token 是最精简选项的两到三倍,但通过率仍处于测量不确定度之内。只有 OpenCode 在大任务池上的劣势具有统计显著性。| 图片:Liu & Han

研究人员原本预计,测试框架的影响会在 45 个最难的任务上体现得最明显。但实际情况是,不同测试框架在每个模型上只相差两到五个已解决任务,而同一设置简单重跑一次,计数就会变动最多三个。有时 mini-SWE-agent 领先,有时则是 Claude Code 领先。

翻转率也说明了同样的问题。在两次重跑之间,任务结果的中位数在 13% 的任务上发生变化。在两个不同的测试框架之间,同样是 13%。而更换模型则会把这一比例推到 22%。某个测试框架在哪些任务上胜出,每次运行都会变化,就像抛硬币一样。作者写道,测试框架之间的差距表现得就像“对同一噪声的一次重新抽样”。

Dot plot comparing the share of tasks whose outcome flips across three conditions: same-harness rerun, harness swap, and model swap. Medians land at 13, 13, and 22 percent.
更换测试框架导致任务级结果翻转的频率,与简单重跑一次差不多,而更换模型则会造成大得多的变化。| 图片:Liu & Han

这些较小的样本量也限制了任何比较能够检测出的差异。在 45 个任务下,即便是 13 个百分点的差距也只有一半的概率能被发现。在 447 个任务下,约五个百分点的差距才能被可靠地检测到。智谱声称的 2.4 个百分点优势低于这两个阈值,许多其他宣传的改进也同样如此。

所有测试框架表现相同,唯独 OpenCode 落后

唯一可测量的测试框架效应是 OpenCode 的稳定劣势。在大型任务池上,它比其他两个落后最多九个百分点。这一差距中约有一半可追溯到输出上限。当模型在推理过程中于某一步中途超出该上限时,Claude Code 会提示它继续。OpenCode 则让该步骤就此结束,而这次尝试通常会失败。

给 OpenCode 加上 Claude Code 风格的续写提示并没有帮助,因为同一个任务在重试时很少触发同样的溢出。至于差距的其余部分,作者没有解释,只有一个观察:在 OpenCode 下,模型会早得多地停止工作。在本地运行的模型上,OpenCode 的时间限制也比 Claude Code 严格得多,作者将其标记为一个未受控制的变量。

mini-SWE-agent 会因为缺乏上下文管理而撞上上下文窗口,主要出现在其他测试框架也失败的任务上。OpenCode 的搜索工具会在首次使用时尝试下载一个二进制文件,离线时就会出错。

Stacked bar chart showing for each model and harness the share of passed tasks, regular failures, output-token cutoffs, context overflows, step/time limits, and infrastructure failures, split by hard45 and pool447.
在 Qwen3.8 下,部分 OpenCode 运行触达了输出上限,而没有上下文管理的 mini-SWE-agent 更常撞上上下文窗口。| 图片:Liu & Han

系统提示词和工具描述决定了账单

在相同模型、相同任务和相同价目表下,单个任务的成本最高可因 harness 不同而相差三倍。工具输出几乎无法解释这一差距。三种 harness 每次调用返回的文本量相近。

真正的差异来自系统提示词和工具描述。它们会在每一步被重新发送,Claude Code 约为 16,600 个 token,OpenCode 约为 7,000 个,mini-SWE-agent 则不到 1,000 个。根据研究人员的逆向分析,Claude Code 还会将模型的推理输出保留在对话历史中。

Two line charts showing input tokens per model call across agent steps for GLM-5.3-Flash and DeepSeek-V4-Flash, with median lines for Claude Code, mini-SWE-agent, and OpenCode.
Claude Code 的起点高得多,因为其系统提示词加工具定义约为 16,600 个 token。此后,三种 harness 的上下文增长速度相近。| 图片:Liu & Han

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

Four bar charts showing tokens and costs per trial in yuan for Claude Code, mini-SWE-agent, and OpenCode on DeepSeek-V4-Flash and GLM-5.3-Flash.
在 GLM-5.3-Flash 下,Claude Code 中单次试验的成本为 1.81 元,而 OpenCode 为 0.56 元。在 DeepSeek-V4-Flash 下,Claude Code 和 mini-SWE-agent 的最终价格大致相同。| 图片:Liu & Han

没有主场优势,围绕思考的开放问题

Deepseek 自家的 harness 搭配自家模型时,得分并不比其他 harness 更好,但成本最高。即使研究人员从 Claude Code 中移除了工具,Claude Opus 5 仍给出了完全相同的结果。一年前的版本以不到一半的成本解决了相近数量的任务,因为当时 Extended Thinking 并未默认开启。

思考是唯一一个 harness 选择真正改变了结果的场景。在不启用思考的情况下,使用 Qwen3.6 的 mini-SWE-agent 下降了 11 分,而 Claude Code 和 OpenCode 的波动在噪声范围内。HY4-Preview 在 Claude Code 中不启用思考时也下降了 11 分。一个智能体对推理的依赖程度似乎与具体的模型-harness 组合有关。作者承认他们的测试网格太小,无法解释原因。

该研究主要依赖一个基准测试。在 Terminal-Bench 2.1 上的小规模交叉验证显示了相同的模式。闭源顶级模型 Opus 5 只在 Claude Code 中运行。作者总结道,harness 换来的是“更少的丢任务方式,以及一张账单,而非通过率”。他们建议在每次 harness 对比时同时发布相同设置的复跑结果。这是判断测得的差异中有多少只是噪声的唯一方法。数据和分析脚本可在GitHub上获取。

在其他研究中,在 harness 上投入更多精力也很少能带来回报。在一项研究中,一个简单的 Markdown 文件击败了面向 AI 编程智能体的复杂技能系统。早前的一项研究已经表明,框架的选择可以使同一模型的成本几乎增至三倍。因此,harness 设计受到了大量关注。Nvidia最近通过更好的智能体引导,将其编程智能体的 token 成本削减了近一半。