SWE-CI: Evaluating Agent Capabilities in Maintaining Codebases via Continuous Integration

本文提出了首个基于持续集成循环的仓库级基准测试 SWE-CI,旨在通过模拟真实世界中长达数月的代码演进历史,将大模型智能体的评估范式从静态的短期功能正确性转向动态的长期代码可维护性。

Jialong Chen, Xander Xu, Hu Wei, Chuan Chen, Bing Zhao

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

Each language version is independently generated for its own context, not a direct translation.

这篇论文介绍了一个名为 SWE-CI 的新项目,它的核心目的是测试 AI 程序员是否真的“懂”如何长期维护代码,而不仅仅是会“修”代码

为了让你更容易理解,我们可以把写软件比作盖房子装修

1. 以前的测试:只考“一次性装修”

以前的 AI 测试(比如 SWE-bench),就像是一个突击检查

  • 场景:考官给 AI 一张图纸(需求),说:“这里有个窗户坏了,你把它修好。”
  • AI 的做法:AI 可能会用强力胶水把窗户粘上,虽然窗户能关上了(功能通过了),但胶水干了之后窗户就再也打不开了,或者下次想换个窗帘都拆不下来。
  • 问题:这种测试只看“窗户现在关没关”,却不管“这窗户以后好不好用”。在现实世界里,软件不是一次性建好的,而是要不断升级、打补丁、换功能的。如果 AI 写的代码像“胶水粘的窗户”,过几个月新需求来了,整个房子可能就塌了。

2. SWE-CI 的测试:考“长期管家”能力

SWE-CI 把测试变成了一场长达 233 天的“房屋改造马拉松”

  • 场景:AI 接手了一个已经住了 233 天、经历了 71 次装修的旧房子(真实代码库)。
  • 任务:AI 不能一次性把房子改完。它必须像真正的建筑工头一样,分几十个小步骤:
    1. 先看看哪里漏水(分析代码)。
    2. 修补一下(写代码)。
    3. 跑个测试(检查有没有把墙弄塌)。
    4. 再根据新需求,继续修补下一处。
  • 核心挑战:如果 AI 为了赶进度,今天随便糊弄一下(比如用胶带粘水管),明天新需求来了要换水管,它就会发现根本拆不动,最后导致整个系统崩溃。
  • SWE-CI 的评分标准:不仅看你今天修好了没有,更看你在修了 70 次之后,房子是不是还结实、好不好改

3. 独特的“双工头”模式

为了让测试更真实,SWE-CI 设计了两个 AI 角色配合工作,就像现实中的建筑师施工队

  • 建筑师(Architect Agent)
    • 它的任务是看问题、定计划。它不看具体的砖怎么砌,而是看“这里漏水了,我们需要加个防水层”。它负责把复杂的 bug 变成清晰的“施工任务单”。
  • 施工队(Programmer Agent)
    • 它的任务是干活。它拿着任务单,去改代码、加功能。
  • 为什么这样设计? 这模拟了真实公司里,产品经理/架构师提需求,程序员写代码的流程。如果“建筑师”没看清问题,或者“施工队”为了省事乱干,房子迟早会塌。

4. 实验结果:AI 还在“练级”中

作者用 100 个真实的“房屋改造”案例测试了各种顶尖 AI 模型,结果发现:

  • 进步很快:现在的 AI 确实比一年前强多了,修房子的速度变快了。
  • 但“眼高手低”:很多 AI 为了快速通过今天的检查,会写一些“短视”的代码(比如为了跑通测试,把代码写得死板、难修改)。
  • 后果严重:一旦进入长期维护阶段(比如第 50 次修改时),这些 AI 就会因为之前的“烂尾工程”而崩溃,甚至把原本没坏的地方也弄坏了(这叫回归错误)。
  • 数据说话:大多数 AI 在长期维护中,很难保持“零事故”(即不引入新 bug)。只有极少数顶尖模型(如 Claude Opus 系列)表现得稍微好一点,但也远未达到人类资深工程师的水平。

总结

SWE-CI 就像给 AI 程序员发了一张长期居住证,而不是一日游门票

它告诉我们:现在的 AI 很擅长做一道数学题(一次性修 bug),但还不太擅长经营一家公司(长期维护复杂的软件系统)。未来的 AI 不仅要能“写代码”,更要学会“写那种以后好改、好扩展的代码”。这才是软件工程的真正核心。