AI能独立完成的最大软件项目是什么?MirrorCode基准测试给出答案
Epoch AI与METR联合推出MirrorCode基准测试,要求AI模型在无源码、无网络条件下端到端重写整个程序,以衡量其长周期编码能力。结果显示,Claude Opus 4.7已能在14小时内完成人类需2-17周的任务,但数据污染仍是评估中的关键问题。
过去几年,AI在软件工程基准测试上取得了快速进展。然而,大多数此类基准测试往往聚焦于较短的任务,比如修复bug或实现单个功能。MirrorCode是我们与METR共同开发的基准测试,用于在长周期编码任务中测试AI模型。
在MirrorCode任务中,AI模型被要求端到端地重新实现整个程序,且无法访问原始源代码。AI生成的解决方案必须在端到端测试(包括保留测试)中与原始程序的输出完全匹配。
MirrorCode的25个目标程序覆盖了计算领域的多个方向:Unix工具、数据序列化与查询工具、生物信息学、解释器、静态分析、密码学和压缩。MirrorCode有何不同:规模感知的评估。关键在于,我们提供了足够大的推理预算,以便认真尝试MirrorCode任务。
许多现有的软件工程基准测试将推理支出限制在1到10美元左右,即使该任务对人类来说可能需要数周才能完成。例如,MirrorCode中最大的任务之一单次运行成本为2600美元,AI在无人工干预的情况下工作了19天。
困难但公平:重新实现整个程序对人类软件工程师来说极具挑战性。我们相信,没有AI辅助的人类工程师需要数月才能解决最复杂的MirrorCode任务。
然而,MirrorCode任务也是可行的;我们知道有足够的信息使任务公平。设计上防作弊:我们对AI模型进行沙盒化,要求它们在无法访问互联网、无法访问原始代码库、且无法作弊的情况下工作。
有些端到端测试在模型开发代码时从未见过,因此它们不能简单地创建查找表来模仿原始程序的输出。AI已经可以执行一些长周期编码任务:尽管难度很大,AI已经能解决MirrorCode的长周期任务。
例如,Claude Opus 4.7重新实现了gotree:一个约16000行Go代码、包含40多个命令的生物信息学工具包。我们相信,同样的任务在没有AI辅助的情况下,人类工程师需要2到17周才能完成。
Opus 4.7在14小时内解决了它,成本为251美元。这些结果的一个重要警告是数据污染。由于MirrorCode任务涉及重新实现开源程序,AI模型很可能在预训练中见过原始代码库。这可能导致基准测试上的性能虚高。
然而,AI成功重新实现了几个通过我们记忆筛查的目标程序,而未能重新实现筛查显示存在记忆证据的程序。这表明结果并非由记忆主导,但我们不能排除记忆对AI性能有所贡献的可能性。
总体而言,我们预计MirrorCode所衡量的能力可以泛化到未见过的代码库。我们在论文中进一步讨论了这一点,以及更多结果和基准构建的细节。排行榜:MirrorCode尚未完全解决。对于我们定期更新的排行榜,我们报告MirrorCode(ML,+Private,2L)。
这意味着我们运行Medium和Large桶中的15个目标程序,并放弃Small桶。每个目标程序用两种实现语言(通常是Go和Ada)进行评估,共30个任务。我们每个任务运行三次,每次尝试的预算为100亿token,时限7天。
开源代码:我们发布scaffold和25个MirrorCode目标程序中的22个(在六种支持的编程语言中总计132个任务实例)作为开源,其余三个目标作为私有测试集保留。这项工作与METR共同开发,并得到METR的资助。
MirrorCode的作者是Tom Adamczewski、David Owen和David Rein。Florian Brand、Giles Edkins、Allen Hart和Daniel O'Connell贡献了额外的目标程序。
Rasmus Faber-Espensen进行了关键的基础设施改进并提供了工程建议。注:得分最高的AI gotree实现通过了2000/2001项测试,但未能通过一个针对小众命令(操作日期注释)的边界情况测试。
因此,它们并未严格达到100%的任务完成度,但我们认为重新实现近乎完美,基本覆盖了所有范围内的功能。注:参见论文“建议命名约定”中的定义。“+Private”表示包含私有测试集:这里指private_M和private_L,即Medium和Large桶中的私有目标。
在2L映射下,目标程序通常使用Go和Ada(一种主流语言和一种低资源语言),但有两个例外。
这些分数与论文中的结果不可直接比较,因为论文评估了全部25个目标程序,在Small和Medium桶上使用了全部6种智能体实现语言,并且除Large目标外,每次尝试的预算为10亿token,且没有时间限制。