工具教程 · 小互解读

Anthropic 公开代码迁移六步法:Bun 百万行两周从 Zig 搬到 Rust

配套模板和 prompt 已开源;Bun 那次烧掉 59 亿未缓存输入 token,按 API 价约 16.5 万美元
一分钟速览
  • 把一个跑在生产环境的代码库整体换语言,行业口径是四年、三四百万美元、还很可能搬一半卡死;Anthropic 的人过去一个月搬完了 10 个代码包,Bun 那次一百万行、不到两周、合并前原有测试全绿
  • 整套方法的核心是一句话:不要去修代码,要去修那个生产代码的循环。同一个错在几十个文件里反复出现,正确动作是往规则手册加一句话然后整批重跑,不是一个文件一个文件改
  • 动手之前必须先造一个裁判:把原有测试里能同时跑在新旧两边的挑出来改写成断言,再拿故意改坏的代码验一遍,抓不出坏的裁判不算裁判,没有它你就没有「什么时候算搬完」的判定
  • 工程细节可以直接抄:工作队列每次从磁盘重算所以断了能续,实现用小模型、评审用大模型,两个评审各自独立上下文、吵起来交第三个 Agent 裁决,翻不动的地方统一打 // TODO(port) 留到后面
  • 代价和收益都有账:Bun 那次 59 亿未缓存输入 token + 6.9 亿输出 token,按 API 价约 16.5 万美元;Mike Krieger 那个项目搬完后编译从 8 分钟变约 2 秒,程序启动快 6 倍,还砍掉一整条部署流水线
这是 Anthropic 讲自家模型用法的材料,两个案例的主角都是自己人,成绩数字来自它自己的口径。文中所有数据按此阅读,正文不再逐处标注。
1开场

一个月搬了十个代码包

一百万行代码换一种语言,两周搬完,合并前原有的整套测试在 CI 里全绿。

这是 Anthropic 官方账号 ClaudeDevs 发的一篇实操文,讲他们内部这一个月怎么用 Claude Code 做代码迁移,把一个跑在生产环境的代码库,整体搬到另一种语言上。它把整套流程连同模板一起摊开给人抄,用的是 Claude Fable 5、Claude Opus 4.8 和 Claude Code 的 dynamic workflows。

过去一个月,Anthropic 的开发者搬完了 10 个代码包,规模从几万行到几十万行。文里只展开了其中两个。

Bun · Zig → Rust
100 万行产出的代码量,用时不到两周
100%合并前 Bun 原有测试套件在 CI 的通过率
19 个合并后浮现的回归原来好好的功能,改完代码之后坏了。跟「新功能有 bug」不是一回事。,已全部修复
6 月Rust 版已经装进 Claude Code 在跑
Mike Krieger · Python → TypeScript
一个周末搬出 16.5 万行 TypeScript
几百个这次迁移里用到的 Agent 数
8 道阶段闸门把整条流程切成几段,每段结束设一道检查,过不了就不许进下一段。,外加 3 轮对抗式评审
逐条命令最后把新旧两边每个命令的输出 diff 一遍对账

做 Bun 迁移的是 Jarred Sumner,Bun 的联合创始人,现在是 Anthropic 的技术员工。做 Python 那个的是 Mike Krieger,Instagram 联合创始人,现在是 Anthropic Labs 的联合负责人。

Jarred Sumner 那个百万行 PR 的 GitHub 页面
Jarred 那个百万行 PR 的 GitHub 页面。图片来源:ClaudeDevs 原文
2门槛变化

以前为什么没人敢干

Jarred 当初选 Zig,是因为它能给到 C 那个级别的性能,同时足够简单,用他自己的话说,那是在奥克兰一间狭小公寓里、还没有大模型的年代,一个人花一年写出 Bun 的前提。简单是有代价的,代价一直摆在那儿。Bun 的命令行工具现在月下载量超过一千万,Claude Code 内部也在大量用它。

就在上个季度,这些代价还不足以让人冻结路线图、把资源押进一个跨好几个季度的项目。

上个季度之前
  • 四年周期,300 到 400 万美元的工程资源
  • 期间路线图冻结
  • 两套代码库并行维护好几个季度甚至几年
  • 最差结果是拿到 90% 的相似度,比开工前更麻烦
现在
  • 几万到几十万美元量级,仍然是真钱
  • 最差结果是删掉分支,重来一次
  • 动手理由不再需要「不搬就活不下去」
  • changelog 里躺了一年的内存 bug 补丁,或者一个长期卡脖子的瓶颈,就够了

Mike 的项目就是被一个瓶颈逼出来的。他团队做的那个内部工具要打包成单个可执行文件发给用户,Python 那套工具链每个平台编译要八分钟左右,整个构建矩阵跑完,每次发版都得等三十分钟。搬到 TypeScript 之后,同样的编译约两秒,可执行文件启动快 6 倍,团队顺手退役了一整条独立的部署流水线。

3核心原则

同一个错反复出现,就去改规则

整篇文章最值钱的是这一句:

The core insight is that you don't fix the code. You fix the process (loop) that produced the code.核心认识是:你不要去修代码,你要去修那个生产代码的流程(循环) · ClaudeDevs

它落到具体动作上是这样的:一个评审 Agent 在几十个文件里反复抓到同一个错,你的手不该伸向那几十个文件。你往规则手册里加一句话,然后把受影响的那一批重新生成一遍。规则手册在整个过程里只会越长越厚,代码从来不被手工打补丁去迎合它。