MirrorCode:AI独立重写完整程序的长程编码基准
AI在软件工程基准测试领域近年进展迅猛,但现有基准大多聚焦于修复漏洞、实现单一功能等短周期任务。我们与METR联合开发的MirrorCode基准测试,专门用于评估AI模型处理长周期编码任务的能力。在MirrorCode任务中,AI模型需要在无法获取原始源代码的前提下,从头至尾重实现完整程序,且生成的解决方案必须在端到端测试(包括未公开测试用例)中与原程序输出完全一致。MirrorCode包含25个目标程序,覆盖计算机科学多个领域:Unix工具、数据序列化与查询工具、生物信息学、解释器、静态分析、密码学和压缩算法。
MirrorCode的独特之处
适配规模的评估机制
我们为MirrorCode任务提供了充足的推理资源,确保测试具备实际参考价值。现有多数软件工程基准测试将推理成本限制在1至10美元左右,即便对应的任务人类工程师可能需要数周才能完成。例如,MirrorCode中规模最大的一项任务,单次运行成本达2600美元,AI在无人工干预的情况下连续工作了19天。
难度高但公平性可控
重实现完整程序对人类工程师而言已是极大挑战,我们认为,不借助AI的人类工程师完成MirrorCode中最复杂的任务需要数月时间。但这些任务并非无解——我们确认任务提供的信息足以保证公平性。
从设计上杜绝作弊
我们对AI模型进行沙箱隔离,禁止其访问互联网与原始代码库,从根源上杜绝作弊可能。此外,模型在开发代码过程中无法接触到部分端到端测试用例,因此无法通过构建查询表来模仿原程序输出。
AI已具备处理部分长周期编码任务的能力
尽管难度极高,AI已能完成部分MirrorCode长周期任务。例如,Claude Opus 4.7成功重实现了gotree——一个拥有约1.6万行Go代码、包含40余个命令的生物信息学工具包。我们认为,不借助AI的人类工程师完成这项任务需要2至17周,而Opus 4.7仅用14小时就完成了,成本为251美元。
不过,这些结果存在一个重要前提:数据污染问题。由于MirrorCode任务基于开源程序重实现,AI模型在预训练阶段可能已接触过原始代码库,这可能导致基准测试中的性能被高估。但我们发现,AI成功重实现了多个通过记忆检测的目标程序,却未能完成检测出存在记忆痕迹的程序。这表明记忆并非决定结果的主导因素,但我们无法完全排除其对AI性能的影响。总体而言,我们认为MirrorCode所衡量的AI能力,能够迁移至未见过的代码库。相关细节、更多实验结果及基准构建方法,可参阅论文。
排行榜
MirrorCode尚未被完全攻克。我们定期更新的排行榜采用MirrorCode (ML, +Private, 2L) 标准:选取Medium和Large量级的15个目标程序,剔除Small量级程序;每个目标程序需用两种语言实现(通常为Go和Ada),共30项任务;每项任务运行3次,单次尝试的资源上限为100亿token、时间上限为7天。2
开源代码
我们已将MirrorCode的框架及25个目标程序中的22个(涵盖6种支持编程语言,共132个任务实例)作为开源项目发布,剩余3个目标程序作为私有测试集保留。
本项目由我们与METR联合开发,并得到METR资助。MirrorCode的作者为Tom Adamczewski、David Owen和David Rein;Florian Brand、Giles Edkins、Allen Hart及Daniel O’Connell参与开发了额外的目标程序;Rasmus Faber-Espensen对基础设施进行了关键优化,并提供了工程技术建议。
- 得分最高的AI重实现gotree版本通过了2001项测试中的2000项,仅在一个小众日期注释处理命令的边缘案例测试中失败。因此,该实现并未达到100%的任务完成标准,但已近乎完美,覆盖了所有既定功能。
- 相关定义请参阅论文中的“建议命名规范”。“+Private”表示包含私有测试集,即Medium和Large量级中的private_M与private_L目标程序。在2L规则下,目标程序通常采用Go和Ada(一种主流语言、一种低资源语言),另有两个例外情况。本排行榜得分与论文数据不具备直接可比性:论文评估了全部25个目标程序,Small和Medium量级程序采用全部6种语言实现,除Large量级外,其余任务的token上限为10亿且无时间限制。