首页 › use-cases › AI无人值守8小时,84天反编译N64

你有没有想过一个问题:让 Claude 自己干活、没人盯着,连续跑 8 个小时,它会不会把你的额度烧光还交白卷?澳大利亚开发者 Chris Lewis 用一场长达 84 天的实战给出了答案:不但不会,进度反而是人肉指挥时的 4 倍。他让 Claude 以 headless(无头)模式循环反编译任天堂 N64 游戏《Snowboard Kids 2》,采用这套工作流后的 3 周,干完了之前 3 个月的活。这个案例 2026 年 8 月 27 日登上 Hacker News 首页(标题《Decompiling a Nintendo 64 game in 84 days》,176 分),但国内几乎没人拆解过它背后那套「放养式 Agent 工作流」——这恰恰是今天最值得抄的东西,因为它能平移到任何批量处理任务上:批量迁移老代码、批量补测试、批量修 lint。这篇文章把他的完整打法、避坑手段和成本账全部拆给你看。

一、案例档案:他是谁,干了什么

二、核心工作流:四个组件缺一不可

他在博客《The Unexpected Effectiveness of One-Shot Decompilation with Claude》里把系统拆成四层,这个分层本身就是最好的架构教材:

flowchart TD
    A[启动 vacuum.sh] --> B[Scorer 打分器<br/>选出最可能匹配成功的函数]
    B --> C[Claude headless 模式<br/>claude -p 接收单个函数]
    C --> D{10 次尝试内匹配成功?}
    D -- 是 --> E[集成进主项目<br/>build-and-verify.sh 校验<br/>checksum 一致则 git commit]
    D -- 否 --> F[写入 difficult_functions 日志<br/>退出本轮]
    E --> G{还有可匹配函数?}
    F --> G
    G -- 是 --> B
    G -- 否 --> H[结束]
    C -. 返回非零/额度耗尽 .-> I[Driver 退避重试<br/>最长每 5 分钟一次]
    I --> B

1. Scorer(打分器)——让 AI 先挑软柿子捏。 初版公式很朴素:score = 指令数 + 3×分支数 + 2×跳转数 + 2×标签数 + 栈大小,分数越低越先做。攒了几百个成功/失败样本后,他用逻辑回归重新拟合权重,结果发现栈大小几乎没有预测价值还有过拟合风险,直接删掉;而且他最初手拍的权重和模型拟合出来的差距很大。这给所有人的启示是:别凭感觉给任务排优先级,用数据调。

2. Claude(干活的)——one-shot 模式。 每次只给一个函数,做完即退出,没有多轮对话。核心提示词只有五条:建匹配环境→用工具反编译→太难就放弃(10 次尝试无进展就走人)→匹配成功就集成、验证、commit→失败就记日志退出。作者特别强调 commit 是保命机制:哪怕 Claude 后来把本地环境搞崩了,进度也丢不了。

3. Toolbox(工具箱)——故意不用 MCP。 他给 Claude 的全是简单的、Unix 风格可组合的小脚本。但重点在「防御性工具设计」:build-and-verify.sh 的输出里直接写着 “BUILD HAS FAILED. Claude, you should treat this as a build failure.”——因为 Claude 经常把失败误判成成功。还有目录级的 %.: make 规则,内容是一段提醒文字,防止 Claude 在匹配环境和主项目之间迷路。他的结论值得画线:防御性工具设计比提示词工程管用得多。

4. Driver(驱动器)——一个 bash 循环。 逻辑极简:调 Claude→返回非零就退避(最终节奏是每 5 分钟一次,防止撞额度限制)→trap Ctrl-C 保证停止信号不会杀掉正在进行的尝试→全部输出追加到日志文件。8 小时无人值守就是这么来的。

三、成本与 ROI:这笔账怎么算

博主没有公开精确费用,但有几个可靠锚点:整条流水线消耗的是 Claude 订阅额度(文中明确出现「额度耗尽」和按 5 分钟间隔退避的描述,说明走的是包月额度而非按 token 计费的裸 API);真正的变量是人力时间——反编译社区以往最稀缺的资源就是少数专家的时间,这套流程把瓶颈直接从「人的注意力」挪到了「算力和模型访问额度」上。ROI 用他自己的数据衡量:3 周自动化 > 3 个月人工,吞吐提升约 4 倍,且全程无需值守。另一个关键实验:Sonnet 4.5 判定「太难」的 7 个函数里,Opus 4.5 能匹配 5 个——复杂任务上模型档位不能省。顺带一提,他试过当时风头正劲的 Codex(含 5.1-codex-max),结果不佳:反编译策略差,Git 操作还经常出错,两者叠加基本不可用。

四、同款思路的两个民间案例

这套「AI 替我干重复活」的思路,本周 r/SideProject 周榜上还有两个可以照抄的变体:

五、信息差总结

维度 你可能知道的 你不知道的
Agent 用法 对话式、人盯着改 headless 一次性任务 + bash 外循环,无人值守 8 小时
任务分配 AI 自己决定做什么 用打分器+回归模型先挑最容易的,成功率最大化
防跑偏 写更长的提示词 把纠错写进工具输出里,防御性工具 > 提示词工程
止损机制 靠人判断 硬编码「10 次无进展即放弃」+ 每步 commit 保住进度
选型 哪个模型新用哪个 同一任务 Sonnet 判死刑的题 Opus 能做对 5/7

六、行动指南

  1. 打开博客原文(见参考来源[1]),通读「防御性工具」一节,这是全文精华。
  2. 把你手头一项重复性工作(批量补测试/迁移/重构)拆成原子任务,写一个 20 行的 bash 循环驱动 claude -p。
  3. 给每个任务定义机器可判定的成败标准(测试通过/编译通过/checksum 一致),成功即 commit。
  4. 记录每轮成败数据,攒够 100 条后用一个简单回归模型重新排任务优先级。
  5. 设置退避策略:非零退出码→指数退避,上限 5 分钟,防止烧穿额度。

参考来源

  1. Chris Lewis 博客原文(工作流全文):https://blog.chrislewis.au/the-unexpected-effectiveness-of-one-shot-decompilation-with-claude/
  2. HN 首页 2026-08-27(84 天总结帖收录):https://news.ycombinator.com/front?day=2026-08-27
  3. 同博客调试工作流续篇:https://blog.chrislewis.au/finding-jingle-town-debugging-an-n64-game-without-symbols/
  4. r/SideProject 本周热榜(民间案例):https://old.reddit.com/r/SideProject/top/?t=week

本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵爱卫生(微信ID: gprshome201101)维护。 聚焦5G/6G核心网、3GPP标准、AI工具实战。知识星球「51学通信」提供深度技术答疑和行业洞察。

[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。

51学通信知识星球海报-扫码加入