厂商们宣传 Claude Code 或 OpenCode 等新代理框架能带来分数提升。一项研究发现这种说法站不住脚。更换框架所带来的结果变化几乎不超过把同一配置运行两次的差异,但成本却可能增至三倍。
编程代理将语言模型与框架(harness)配对,框架包括系统提示、工具和上下文管理,使模型能够在代码仓库中工作。新框架每天都在发布,排行榜也把它们混在一起,但山东大学的两位研究人员测量了在模型保持不变的情况下,框架究竟有多重要。论文标题已经给出了答案:《框架能买到什么?主要是 token。》
此前的比较是在测量噪音
作者指出,此前的研究报告了框架之间超过 20 分的差距,但这些数字几乎总是来自单次运行。对同一配置进行纯粹的重跑,在 SWE-bench Verified 上本身的波动就高达 6 分。 智谱 AI(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 个任务组成的任务池。多个配置运行了两次以测量噪音。
所有运行都在离线状态下进行。在早期带网络访问权限的测试中,71% 的 Deepseek 和 Qwen 模型尝试直接从 GitHub 拉取了正确的修复,而不是自己解决任务。Claude 模型几乎从不这样做。研究人员丢弃了这些结果,且不声称任何厂商在测试数据上训练过,但这一模式足够明显,因此他们对所有剩余运行切断了网络访问。
更换框架带来的结果变化与重跑差不多
在更大的 447 个任务池上,最重的框架 Claude Code 和最轻的 mini-SWE-agent 在两个受测模型上的差距都小于 2 分。在 5 分的区间内,它们在统计上是等价的。
研究人员原本预期框架效应在最难的 45 个任务上最为明显。事实上,各框架在每个模型上解出的任务数相差两到五个,而简单重跑同一配置会使这一数字偏移多达三个。有时 mini-SWE-agent 领先,有时则是 Claude Code。
翻转率讲述了同样的故事。在两次重跑之间,13% 任务的中位数结果会发生变化。在两个不同框架之间,同样是 13%。更换模型则将这一比例推高到 22%。某个框架能赢下哪些任务在每次运行中都会变化,就像抛硬币一样。作者写道,框架差距的表现如同“同一噪音的全新抽样”。
这些小样本也限制了任何比较所能检测出的差异。在45个任务的情况下,即使13分的差距也只有一半的概率能显现出来。而在447个任务的情况下,约五分的差距才能被可靠地检测出来。智谱所宣称的2.4分的优势低于这两个阈值,许多其他宣传的改进也是如此。
所有测试框架的表现都相同,只有 OpenCode 落后了
唯一可测量的测试框架效应是 OpenCode 的持续落后。在大型任务池上,它比另外两个落后最多九个百分点。这一差距约有half可以追溯到输出上限:当模型在推理过程中中途超过该上限时,Claude Code 会提示它继续进行,而 OpenCode 则让该步骤就此结束,尝试通常随之失败。
为 OpenCode 添加类似 Claude Code 的续接提示并无帮助,因为同一任务在重试时很少触发同样的溢出。对于剩余的差距,作者没有解释,只有一个观察:在 OpenCode 下,模型更早停止工作。在本地运行的模型上,OpenCode 的时间限制也比 Claude Code 紧得多,作者将其标记为一个未受控变量。
mini-SWE-agent 会遇到上下文窗口限制,因为它缺乏上下文管理,主要出现在其他 harness 也会失败的任务上。OpenCode 的搜索工具在首次使用时尝试下载一个二进制文件,离线时会失效。
系统提示词和工具描述决定了账单
在相同的模型、相同的任务和相同的价格表下,同一任务的成本可能因测试框架不同而相差高达三倍。工具输出的差异几乎解释不了这一差距。三个测试框架每次调用返回的文本量都差不多。
真正的差异来自系统提示词和工具描述。它们在每一步都会被重新发送,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 自家的测试框架用自家模型跑分并不比其他框架好,但成本最高。即便研究人员从 Claude Code 中移除了工具,Claude Opus 5 的结果也完全相同。一年前的版本能以不到一半的成本解决数量相近的任务,因为当时 Extended Thinking 默认未开启。
Thinking 是唯一一个 harness 选择真正改变结果的用例。在不开启 thinking 的情况下,mini-SWE-agent 搭配 Qwen3.6 下降了十一分,而 Claude Code 和 OpenCode 保持在噪声范围内。HY4-Preview 在 Claude Code 中不开启 thinking 时也下降了十一分。一个智能体对推理的依赖程度似乎与特定的模型-harness 组合有关。作者承认他们的测试网格太小,无法解释原因。
该研究主要依赖一个基准测试。在 Terminal-Bench 2.1 上进行的小规模交叉验证显示出相同的模式。闭源顶尖模型 Opus 5 仅在 Claude Code 中运行。作者总结道,一个测试框架买到的是“更少的方式输掉任务和金钱,而不是更高的通过率”。他们建议在每次框架对比中同时公布相同设置的重跑结果。这是判断测量出的差异中有多少只是噪声的唯一方法。数据和分析脚本可在 GitHub.
在其他研究中,安全带上的更多用力也很少带来回报。其中一项研究中, 简单的 Markdown 文件 击败了一套面向 AI 编程代理的复杂技能系统。早前的一项研究已经表明,该 框架的选择 同款车型的成本可能几乎增加两倍。因此,线束设计受到了高度重视。 英伟达 最近通过更好的智能体引导,将编程智能体的令牌成本削减了近一半。