SWE-Bench ProMax:多语言代码重构评测基准 · 干货攻略
- 链接:https://x.com/_akhaliq | https://arxiv.org/abs/2608.09802 | https://huggingface.co/datasets/swe-bench-promax/SWE-Bench-ProMax
- 分类:x-tips
- 来源:X @_akhaliq
- 作者:Jay
- 更新:2026-08-28
- 仓库:swe-bench-promax/SWE-Bench-ProMax
这是什么
SWE-Bench ProMax 是一个多语言代码重构评测基准,收录 170 个真实 GitHub commit 实例,涵盖 7 种编程语言(Python、Java、TypeScript、Go、C、C++、Rust),于 COLM 2026 发表。
核心定位:填补现有 coding agent 评测体系在大规模跨文件重构任务上的空白。与 SWE-bench Verified 不同,ProMax 专门筛选需要协调修改多个文件、行为保持不变的代码重构任务,平均每个实例涉及 11.4 个文件、261.6 行代码的变更,规模远超单文件 issue 解决类评测。
为什么值得关注
谁在用、解决什么问题
SWE-bench 是 coding agent 领域最主流的评测基准之一,但近年暴露出两个严重问题:
- 测试质量缺陷:作者引用一项审计结论(由其他研究者发起),指出近 60% 的 unsolved SWE-bench Verified 实例包含有缺陷的测试——要么过窄(拒绝正确解法),要么过宽(检验未声明的需求)。
- 饱和问题:头部模型在 SWE-bench Verified 上已达 75%+ 解决率,数据污染风险也日益突出。
ProMax 的出现正是为了解决这两个问题:由专家重新撰写 issue 描述、手动审查测试套件,并从 post-2025 的真实 commit 中采集数据(天然免疫训练数据污染),使评测真正考察 agent 的大规模重构能力而非刷分能力。
关键数字一览
| 指标 | 数值 |
|---|---|
| 实例总数 | 170 |
| 编程语言数 | 7(Python、Java、TypeScript、Go、C、C++、Rust) |
| 平均修改文件数 | 11.4 |
| 平均修改代码行数 | 261.6 |
| 头部模型最优解决率 | 41.2%(GPT-5.2,OpenHands scaffold) |
| GLM-5(开源)解决率 | 36.5%,$0.24/实例 |
| Claude Sonnet 4.6 解决率 | 38.8%,$4.77/实例 |
| 质量问题比例(SWE-bench Verified) | 近 60% 实例含缺陷测试 |
语言分布(HuggingFace README 原始数据)
| 语言 | 实例数 |
|---|---|
| C | 20 |
| C++ | 22 |
| Go | 23 |
| Java | 26 |
| Python | 29 |
| Rust | 22 |
| TypeScript | 28 |
核验过程
读过的官方来源
-
arXiv 论文摘要(https://arxiv.org/abs/2608.09802) - 确认标题、作者列表(15 人,来自上海交大等单位)、COLM 2026 会议发表 - 确认核心指标:170 实例、7 语言、平均 11.4 文件/261.6 行、最优 41.2% 解决率 - 确认动机:SWE-bench Verified 近 60% unsolved 实例含缺陷测试
-
HuggingFace 数据集卡片(https://huggingface.co/datasets/swe-bench-promax/SWE-Bench-ProMax) - 确认 170 实例、7 语言及具体分布(与论文一致) - 确认数据字段结构(instance_id、repo、patch、test_patch、image_name 等) - 确认评测方式:Docker 容器化,runner 路径
src/evaluation/test_run.py- 确认 v2 正在准备中,将基于 post-2026 issues 构建更大规模基准
交叉验证
- 第三方报道交叉核对(The New Stack、emergentmind、AI Weekly) - 各来源一致报告:最优解决率 41.2%(GPT-5.2 + OpenHands)、GLM-5 36.5% at $0.24、Claude Sonnet 4.6 38.8% at $4.77 - emergentmind 额外补充:TypeScript 28 个实例主要来自 2 个代码仓库(以 Angular 为主),结论须注意语言分布不均 - 关键约束「commit message 须含 'refactor'、排除 'bug fix'」来自 emergentmind 报道,原帖未提及,属扩展补充信息
冲突处理:原帖描述"7语言170实例",与官方 README 字段一致,无冲突。原帖"平均 patch 改 11.4 文件/261 行"中的"行"在论文中为"lines of code"(261.6),取论文精确值。
上手步骤
1. 加载基准数据
从 HuggingFace 下载并加载 JSON 格式的基准记录:
import json
# 加载基准实例
with open("data/swe-bench-promax.json", encoding="utf-8") as f:
dataset = json.load(f)
print(len(dataset)) # 170
print(dataset[0]["instance_id"]) # 例如: python__django__10987
# 加载评测元数据
with open("data/eval.json", encoding="utf-8") as f:
eval_metadata = json.load(f)
first_instance_id = next(iter(eval_metadata))
print(eval_metadata[first_instance_id]["eval_script"])
2. 准备预测结果文件
每个模型预测需生成标准 diff 格式的 patch:
# preds.json 格式
[
{
"instance_id": "python__django__10987",
"model_patch": "diff --git a/django/db/models/query.py ..."
}
]
3. 运行评测(需 Docker)
# 单线程评测
python src/evaluation/test_run.py \
--pred ./preds.json \
--golden ./data/swe-bench-promax.json \
--eval ./data/eval.json \
--output ./pass_rate.json \
--workers 1
# 并行评测(--workers N)
python src/evaluation/test_run.py \
--pred ./preds.json \
--golden ./data/swe-bench-promax.json \
--eval ./data/eval.json \
--output ./pass_rate.json \
--workers 8 \
--cleanup # 评测结束后清理 Docker 镜像
4. 解析结果
import json
with open("pass_rate.json", encoding="utf-8") as f:
results = json.load(f)
total = len(results)
passed = sum(1 for v in results.values() if v.get("status") == "pass")
print(f"Pass rate: {passed}/{total} = {passed/total:.1%}")
坑与适用边界
⚠️ 样本量有限,统计结论须谨慎
170 个实例在统计意义上属于小样本,各语言实例数 20~29 不等,跨语言比较时应注意置信区间。
⚠️ TypeScript 分布集中
28 个 TypeScript 实例主要来自 2 个代码仓库(以 Angular 为主),TypeScript 评测结果可能反映的是仓库特定惯例而非语言通用能力。
⚠️ 候选集选择存在隐性过滤
实例来自 commit message 含 "refactor"、排除含 "bug fix" 的提交,且需同时修改测试和非测试文件。这套筛选标准决定了 ProMax 无法代表所有重构场景,真实重构但未以 "refactor" 描述的 commit 被系统性排除。
⚠️ v2 正在路上
HuggingFace README 明确披露 v2 正在准备中,将基于 post-2026 issues 构建更大规模基准。当前 v1 基准以 post-2025 issues 构建,v2 出来后建议迁移。
适用场景
- 适合:评估多语言大型代码库重构场景下的 coding agent 能力上限;对比不同模型/scaffold 在大规模跨文件修改上的表现。
- 不适合:小规模单文件修改评测(已有 SWE-bench Verified);封闭世界预训练数据泄露检测(已有其他专项基准)。
一句话结论
SWE-Bench ProMax 是当前最接近真实大规模代码重构场景的多语言 coding agent 基准,头部模型 GPT-5.2 在 OpenHands scaffold 下也仅达 41.2% 解决率,揭示了现有 agent 在跨文件行为保持型重构上的显著差距——170 实例、7 语言、平均 11.4 文件/261 行,是评测 coding agent 长期任务能力不可绕过的新标杆。