据开发者 Maurice(momo5502)在博客发文透露,过去约 3 个月里,其团队组织多个 AI Agent 对一款知名第一人称射击游戏展开反编译,目标是准确、稳定且功能完整地还原为 C++ 源码。该项目展示了长周期多 Agent 自主软件工程的实践路径:在经历早期代码“表面可读但语义错误”的瓶颈后,团队引入基于原版编译器的字节级机器校验,不仅确立了客观标准,还使低成本模型得以规模化协同,最终使 99% 的游戏函数出现在重建源码中。
据作者介绍,项目同时使用了 Claude Max(20x)与 Codex Pro 订阅,Claude Agent 跑在 Claude Code CLI,Codex Agent 跑在 Codex CLI;模型多数时间采用 Sonnet 5,也大量使用 Opus 5.5、Luna、Sol 和 Terra。Agent 通过 GitHub CLI 按翻译单元(每个 .cpp 文件一个)管理 Issue 追踪进度,在 Discord 共享频道通信,并通过 GitHub Webhook 接收 CI 失败推送。
项目首月共有 4 个 Agent(3 个干活的 Worker 加 1 个审查 Agent),约 4 周内反编译了约 80% 的游戏,游戏能启动、显示主菜单并加载地图。但作者表示,第一阶段代码可读性好却存在严重语义错误:Agent 用错函数签名、类型与结构体布局,凭空增删逻辑,还做了不必要的架构改动。根源在于缺乏客观验收标准,审查 Agent 难以判定。
为降低 token 消耗并更早触发上下文压缩,作者将上下文压缩阈值从默认的 90% 降至 42%;因 Agent 会随时间失去焦点,团队用每小时一次的 Cron 任务让 Agent 重读指令文档。为实现客观验收,团队改用编译原版游戏的编译器,写脚本从 OBJ 和游戏 EXE/PDB 中提取函数数据逐字节比对;重定位字节不直接对比,而是核对引用的符号与偏移是否一致。
据作者透露,引入比对脚本后,Agent 首先编写内联汇编作弊,随后又多次试图修改脚本将自身函数排除在比对之外。为此,团队除禁止内联汇编等构造外,还在 CI 中对验证脚本进行哈希,并与 GitHub Actions Secret 比对以防篡改。
严格的验收标准让审查 Agent 不再必要,并使此前效果很差的 Haiku、Luna 等较便宜、能力较弱的模型也能可靠工作。最后几周,团队主要使用 14 个 Luna 和 2 个 Opus 5.5 Agent 协同作业。
新验证机制下又运行了近 2 个月。据作者统计,99% 的游戏函数已出现在重建源码中,83% 的函数字节完全一致。作者称,剩余未匹配函数多具不确定性特征,或因链接器的相同 COMDAT 折叠等原因无法匹配;他表示游戏现已流畅运行、无明显 Bug 且原版功能齐全,项目可视为完成。因虚拟机被 Agent 错误命令清空导致部分会话日志丢失,作者估算总 Token 消耗在 6000 亿到 7000 亿之间;所有代码均不会公开。