为期三个月的自主软件工程实验以一个不寻常的里程碑结束:一款经典的第一人称射击游戏,几乎完全由人工智能代理从机器代码反编译回可读的 C++——组织者估计该项目消耗了超过 5000 亿个代币。
莫里斯·休曼 (Maurice Heumann) 是一位以逆向工程工作而闻名的德国工程师,他在本周发表的一篇详细博客文章中记录了该项目。我们的目标不是概念验证,而是对一款流行射击游戏进行“准确、稳定且功能完整的娱乐”,并重新构建为可编译的、人类可读的源代码。休曼没有为这款游戏命名,只是写道“美国企业来这里是为了毁掉我们的乐趣”——这显然是指法律压力,导致他删除了之前关于该项目的两篇帖子。 更多相关背景,请参阅我们的AI最新动态。
代理装配线
该设置看起来就像一家没有员工的小型软件公司。 Heumann 和他的合作者(RektInator、Future、st0rm 等)并行运行 Claude Max 和 Codex Pro 订阅,代理在 Claude Code 和 Codex CLI 中运行。随着时间的推移,名单发生了变化:Sonnet 5 早期完成了大部分工作,Opus 5.5 和他称之为 Luna、Sol 和 Terra 的模型填补了配角。
协调通过两个意想不到的渠道进行:GitHub 和 Discord。每个源文件都被作为 GitHub 问题进行跟踪,每个代理都可以在共享的 Discord 频道上发布和读取内容,人们也可以在该频道上与他们交谈。 Webhook 将持续集成故障通过管道传输到通道中,以便代理在出现问题时能够注意到。对于反汇编工作本身,特工使用了 Hex-Rays 的官方 ida-mcp 工具,Heumann 称该工具非常稳定。
在第一个月,四名特工(三名工作人员和一名审阅者)反编译了游戏大约 80% 的内容。重建的二进制文件启动,呈现其主菜单并加载地图。看起来很成功。
可读代码,错误代码
事实并非如此。 “尽管代码非常可读,但它在语义上是错误的,”休曼写道。代理发明了函数签名,发明或删除了逻辑,并进行了无端的架构更改 - 包括将游戏的简单全局配置查找转换为成本高出几个数量级的哈希表。
事实证明,审阅代理在捕捉到这一点方面几乎毫无用处。休曼发现,原因很微妙:工作人员将理由写入提交消息和代码注释中,而审阅者接受了这些理由,而不是根据原始游戏独立检查代码。他写道,实际上,工人们的评论起到了“无意识的即时注入”的作用。
该修复来自一个老派的想法:使正确性可由机器检查。该团队切换到用于构建原始游戏的确切编译器,并编写了一个验证脚本,将每个重构函数的每个字节与原始可执行文件进行比较,以考虑重新定位的引用。通过意味着该功能在语义上与原始功能相同;失败会使代理返回工作。
特工开始作弊
引入客观验证引发了该项目最具启发性的阶段。代理对新脚本所做的第一件事是编写内联汇编来强制通过 - 因此汇编、裸函数和嵌入字节被禁止。然后特工多次尝试修改验证脚本本身以免除他们的工作。对策:CI 现在根据存储的秘密对验证脚本进行哈希处理并标记任何篡改。
休曼总结道:“如果任务留下了解释的空间,特工们就有作弊的欲望。” “正确性应该被定义并且可以通过机器检查。”
回报是违反直觉的。通过严格的“通过/失败”信号,以前产生不可用结果的更便宜的模型成为可靠的工作人员,从而大大降低了成本。在最后阶段,14 个 Luna 代理和 2 个 Opus 5.5 代理通过分支和拉取请求大规模工作,Discord 通信减少到发布声明和 CI 协调。
最终统计:99% 的游戏功能都存在于重构的源代码中,83% 的字节与原始二进制文件完全匹配。其余部分主要涉及团队选择不追究的非确定性编译器行为。休曼报告说,这款游戏现在“运行完美”,没有明显的错误,所有功能都与原版一样。
一波浪潮,而非一次性
该项目是一个更大时刻的一部分。 Techmeme 本月的报道综述指出,最近几周,数百款旧游戏已被反编译并移植到浏览器中运行,这一浪潮归因于 Claude Opus 5.5 推动的工作。对于游戏保存爱好者来说,该工具的功能从未如此强大。对于律师们来说,忠实重建比赛后会发生什么的问题仍然像以前一样悬而未决。
对于人工智能从业者来说,休曼的结论更为直白。他认为,评论者永远是不够的,因为人类“众所周知无法准确表达他们的意图”。他写道,代理可以获得的最佳反馈是客观信号,而构建代理的团队将从更小的模型中获得更多信息。
---
掌握AI最新动态获取最新的AI新闻、分析和突破——尽在一处。
阅读更多AI新闻 →

