← 最新论文
💻 computer science

CI-Repair-Bench: A Repository-Aware Benchmark for Automated Patch Validation via CI Workflows

本文介绍了 CI-Repair-Bench,这是一个基于真实 GitHub Actions 执行记录构建的仓库感知基准,它仅通过完整的 CI 重新执行来评估自动化程序修复能力,结果表明,虽然大语言模型能有效处理由工具强制执行的局部故障,但在应对复杂的环境和依赖问题时却表现不佳。

原作者: Rabeya Khatun Muna (Peter), Md Nakhla Rafi (Peter), Tse-Hsun (Peter), Chen

发布于 2026-05-01
📖 1 分钟阅读☕ 轻松阅读

原作者: Rabeya Khatun Muna (Peter), Md Nakhla Rafi (Peter), Tse-Hsun (Peter), Chen

原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明

想象你是一位经营繁忙餐厅的厨师。你拥有一份复杂的食谱(你的软件代码)和一套严格的厨房规则(你的持续集成,或 CI 系统)。每次你调整食谱,厨房的自动化检查员都会对其进行审查。这位检查员不仅品尝食物,还会检查炉灶是否开启、食材是否新鲜、厨师是否遵守了安全规则,以及摆盘是否得当。

有时,检查员会拒绝这道菜。也许是盐放错了,也许是烤箱温度不对,又或者是食谱要求的某种食材 pantry 里已经没有了。修复这些被拒问题很难,因为问题可能不在于食谱本身,而在于厨房的设置或规则。

问题所在:修复的“黑盒”
目前,旨在修复代码的计算机程序(自动化程序修复)就像那些只盯着食谱书的厨师。它们非常擅长修正配料表中的拼写错误,但当问题出在烤箱坏了、买错了香料,或者厨房规则已变更时,它们往往束手无策。现有的针对这些修复程序的测试过于简单;它们假设厨房是完美的,仅检查食物味道是否对劲,却忽略了整个厨房混乱的现实。

解决方案:CI-Repair-Bench
本文作者构建了一个名为CI-Repair-Bench的全新、逼真的训练场。你可以将其想象为“真实且混乱的餐厅厨房模拟”。

  • 真实数据:他们并非使用虚构的问题,而是从 GitHub 上 103 个实际软件项目中收集了 567 个“被拒菜肴”的真实案例。
  • 全面检查:为了证明修复有效,该系统不仅仅进行“品尝测试”。它会重新运行整个厨房检查流程:检查炉灶、食材、安全规则以及最终的味道。如果这道菜在任何一项检查中失败,该修复即被视为失败。
  • 多样性:他们将失败情况归类为 12 种类型,范围从“摆盘凌乱”(格式问题)到“烤箱坏了”(环境错误),再到“我们没有正确的面粉”(依赖问题)。

实验:AI 厨师能修复吗?
研究人员测试了四种不同的"AI 厨师”(大型语言模型),看它们能否仅凭检查员的笔记(错误日志)来修复这些被拒的菜肴。

以下是他们的发现:

  1. “简单”修复:AI 在修复“摆盘”问题上出奇地出色。如果错误是“你的代码格式不正确”或“你漏掉了一个逗号”,AI 大约有 35% 的概率能修复它。这就像一位擅长把盘子擦干净的厨师。
  2. “困难”修复:AI 在处理复杂问题时表现极差。当问题是“烤箱坏了”(环境问题)或“我们需要某种特定品牌的面粉但尚未安装”(依赖问题)时,成功率降至接近零(通常低于 9%)。AI 无法判断问题不在于食谱,而在于厨房本身。
  3. “阅读笔记”因素:AI 的成功很大程度上取决于它阅读检查员笔记的能力。
    • 智能阅读(基于代理):当 AI 被指示仔细阅读冗长杂乱的笔记、进行总结并逐步思考时,它的表现要好得多。
    • 关键词搜索(基于检索):当 AI 只是在笔记中搜索关键词(像简单的搜索栏一样)时,它容易混淆且失败率更高。
    • 类比:这就像一位通读整封投诉信以理解语境的厨师,与一位只寻找“烧焦”一词就断定食物烧焦的厨师之间的区别。

核心结论
该论文得出结论:虽然 AI 在修复微小、具体的代码错误方面正变得更好,但在理解软件在现实世界中如何运行的宏观图景方面,它仍然非常糟糕。

  • 当前局限:AI 可以修复“拼写错误”和“风格”问题,但当问题涉及环境、依赖项或复杂的系统配置时,它就会迷失方向。
  • 差距:在“应用补丁”(修改代码)与“通过全面检查”(使整个系统运行正常)之间存在巨大差距。AI 做出的大多数补丁看起来是正确的,但因未能解决底层的环境或依赖问题,而在全面厨房检查中失败。

简而言之,CI-Repair-Bench 是一项更严苛的新测试,它向我们展示了我们的 AI 修复工具究竟在何处强大(修复微小的代码细节),又在何处薄弱(修复运行代码的复杂现实世界系统)。它证明,要在现实世界中修复软件,我们需要的是能够理解整个厨房而不仅仅是食谱的 AI。

您所在领域的论文太多了?

获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。

试用 Digest →