SWE Refactor Bench: Can Coding Agents Complete a Long-Horizon, Whole-Repository Stack Migration?
该论文介绍了 SWE Refactor Bench,这是一个包含 20 个完整仓库迁移任务且具有严格三阶段评估协议的基准测试,旨在揭示当前编码智能体在不依赖行为技巧的情况下,自主完成复杂的长程技术栈迁移时仅能达到 5.4% 成功率的局限性。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
现代软件系统就像古老的城市,层层叠叠地堆砌着数十年的建设。随着时间的推移,原始的材料和方法变得过时、维护成本高昂,或者干脆与新工具不兼容。当一个团队决定重建这座城市的一部分时——例如从一种建筑语言切换到另一种,或者更换整个地基——他们面临的是一项巨大的、手动的工程。其目标是在确保建筑物功能与原先完全一致的前提下,用新的结构替换旧的结构。多年来,研究人员一直在开发能够修复代码中微小漏洞的人工智能智能体,它们扮演着数字修理工的角色。一个自然的问题随之而来:如果这些智能体可以修理一扇破碎的窗户,它们能否也重建一整座摩天大楼,在不导致建筑坍塌的情况下,将钢架结构更换为新材料?
这个问题看似简单,但测试过程却证明了其异常困难。针对这些人工智能智能体的传统测试就像一场简单的及格或不及格考试:它们检查程序在发生变化后是否产生了正确的输出。如果输出正确,智能体就会获得满分。然而,这种方法在应用于整个系统重构时存在致命缺陷。如果一个智能体被要求从头开始重写一个程序,但它只是把原始的、未经修改的代码交了回来,测试仍然会通过,因为原始代码本身就是可以正常运行的。测试看到了正确的结果,便假设工作已经完成,从而未能察觉到智能体根本没有进行任何改动。这种盲点意味着,即使是一个毫无作为的智能体,也可能被授予“完美”的分数。
为了解决这个问题,来自 Naver Labs 和清华大学的研究人员创建了一个更严格的新测试,称为 SWE Refactor Bench。他们收集了二十个真实的软件项目,包括像 SQLite 数据库和 zlib 压缩库这样的关键基础设施,并要求人工智能智能体将它们整体迁移到不同的技术栈。这些任务涉及四种不同类型的艰巨工作:重写编程语言本身、更换组织代码的软件框架、将软件迁移到不同的操作系统环境,或者更换用于构建最终产品的工具。研究人员给予智能体六到三十个小时的时间来完成每项任务,期间它们需自主工作,无需人类帮助。
研究人员设计了一个三阶段评估流程,以确保智能体确实完成了工作并且做得正确。首先,一项严格的审计检查了旧技术是否已真正从代码中消失。如果智能体只是复制了原始文件,或者在核心逻辑周围添加了一个薄薄的包装层,而没有进行重写,那么尝试会被立即拒绝。其次,系统运行了超过 13 万项特定检查,以确保软件的行为与变更前完全一致。最后,一个由六个独立人工智能智能体组成的团队充当审计员,每个智能体花费一小时时间,专门搜寻自动化测试可能遗漏的细微差异。这些审计员必须制作出一个失败的运行实例,以证明迁移是不完美的。
结果非常残酷。在八个最先进的人工智能模型进行的 520 次尝试中,只有 28 次(即 5.4%)通过了所有三个阶段。事实上,二十个任务中有十三个任务从未被任何模型成功完成。表现最好的模型 Claude Opus 5 仅获得了 100 分中的 47 分。失败案例揭示了一个清晰的模式:保持软件运行的能力与执行迁移的能力是两种不同的技能,而智能体难以将两者结合。有 30 次尝试完美地保留了软件的行为,但却因为智能体跳过了迁移过程(直接交回了原始代码)而失败。相反,有 252 次尝试成功重写了代码,却在过程中破坏了原有行为。即使在那些通过了初步检查的尝试中,智能体也难以达到完美;虽然 58% 的成功重写通过了 99% 的行为检查,但只有 26% 通过了全部检查。
难度因迁移类型而异。智能体在重写构建工具链(涉及改变软件打包方式)方面相对成功,得分在 100 分中的 31.4 分。然而,在语言重写(即必须将核心逻辑从一种编程语言翻译成另一种)方面,它们的表现非常糟糕,得分仅为 5.6。研究结论认为,当前的人工智能智能体尚不足以可靠地自主执行长期的全仓库迁移。虽然它们可以处理局部修复,但从头开始重建系统并同时保持其精确行为的复杂任务,仍然是一个巨大的挑战。这项研究表明,为了让这些智能体在系统维护中真正发挥作用,它们必须学会既能完成重写的繁重体力活,又能保持功能的精准度,而这正是它们目前尚未掌握的结合点。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。