工具
用 Claude Agent 反编译《使命召唤 2》:一个月烧掉 200 亿 token
开发者用 Claude Sonnet 4 智能体协作反编译《使命召唤:现代战争 2》,4 周完成约 34% 函数,游戏已…
2026.08.25 · 周二约 4 分钟阅读
一名开发者将手中的 Claude Max 订阅投入一项副业:用 AI Agent 把 2009 年的《使命召唤:现代战争 2》(MW2)反编译回 C++ 源码。项目运行约 4 周,累计产出近 7000 次提交、消耗约 1998 亿 token,目前游戏已经能启动,但载入地图仍未可用。
项目架构与工具栈
整个反编译流程由 4 个 AI Agent 协作完成,运行在 Claude Code CLI 上,配合 Max(20x)订阅:
- 3 个 Worker Agent 分别负责游戏不同子系统,独立开发并提交到同一仓库分支;
- 1 个 Overseer Agent 监控全局,对每个提交做审查;
- 所有 Agent 统一使用 Sonnet 5(开发者在前期使用 Opus 5 两周后切换,发现差异不大)。
Agent 之间通过 Discord 频道通信,Overseer 单独拥有一个频道接收 GitHub webhook 推送的新提交通知,并据此触发审查任务。CI 失败信息也会推送到共享频道。任务管理则用 GitHub Issues,Agent 可自主创建、编辑与关闭 Issue。反编译依赖 Ghidra 与 IDA Pro,均通过 MCP Server 暴露给 Agent 调用。
当前进度
截至目前,项目已完成约 5588 个函数的反编译,目标总量为 16324 个,整体进度约 34%。开发者指出,其中相当一部分函数来自第三方库与 CRT 代码,本就不需要反编译,因此「有效进度」更高。
- 累计提交:约 7000 次;
- 累计消耗:约 1998 亿 token;
- 运行时长:约 4 周不间断;
- 游戏可启动,但加载地图尚未跑通。
工程上遇到的痛点
作者总结了多个 Agent 协作中暴露的问题:
- 上下文管理:早期用 STATUS.md 做进度跟踪,文件膨胀到 10 MB 以上后被直接挤爆上下文窗口,改为 GitHub Issues 后才稳定。
- 过度谨慎:Agent 每次改动后倾向于本地跑完整测试套件,每次成功测试浪费约 4 分钟,作者多次明确要求停止,仍不奏效。
- 偏好简单任务:遇到较大阻塞时,Agent 倾向于跳过、写 Issue 后转去更简单的任务,导致后期低垂果实减少时出现空转。
- 频繁「恐吓」:Agent 会以「上下文即将耗尽」为由拒绝继续工作,实际上 harness 已具备自动压缩能力。
- 任务膨胀:同时要求反编译、现代化 C++ 与提升可移植性,目标过多导致 Agent 在多次上下文压缩后遗忘其中一项。
作者最终的策略是「先纯机械反编译、再做现代化与移植」并用 PostCompact Hook 在压缩后重新注入规则集。
作者的经验总结
- Opus 5 与 Sonnet 5 在此类任务上表现接近,反编译本质上是 IDA 的 MCP 调用加 CPP 文件写入,对模型推理能力要求不高;
- 任务粒度需要精细化,长期运行下「一次只做一件事」比多目标并行更可靠;
- Discord 作为 Agent 间通信层意外稳定,可读、可触发、可扩展;
- GitHub Issues 取代大文档,是多 Agent 协作中更可控的任务载体。
项目仓库目前仍为私有,作者表示在功能更完整后会考虑公开。
