- 基准:
swebench-pro 151 (zh release v30 aligned),151 题 × 6 仓库 - 模型: DeepSeek V4 Flash(dsh 侧
deepseek-v4-flash#effort=max;opencode 侧compass/deepseek-v4-flash) - 更新时间: 2026-08-18
- dsh 对比 opencode:极限分更高,稳定性弱一点。 3try 口径下 dsh 的 pass^1 为 117(77.5%)高于 opencode 的 114(75.5%),pass^2 同样领先(109 vs 105);但三次全过的 pass^3 落后(83 vs 96),单次成绩波动也更大(96-111 vs 103-107)——上限更高、方差更大。
- dsh 的其他模式(preset)没有明显提升。 各 preset 单轮成绩收敛在 109-114,差距小于同配置重跑的自然波动,增强版本的作用暂无统计证据。
两个 agent 各跑 151 × 3 = 453 个 attempt。opencode 为官方 task image 审计后终判(315 harness-ok / 138 模型失败);dsh 的三次为第 1 轮(102)、第 2 轮(96)、std 最新轮(111)。
| 口径 | dsh 3try | opencode 3try |
|---|---|---|
| attempt 1 | 102 (67.5%) | 105 (69.5%) |
| attempt 2 | 96 (63.6%) | 107 (70.9%) |
| attempt 3 | 111 (73.5%) | 103 (68.2%) |
| pass^1(≥1 次通过) | 117 (77.5%) | 114 (75.5%) |
| pass^2(≥2 次通过) | 109 (72.2%) | 105 (69.5%) |
| pass^3(3 次全过) | 83 (55.0%) | 96 (63.6%) |
| 单 attempt 平均 | 309/453 (68.2%) | 315/453 (69.5%) |
结论:pass^1 口径 dsh 以 117 vs 114 领先 3 题,pass^2 也领先(109 vs 105);三次全过的稳定性(pass^3)opencode 更好;单 attempt 平均两者基本持平(68.2% vs 69.5%)。
| repo | dsh | opencode | 差异解读 |
|---|---|---|---|
| ansible | 30/33 | 31/33 | 基本持平 |
| flipt | 23/45 | 15/45 | dsh 大幅领先(Go 项目) |
| navidrome | 5/5 | 2/5 | dsh 全过 |
| openlibrary | 27/35 | 34/35 | opencode 大幅领先 |
| qutebrowser | 8/9 | 9/9 | opencode 全过 |
| vuls | 24/24 | 23/24 | 基本持平 |
两个 agent 的长短板几乎完全互补:dsh 强在 flipt/navidrome,opencode 强在 openlibrary/qutebrowser。
单 try 成绩:
| preset | solved | 通过率 | ansible | flipt | navidrome | openlibrary | qutebrowser | vuls |
|---|---|---|---|---|---|---|---|---|
| anchored(锚定标准) | 114 | 75.5% | 29/33 | 22/45 | 5/5 | 27/35 | 7/9 | 24/24 |
| router(路由) | 114 | 75.5% | 29/33 | 22/45 | 5/5 | 27/35 | 7/9 | 24/24 |
| std(默认标准) | 111 | 73.5% | 29/33 | 19/45 | 5/5 | 27/35 | 7/9 | 24/24 |
| jspace(J-Space 认知套件) | 109 | 72.2% | 28/33 | 19/45 | 5/5 | 26/35 | 7/9 | 24/24 |
| 参考 | minimal(极简) | 109 | 72.2% | — | — | — | — | — |
| 参考 | code(run_code+SDK) | 104 | 68.9% | — | — | — | — | — |
结论:
- 四个 preset 成绩收敛在 109-114(72-76%),差距(2-5 题)小于同配置重跑的自然波动(同配置两轮相差 6 题 / 4.0pp),题级翻转率(preset 间 9/151 不一致)也与纯随机翻转(同配置两轮 10/151 不一致)几乎一样——当前单轮数据不能区分各 preset 的真实差异,增强版本的作用暂无统计证据,可能是跑分误差
- anchored/router 比 std 多出的 3 题全部来自 flipt,且两者只有 2 题重合,更像临界题的随机翻转而非同一机制的稳定增益
- jspace(109)与 minimal(109)持平,认知套件层零增益
| 指标 | dsh(新第 3 轮,std) | opencode(453 次全量) |
|---|---|---|
| 总耗时 | 36.3 小时(151 题) | 65.2 小时(453 次) |
| 单次均值 | 14.4 分钟 | 8.6 分钟 |
| 中位数 | 12.3 分钟 | 7.4 分钟 |
| p90 | 30.0 分钟 | 14-16 分钟 |
| 三轮一致性 | —(仅第 3 轮有记录) | 8.4-8.8 分钟,极稳 |
dsh 的第 1/2 轮无耗时记录;第 3 轮口径为最终合并批次。opencode 单题比 dsh 快约 40%(8.6 vs 14.4 分钟),且分布更紧凑(p90 16 分 vs 30 分)。
opencode 的 token 从其 command.log 的 step-finish 用量事件聚合(429/453 个日志,覆盖 94.7%;run_summary 中的 token 字段损坏,未采用):
| 指标(单题均值) | dsh std | opencode |
|---|---|---|
| 输入 token | 47.4k | 149.4k(约 3 倍) |
| 输出 token | 18.5k | 10.6k |
| 缓存读取 | (未汇总) | 1,375k |
| 输入中位 / p90 | — | 123.4k / 292.7k |
opencode 453 次总量:输入 64.10M、输出 4.53M、缓存读取 589.9M;三轮输入均值 147-152k,高度一致。两者策略差异明显:dsh 用约 1/3 的输入 token 换取近 2 倍的输出 token(更长的一次性生成),opencode 输入重、单步输出短——快但费上下文。
| preset | 总耗时 | 单题均值 | 中位 | p90 | 输入 token/题 | 输出 token/题 | 总输入 | 总输出 |
|---|---|---|---|---|---|---|---|---|
| std | 36.3h | 14.4m | 12.3m | 30.0m | 47.4k | 18.5k | 7.16M | 2.80M |
| anchored | 41.5h | 16.5m | 13.9m | 30.1m | 44.1k | 17.5k | 6.66M | 2.65M |
| router | 37.3h | 14.8m | 10.9m | 30.1m | 43.7k | 17.3k | 6.60M | 2.61M |
| jspace | 41.5h | 16.5m | 13.5m | 30.1m | 38.8k | 28.8k | 5.86M | 4.35M |
- jspace 输出 token 比其他 preset 高 60%(28.8k vs 17-18k)而输入最低——认知套件让模型"想得久、写得多",但成绩持平(109),单位 token 产出性价比最低
- router 中位耗时最短(10.9 分钟)
- 解出题与整体的耗时几乎相同(std:14.2 vs 14.4 分钟)——过不过不取决于跑多久,取决于方向
| repo | 题数 | 耗时均值 | p90 | 输入/题 | 输出/题 |
|---|---|---|---|---|---|
| ansible | 33 | 6.1m | 8.7m | 37k | 18k |
| flipt | 45 | 18.2m | 28.6m | 50k | 21k |
| navidrome | 5 | 7.2m | 8.7m | 58k | 19k |
| openlibrary | 35 | 12.2m | 15.7m | 50k | 20k |
| qutebrowser | 9 | 9.4m | 30.1m | 33k | 14k |
| vuls | 24 | 25.5m | 30.0m | 56k | 15k |
vuls 最慢(25.5 分钟均值)、flipt 次之——恰是 pass 率分化的两个仓库;ansible 最快(6.1 分钟)。单题 token 消耗 33k-58k。
- 3try(第一节):同一配置跑 3 次,pass^k = 至少通过 k 次的题数;评的是能力上限与稳定性
- 1-try(第二节):每题只跑一次;评的是真实生产表现
- opencode 的判定协议为官方 task image 内
run_script.sh + parser.py