第5章 SWE-bench 全家桶与代码评测
SWE-bench/Verified/Lite/Multimodal/Live、Multi-SWE-bench、LiveCodeBench、HumanEval、Aider polyglot 全家桶对比、SOTA 数据、Contamination 防御、自建 benchmark 思路
第5章 📏 SWE-bench 全家桶与代码评测
一句话:SWE-bench Verified 是 2024-2026 LLM Code Agent 真实能力的黄金标尺 ——任何 Code Agent 不报这个数字都不可信。但要警惕单一 benchmark 的陷阱:contamination、过拟合、单一语言、Python 偏置——多 benchmark 交叉验证才是负责任的做法。
📑 目录
- 一、为什么需要专门的 Code Agent benchmark
- 二、SWE-bench 家族全景
- 三、SWE-bench(原版)
- 四、SWE-bench Verified ⭐
- 五、SWE-bench Lite / Multimodal / Live
- 六、Multi-SWE-bench(多语言)
- 七、HumanEval / LiveCodeBench
- 八、Aider polyglot leaderboard
- 九、其他 Code benchmark
- 十、SOTA 排行榜全景
- 十一、Contamination 防御
- 十二、怎么自建 Code benchmark
一、为什么需要专门的 Code Agent benchmark
模块八 Agent Eval 讲了通用 agent benchmark(GAIA / WebArena / OSWorld 等),但代码场景非常特殊:
| 维度 | 通用 agent benchmark | Code Agent benchmark |
|---|---|---|
| Pass 标准 | LLM-as-Judge / 人工 | 测试通过 = pass(0/1) |
| 任务来源 | 设计的 task | 真实 GitHub issue |
| 代码语言 | 多模态 | 主要文本(代码) |
| 验证方式 | 多轮 | 单次提交补丁 |
| 难度梯度 | 主观 | 真实 issue 难度分布 |
Code Agent 评测的最大优势:客观可验证 ——测试通过 = 对,失败 = 错,0 主观空间。
二、SWE-bench 家族全景
SWE-bench(原版,2294 issues)
│
│ Princeton 2023-10
▼
┌─────────────────────────────────┐
│ │
SWE-bench Verified SWE-bench Lite
(500 issues,OpenAI 验证) (300 issues,简化)
│ │
│ 2024-08 │ 2024-08
▼ ▼
Multimodal(517 含视觉) Live(动态防污染)
│ │
│ 2024-10 │ 2024+
▼ ▼
Multi-SWE-bench(Java/Go/Rust) SWE-Gym(训练版)
│ │
│ ByteDance 2025-04 │ PKU 2024-12
└─────────────────────────────────┘
三、SWE-bench(原版)
论文:Jimenez et al., “SWE-bench: Can Language Models Resolve Real-World GitHub Issues?”, ICLR 2024 (arXiv 2310.06770)。
3.1 构造方式
从 12 个流行 Python 库(Django, scikit-learn, sphinx, sympy, requests, pytest, …)中提取真实 PR:
- 找历史 PR,关联 issue
- PR 包含修复补丁 + 新增测试
- 检查点:修复前测试 fail,修复后测试 pass
- 任务给 agent:“这个 issue + repo 状态 → 给一个补丁”
- 评分:agent 补丁应用后,新测试 pass + 老测试不 break = pass
3.2 规模
- 2294 个 issue
- 12 个 Python repo
- 平均 issue 描述 195 词
- 平均补丁 32 行
3.3 难点
每个 issue 平均涉及:
- 阅读 ~10 个相关文件
- 理解 ~50-100 行代码
- 写 ~30 行补丁
- 改动可能跨多个 module
历史意义:首次把”agent 能力”量化到一个客观数字 ——是 Code Agent 时代的 ImageNet。
四、SWE-bench Verified ⭐
发布:2024-08,OpenAI 团队人工 review 后的高质量子集。地址:https://openai.com/index/introducing-swe-bench-verified/
4.1 为什么需要 Verified?
原版 SWE-bench 的 2294 个 issue 有质量问题:
- 测试不充分:有些 PR 的测试不够 distinctive,agent 给的补丁可能 game test
- 任务模糊:有些 issue 描述不清,人都不一定能理解
- 环境问题:某些 repo 装依赖会失败
OpenAI 招募 93 名专业开发者,人工 review 1700+ 个,挑出 500 个高质量任务:
- 测试明确
- 描述清晰
- 环境可复现
4.2 SWE-bench Verified 已成事实标准
2025 之后,几乎所有 Code Agent 评测都报 Verified 数字(而不再报原版):
| 系统 | 模型 | Verified Pass |
|---|---|---|
| Devin | (Anthropic + Cognition scaffolding) | ~74%* |
| OpenAI Codex CLI | GPT-5 | ~73% |
| Claude Code | Claude Sonnet 4.5 | ~71% |
| Cursor Composer | Claude Sonnet 4.5 | ~68% |
| OpenHands | Claude Sonnet 4.5 | ~66% |
| Aider | Claude Sonnet 4.5 | ~64% |
| Junie (JetBrains) | (混合) | ~62% |
| GitHub Copilot Coding Agent | (混合) | ~65% |
*Devin 数字来自 Cognition 自家发布。
4.3 数字怎么读
70%+ = 优秀 Code Agent 50-70% = 中端 30-50% = 入门级 / 早期模型 < 30% = 不实用
注意:Verified 比原版简单一些,数字会比原版高 ~10-15%。
五、SWE-bench Lite / Multimodal / Live
5.1 SWE-bench Lite
规模:300 个,从原版选简单子集(单文件、小补丁)。
用途:快速迭代 / 学术原型。Pass 率比 Verified 高 ~10%。
5.2 SWE-bench Multimodal
论文:arXiv 2410.03859,2024-10 发布。
特色:517 个含视觉的 issue ——包含 screenshot / diagram / UI mock。
为什么重要:很多真实 bug 是 “UI 不对”,描述要求看截图。
| 系统 | Pass Rate |
|---|---|
| Claude Sonnet 4.5 | ~45% |
| GPT-5 | ~42% |
| Claude 3.5 Sonnet | ~25% |
可见:视觉 + 代码双任务比纯代码难得多 ——对应模型的多模态能力还有空间。
5.3 SWE-bench Live
核心:持续从最新 PR 提取新题,防 contamination(LLM 训练时已看过)。
节奏:每月新增 ~50 个 issue,旧题逐渐淘汰。
业界趋势:静态 benchmark 必然被 LLM 在训练数据中”记忆”——动态 benchmark 是未来。
六、Multi-SWE-bench(多语言)
论文:ByteDance 2025-04 发布,arXiv 2504.02605。
核心贡献:把 SWE-bench 从 Python 拓展到 Java / Go / Rust / C++ / TypeScript / JavaScript / PHP 7 种语言。
6.1 规模
- 总计 ~2000 个 issue
- 每种语言 200-400 个
6.2 关键发现
SOTA 模型在不同语言上差异极大:
| 模型 | Python | Java | Go | Rust | C++ | TS |
|---|---|---|---|---|---|---|
| Claude Sonnet 4.5 | 71% | 52% | 48% | 38% | 35% | 60% |
| GPT-5 | 73% | 50% | 45% | 35% | 32% | 58% |
Python 高分 = 训练数据中 Python 占比最大 + 测试覆盖好。 Rust / C++ 低 = 编译错误难调、Lifetime / 模板等概念复杂。
6.3 业界意义
模型号称 SWE-bench Verified 70% 听起来很强,但实际做 Java / Go 的工程师能感受到的能力可能只有 50%。多语言评测才是真实工程能力的衡量 ——Multi-SWE-bench 是关键补充。
七、HumanEval / LiveCodeBench
7.1 HumanEval(2021)
论文:Chen et al., “Evaluating Large Language Models Trained on Code” (Codex 论文),arXiv 2107.03374。
规模:164 个 Python 函数级编程题。
任务:给函数签名 + docstring → 写函数体 → 测试 pass。
SOTA 现状:
- GPT-3.5 ~70%
- GPT-4 ~88%
- Claude 3.5 Sonnet ~92%
- 2026 SOTA ~95%+
HumanEval 已饱和 ——头部模型都在 95%+,鉴别度很弱。但仍作为基础能力指标。
7.2 HumanEval-V
HumanEval 的多模态版(看代码截图、UML 图等),2024 发布。鉴别度比原版高。
7.3 LiveCodeBench
地址:https://livecodebench.github.io/
核心特色:
- 持续从 LeetCode / AtCoder / Codeforces 抓题
- 按时间窗口分组,可严格 测 contamination
- 难度分级:Easy / Medium / Hard
SOTA(2026-Q2):
- o3 / GPT-5: ~62%
- Claude Sonnet 4.5: ~58%
- DeepSeek-V4-pro: ~56%
价值:动态 + 严格防 contamination,比 HumanEval 鉴别度高得多。
八、Aider polyglot leaderboard
地址:https://aider.chat/docs/leaderboards/
特色:Aider 作者 Paul Gauthier 维护的多语言 LeetCode 风格 benchmark,包含 6 种语言:
- C++
- Go
- Java
- JavaScript
- Python
- Rust
任务:225 个 LeetCode-style 题,要求 agent 在多种语言里实现同一道题。
Pass 标准:全部测试 case 通过。
8.1 SOTA(2026-Q1)
| 模型 | Pass Rate |
|---|---|
| Claude Sonnet 4.5 + Aider | ~84% |
| GPT-5 + Aider | ~82% |
| DeepSeek-V4-pro + Aider | ~78% |
价值:比 HumanEval 难、比 SWE-bench 简单,鉴别度恰到好处。多语言保证不偏 Python。
九、其他 Code benchmark
| Benchmark | 焦点 | 规模 |
|---|---|---|
| CodeForces | 竞赛级算法 | 各种 |
| APPS(2021) | 编程题分级(intro/competition) | 10000+ |
| MBPP(Mostly Basic Python) | 入门级 | 1000 |
| DS-1000 | 数据科学(NumPy/Pandas/Sklearn) | 1000 |
| R-bench | repo 级 | 数百 |
| CommitChronicle | commit message 生成 | 万+ |
| SciCode | 科学计算 | 数百 |
| RepoBench | repo 内代码补全 | 数千 |
十、SOTA 排行榜全景
(2026-Q2,综合 7 大 benchmark)
| 模型 | SWE Verified | SWE Multimodal | LiveCode | Aider polyglot | HumanEval | Multi-SWE Java | Multi-SWE Rust |
|---|---|---|---|---|---|---|---|
| Claude Sonnet 4.5 | 71% | 45% | 58% | 84% | 92% | 52% | 38% |
| GPT-5 | 73% | 42% | 62% | 82% | 93% | 50% | 35% |
| Claude Opus 4.5 | 70% | 43% | 60% | 83% | 92% | 51% | 36% |
| Anthropic Sonnet 4 | 68% | 40% | 56% | 80% | 90% | 48% | 33% |
| Gemini 2.5 Pro | 65% | 38% | 53% | 76% | 89% | 44% | 30% |
| DeepSeek-V4-pro | 60% | 35% | 56% | 78% | 91% | 45% | 32% |
| GPT-4o | 50% | 28% | 45% | 65% | 88% | 35% | 22% |
解读:
- 2026 头部模型 SWE-bench Verified 都在 70%+,差距在 5-10%
- 多语言(Java / Rust)各家都明显下滑
- Multimodal 仍是主要 differentiator(视觉+代码双能力)
- HumanEval 已饱和,失去鉴别度
十一、Contamination 防御
Contamination(污染) = LLM 训练数据已包含 benchmark 题目 → 数字虚高、不可信。
11.1 检测方法
- 完整 string match:把 benchmark 题原文搜训练数据,看命中率
- Causal inference:训练截止时间前 vs 后的题目 pass 率,有显著差异 = 污染
- Perplexity 分析:LLM 看到题目时 PPL 极低 = 见过
11.2 LLM 厂商怎么防?
- OpenAI:Verified 集合之后模型才训练,所以理论上没污染(但需信任声明)
- Anthropic:类似声明
- DeepSeek:声明从训练数据中显式排除 SWE-bench
11.3 业界共识
单一静态 benchmark 必然被污染 ——所以:
- 优先动态 benchmark(SWE-bench Live / LiveCodeBench)
- 多 benchmark 交叉验证
- 关注模型发布前后版本差异(版本前 vs 版本后,数字爆涨 = 信号)
十二、怎么自建 Code benchmark
如果你的领域(法律 / 金融 / 医疗 / 内部 SDK)需要专属评测,本节讲思路。
12.1 数据来源
- 内部 GitHub repo PR(最理想)——天然 issue + 补丁 + 测试
- 内部 issue tracker + commit(JIRA + git log)
- 手工合成(让资深工程师写 mock issue + 补丁,用于早期)
12.2 关键挑战
| 挑战 | 解法 |
|---|---|
| 测试覆盖差 | 加 LLM-as-judge 兜底(详见模块八第4章) |
| repo 太大 | 子集采样,固定到几个 module |
| 私有依赖 | 用 mock / fixture,或 Docker 锁版本 |
| Issue 描述太短 | 让 LLM expand → 人审 |
| 评分语义敏感 | 多 metrics(test pass / lint / 性能 / style) |
12.3 推荐流程
1. 收集 100 个最近 PR(过去 6 个月)
2. 每个 PR 提取:issue 描述 / 修改文件 / 关键测试
3. 验证:回滚到 PR 前,跑测试应失败;应用 PR 后应通过
4. 清洗:踢掉测试不全 / 描述模糊的 PR
5. 划分:80% Train(给 agent 看)/ 20% Test(eval)
6. 跑 baseline:GPT-5 / Claude Sonnet 4.5 各跑一遍,记录 SOTA 起点
12.4 工具支持
- OpenHands SWE-bench evaluator:可改造成跑自家 repo
- swebench package:
pip install swebench,提供 docker 沙箱 + 评估器 - Inspect AI / DeepEval:作为 eval orchestrator(详见模块八)
✅ 自我检验清单
- 能说出 SWE-bench / Verified / Lite / Multimodal / Live 各自定位
- 能背出 2026 SWE-bench Verified 头部 3 家数字
- 能解释为什么 Multi-SWE-bench(多语言)很重要
- 能区分 HumanEval / LiveCodeBench / Aider polyglot 的鉴别度
- 能解释 contamination 是什么、怎么检测
- 能给出自建 code benchmark 的 6 步流程
📚 参考资料
核心论文
- SWE-bench (arXiv 2310.06770) — ICLR 2024
- SWE-bench Verified — https://openai.com/index/introducing-swe-bench-verified/
- SWE-bench Multimodal (arXiv 2410.03859)
- Multi-SWE-bench (arXiv 2504.02605) — ByteDance
- HumanEval / Codex (arXiv 2107.03374)
- LiveCodeBench (UC Berkeley) — https://livecodebench.github.io/
leaderboards
- SWE-bench — https://swebench.com
- LiveCodeBench — https://livecodebench.github.io/
- Aider polyglot — https://aider.chat/docs/leaderboards/
工具
- swebench (pip package) — https://github.com/swe-bench/SWE-bench
- OpenHands evaluator —
evaluation/swe_bench/(OpenHands repo 内)
Contamination 相关
- “Investigating Data Contamination in LLM Evaluation” (arXiv 2311.09783)
- LiveCodeBench 设计哲学(防 contamination 时间窗口)
下一章:第6章 IDE 集成与 LSP —— Language Server Protocol、Tree-sitter、VS Code Extension API、Cursor 内核、Continue.dev 架构,以及”自己写一个 Code Agent IDE 插件”实战指南。