桃子桃子快讯
返回首页
工具

用 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 协作中更可控的任务载体。

项目仓库目前仍为私有,作者表示在功能更完整后会考虑公开。

信源