[Paper] SWE-Bench++:一个用于从开源仓库可扩展生成软件工程基准的框架

发布: (2025年12月19日 GMT+8 18:16)
7 min read
原文: arXiv

Source: arXiv - 2512.17419v1

概述

SWE‑Bench++ 是一个新框架,能够自动将开源 GitHub 项目的真实 Pull Request 转换为可复现的、仓库级别的编码任务。通过收集 11 种编程语言的实时 bug 修复和功能请求,它创建了一个可扩展的、多语言基准,用于评估大型语言模型(LLM)在真实软件工程问题上的表现。

关键贡献

  • 自动化基准流水线: 一个端到端系统,从实时 GitHub PR 中提取、构建并验证任务,无需人工策划。
  • 多语言覆盖: 为 11 种语言(Python、JavaScript、Java、Go、Rust 等)生成任务,超越了以往基准仅聚焦 Python 的局限。
  • 基于执行的评估: 每个任务包含自动合成的环境和测试 oracle,支持 pass@k 风格的指标,反映真实的构建与测试结果。
  • 提示引导的轨迹合成: 将困难实例(强模型也会失败的)转换为逐步的“提示”,可用于微调或课程学习。
  • 大规模数据集: 包含来自 3,971 个代码库的 11,133 条实例,其中精选的 1,782 条实例用于全面评估。
  • 已证实的影响: 在 SWE‑Bench++ 上进行微调可提升在现有 SWE‑Bench 多语言基准上的表现,展示了该数据对模型适配的价值。

方法论

  1. 程序化获取 – 管道查询 GitHub API,收集最近合并的 PR,这些 PR 包含 bug‑fix 或 feature‑addition 更改。
  2. 环境合成 – 对于每个仓库,系统自动解析依赖(例如 requirements.txtpackage.jsonCargo.toml),并构建一个 Docker 容器,以镜像原始开发环境。
  3. 测试 Oracle 提取 – 收集现有的 CI 测试套件(如 pytestJUnitgo test),并将其重新用作真实的 Oracle。框架记录 PR 前的测试结果(失败)和 PR 合并后的测试结果(通过)。
  4. 质量保证 – 自动化检查确保 PR 能够干净地应用、测试是确定性的,并且任务是自包含的(没有外部机密)。
  5. 提示引导轨迹合成 – 对于顶级模型(Claude‑Sonnet‑4.5、GPT‑5、Gemini‑2.5‑Pro)未能通过的实例,系统提取中间提交差异和评论,生成逐步的“提示”序列,可用于课程式微调。

整个管道持续运行,使基准能够随开源生态的演进保持最新。

结果与发现

  • 模型性能 (在 1,782‑实例子集上的 pass@10):
    • Claude‑Sonnet‑4.5: 36.20 %
    • GPT‑5 (2025‑08‑07): 34.57 %
    • Gemini‑2.5‑Pro: 24.92 %
    • GPT‑4o: 16.89 %
  • 多语言差距:所有模型在非 Python 语言上的表现明显更差,凸显了当前 LLM 编码能力的局限性。
  • 微调收益:在 SWE‑Bench++ 实例上微调的模型在独立的 SWE‑Bench 多语言基准上取得可衡量的提升(最高约 5 % 的绝对改进),证明生成的数据对适配有效。
  • 可扩展性证明:该流水线在最少人工监督的情况下生成了 >11k 条高质量任务,表明基准的增长能够跟上开源代码库的快速扩张。

实际意义

  • 更真实的评估:开发者现在可以针对与实际拉取请求工作流相匹配的任务进行基准测试——包括构建步骤、依赖解析和测试套件——而不是合成的“玩具”问题。
  • 多语言工具链:拥有多语言代码库的公司(例如,用 Go、Rust 和 JavaScript 编写的微服务)可以获得反映其技术栈的基准,从而更好地进行模型选择和针对性微调。
  • 课程学习流水线:提示引导的轨迹可以输入持续学习流水线,使团队能够迭代地提升模型在最棘手真实错误上的表现。
  • 开源贡献循环:由于基准来源于真实的 PR,模型生成的补丁改进可以反馈回原始仓库,潜在地实现低风险贡献的自动化。
  • 工具集成:基于 Docker 的环境合成与 CI/CD 流水线相契合,使得将基准直接接入现有测试基础设施以对新 LLM 版本进行自动回归测试变得简单。

限制与未来工作

  • 质量差异:并非所有 PR 都拥有完整的测试套件;某些任务依赖于最小或不稳定的测试,这可能影响评估的可靠性。
  • 语言偏差:虽然覆盖了 11 种语言,但分布仍偏向流行生态系统(Python、JavaScript)。罕见语言可能仍然代表性不足。
  • 缺少静态分析:当前流水线未集成静态分析或安全检查,而这些对生产级代码生成非常重要。
  • 未来方向:作者计划(1)集成更丰富的静态分析预言机,(2)扩展到更多语言和框架,(3)为边缘案例 PR 添加“人机交互”验证阶段,以及(4)开源该流水线本身,以实现社区驱动的基准扩展。

作者

  • Lilin Wang
  • Lucas Ramalho
  • Alan Celestino
  • Phuc Anthony Pham
  • Yu Liu
  • Umang Kumar Sinha
  • Andres Portillo
  • Onassis Osunwa
  • Gabriel Maduekwe

论文信息

  • arXiv ID: 2512.17419v1
  • 分类: cs.SE, cs.AI, cs.CL, cs.LG
  • 出版日期: 2025年12月19日
  • PDF: 下载 PDF
Back to Blog

相关文章

阅读更多 »