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 领域最主流的评测基准之一,但近年暴露出两个严重问题:

  1. 测试质量缺陷:作者引用一项审计结论(由其他研究者发起),指出近 60% 的 unsolved SWE-bench Verified 实例包含有缺陷的测试——要么过窄(拒绝正确解法),要么过宽(检验未声明的需求)。
  2. 饱和问题:头部模型在 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

核验过程

读过的官方来源

  1. arXiv 论文摘要(https://arxiv.org/abs/2608.09802) - 确认标题、作者列表(15 人,来自上海交大等单位)、COLM 2026 会议发表 - 确认核心指标:170 实例、7 语言、平均 11.4 文件/261.6 行、最优 41.2% 解决率 - 确认动机:SWE-bench Verified 近 60% unsolved 实例含缺陷测试

  2. 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 构建更大规模基准

交叉验证

  1. 第三方报道交叉核对(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 长期任务能力不可绕过的新标杆。