8 个模型修复同一批 120 个真实 Bug:通过率与成本对比
Opus 5.5 修好的最多,DeepSeek V4.1 Flash 每修好一个花得最少。如果预算有限,Sonnet 5.5 是两者之间最稳的选择。
Orbis News阅读约 4 分钟
演示内容 · 文章、模型及数据均为虚构示例,不作为事实或价格依据。

{"version":1,"sourceTitle":"8 个模型修复同一批 120 个真实 Bug:通过率与成本对比","image":"tools.webp","min":14,"demoAuthor":"林叙","models":["anthropic/claude-opus-5.5","anthropic/claude-sonnet-5.5","deepseek/deepseek-v4.1-flash"],"order":0,"topicOrder":0,"topicIndex":0,"story":{"time":"17:45","dot":["8 个模型","修同一批 120 个 Bug"],"title":"实测:8 个模型修复同一批 120 个真实 Bug,通过率与成本对比","sum":"题目来自 14 个开源仓库的真实 issue,用仓库自带的测试判定是否修好。Opus 5.5 通过率最高,DeepSeek V4.1 Flash 每修好一个 Bug 的花费最低。","src":"Orbis 实测","slug":"bugfix-benchmark-oct","sourceExcerpt":"Opus 5.5 修好的最多,DeepSeek V4.1 Flash 每修好一个花得最少。如果预算有限,Sonnet 5.5 是两者之间最稳的选择。"}}
先看结论
- 通过率最高的是 Claude Opus 5.5,84.2%;最低的 Gemini 3.8 Flash 也有 66.7%。
- 按“每修好一个 Bug 的成本”算,DeepSeek V4.1 Flash 只要 0.13 元,是 Opus 的十三分之一。
- 失败的题目里,有 61% 是因为模型改动了测试没有覆盖的行为,而不是没找到原因。
怎么测的
我们从 14 个活跃的开源仓库里挑了 120 个已关闭的 issue,每个都有对应的修复提交和测试。把仓库回退到修复之前,给模型 issue 描述和仓库代码,让它提交补丁,再运行仓库自带的测试判断是否修好。
所有模型使用相同的系统提示词和工具:读文件、搜索、运行测试、写补丁。每道题最多 30 轮工具调用,温度设为 0,每个模型完整跑 3 遍取平均。
结果
| 模型 | 通过率 | 单题成本 | 每修好一个 |
|---|---|---|---|
| Claude Opus 5.5 | 84.2% | ¥1.42 | ¥1.69 |
| GPT-6.1 Sol | 81.7% | ¥0.96 | ¥1.18 |
| Claude Sonnet 5.5 | 79.2% | ¥0.58 | ¥0.73 |
| Qwen3.8 Max | 75.8% | ¥0.44 | ¥0.58 |
| Kimi K3 | 73.3% | ¥0.37 | ¥0.50 |
| GLM-5.3 Prime | 71.7% | ¥0.31 | ¥0.43 |
| DeepSeek V4.1 Flash | 70.8% | ¥0.09 | ¥0.13 |
| Gemini 3.8 Flash | 66.7% | ¥0.21 | ¥0.31 |
通过率的差距没有价格差距那么大。最贵和最便宜的模型单价相差 16 倍,通过率只差 13 个百分点。
失败的题目输在哪里
我们逐个看了所有失败的补丁。最常见的问题不是找不到原因,而是修得太宽:模型改动了测试没有覆盖的行为,导致别的测试失败。这类失败占 61%。
- 修得太宽,破坏了其他行为:61%
- 定位错文件或函数:22%
- 补丁正确但没有通过代码风格检查:11%
- 超出工具调用轮数:6%
如果你的仓库测试覆盖率不高,这些模型交上来的补丁需要更仔细地人工审查。
怎么选
需要模型独立完成、人工审查成本高的场景,用 Opus 5.5。日常开发辅助,Sonnet 5.5 的通过率只低 5 个百分点,成本不到一半。批量处理大量简单 issue,先用 DeepSeek V4.1 Flash 跑一遍,失败的再交给更强的模型。
from openai import OpenAI
client = OpenAI(base_url="https://api.orbis.ai/v1", api_key="sk-...")
def fix(issue, models=("deepseek/deepseek-v4.1-flash", "anthropic/claude-sonnet-5.5")):
for model in models:
patch = run_agent(client, model, issue)
if run_tests(patch):
return patch
return None按这次的数据,先用 Flash 再用 Sonnet 的组合,通过率能到 82.5%,平均每题成本 0.26 元。
文中提到的模型
模型 ID 可以直接填进 model 参数,在 Orbis 用同一个 API Key 调用。