卡码笔记-最强八股文
首页
计算机基础
C++
Java
Go
🔥大模型🔥
  • 大模型面经
  • Java面经
  • C++面经
简历专栏
秋招投递表
代码随想录 (opens new window)
首页
计算机基础
C++
Java
Go
🔥大模型🔥
  • 大模型面经
  • Java面经
  • C++面经
简历专栏
秋招投递表
代码随想录 (opens new window)
  • 本栏必读

    • 卡码大模型专栏介绍
  • 大模型面经

  • 大模型动态

  • Claude深度解读

    • 百万行代码两周迁完:Claude Code大规模迁移
      • 两个数字,先把迁移规模摆出来
      • 为什么代码迁移特别适合多 Agent
      • 动手前,先造一个能判新旧代码的裁判
      • 六步迁移,最重要的工作都发生在大规模翻译前
      • 百万行迁完了,账也要算清楚
      • 最后
      • 参考链接
    • Claude Code能力演进:从CLAUDE.md到Subagents
    • Claude Skills实战:9大分类和写好Skill的经验
    • Claude Managed Agents:把Agent大脑和双手拆开
    • Claude Code动态工作流:让Claude自己写harness
  • 入门认知

  • Prompt与调用基础

  • RAG检索增强

  • Agent智能体

  • 微调认知

  • 部署与工程化

  • 多模态入门

  • Transformer原理

  • 手撕Transformer

  • 模型家族与Llama架构

# 百万行代码两周迁完:Anthropic如何用Claude Code做大规模代码迁移

今天聊 Claude Code的最新博客。

前面我们在 动态工作流 里讲过,Claude 可以现场写 harness,把任务拆给一队 Agent;又在 Loop Engineering 实战 里讲了怎么用测试、状态和停止条件守住循环。

Anthropic 最新这篇博客(https://claude.com/blog/ai-code-migration),正好给了一个最硬的生产案例:拿 Claude Code 迁移整套编程语言,而且不是几千行 Demo,是百万行生产代码。

# 两个数字,先把迁移规模摆出来

第一个案例是 Bun。Jarred Sumner 用 Claude Code 把 Bun 从 Zig 迁到 Rust,不到两周产出 100 万行代码,合并前 CI 中原有测试全部通过。合并后暴露了 19 个回归,目前已经全部修掉。

第二个案例来自 Anthropic Labs。Mike Krieger 用一个周末,把 Python 代码库迁成 16.5 万行 TypeScript。过程中跑了数百个 Agent、8 道阶段闸门、3 轮对抗审查,最后逐条 diff 新旧程序的命令输出。

Anthropic 过去一个月一共迁了 10 个代码包,每个包都有数万到数十万行。

注意,这不是“Claude 一次把代码翻译对了”。真正让规模迁移成立的,是它把迁移改造成了一条可以反复运行、机械验收、失败后继续收敛的生产线。

代码迁移流水线

人不再追着每个文件改。人负责规则、裁判和异常模式,Agent 负责把队列烧完。

原文那句最值钱的话可以翻成:别修代码,修产生代码的循环。

# 为什么代码迁移特别适合多 Agent

大规模迁移刚好满足 Agent 最喜欢的几个条件。

工作能并行。 上千个文件、crate 或模块可以切成独立批次,不需要一个 Agent 从头写到尾。

旧代码就是规格。 需求文档可能缺,但原程序已经把行为写出来了。Agent 可以同时对照源语言、目标语言和真实输出。

有机械裁判。 编译器、冒烟测试、完整测试套件、命令输出 diff,都能明确告诉 Agent 对还是错。失败结果还会自动变成下一轮任务队列。

规则可以向后传播。 一个 Agent 发现边界问题,不是只补当前文件,而是把解法写回迁移规则,后面的 Agent 全部按新规则执行。

这也是它和普通“批量翻译代码”的根本区别:并行只负责提速,统一规则和机械验收才负责不失控。

# 动手前,先造一个能判新旧代码的裁判

Anthropic 把强裁判列为前置条件。没有它,你连“迁完了”是什么意思都说不清。

很多旧测试会直接调用源语言内部函数,换语言后根本跑不了。正确做法是先把测试分类,挑出可以通过外部接口表达的行为,再改造成能同时打在新旧程序上的可移植测试。

裁判还必须做一次反向验证:原程序应该通过,故意破坏的程序必须失败。抓不住已知错误的测试,不是裁判,只是安慰剂。

Mike 没有现成的跨语言测试,就做了 7 个真实场景的 parity harness,把 Python 和 TypeScript 输出逐项比较,任何行为差异都算 Bug。

# 六步迁移,最重要的工作都发生在大规模翻译前

第一步,建立规则手册、依赖图和差距清单。

规则手册先规定类型、惯用法和架构怎么映射;依赖图决定哪些文件先迁、哪些必须放在同一批;差距清单专门记录无法直接翻译的隐性知识,比如 Zig 的手动内存管理怎么落到 Rust 所有权,Python 的动态对象怎么变成 TypeScript 接口。

顺序不能反。先定默认规则,再找默认规则盖不住的差距。

第二步,用小样本把规则撞一遍。

Bun 迁移时,一个 Agent 按规则翻 3 个文件,另一个 Agent 像资深 Rust 工程师一样翻同样的文件,第三个 Agent 比较差异并补规则。只跑这轮小实验,就提前抓到两个会扩散到 1448 个文件的关键问题。

迁移规则压力测试

这里最反直觉的是:试迁出来的代码全部扔掉。 这一轮的产物不是代码,是更可靠的规则。结构不保留的重设计也一样,先让对抗 Agent 攻击设计文档,再做一次可丢弃的端到端迁移。

第三步,再把翻译任务铺开。

批处理脚本从磁盘重建待办队列,“目标文件存在”才算完成,所以任务天然可以暂停、恢复。高吞吐翻译交给较小模型,写规则和做审查留给更强模型。两个独立审查 Agent 意见不一致,再交给第三个 Agent 仲裁。

如果同一种错误反复出现,别手补十个文件。给规则手册加一句,再重新生成受影响的那一批。

第四到第六步,依次编译、运行、对齐行为。

编译错误由 fixer agents 分批处理;崩溃交给冒烟测试;最后把新旧程序放到同一套测试或真实场景里比行为。昂贵的全量构建由单独的 build daemon 串行执行,避免几十个 Agent 同时抢着重编。

迁移故障反馈闭环

这时人的注意力不该放在某一个红叉,而要看哪些红叉总以同一种方式出现。单点失败交给 loop 消耗,重复模式才值得人修改上游规则。

# 百万行迁完了,账也要算清楚

AI 把语言迁移从“多年豪赌”变成了“昂贵但可以重跑的工程实验”,不等于免费。

Bun 迁移消耗了 59 亿 uncached input tokens 和 6.9 亿 output tokens,按 API 价格约 16.5 万美元。但过去百万行迁移可能是 4 年、300 万到 400 万美元的人力项目。最坏情况也从“维护两套半成品几年”,变成“删掉分支,改好规则再跑一次”。

效果也不是只看行数。Bun 的一个 2000 次重复构建基准,内存占用从 6745 MB 降到 609 MB;Linux 和 Windows 二进制缩小 19%,部分真实负载快了 2%~5%。不过约 4% 的 Rust 代码仍在 unsafe 块里,说明迁移不会凭空消灭底层边界。

Python 到 TypeScript 的项目也有明确收益:原来每个平台编译约 8 分钟,整个矩阵要等 30 分钟;迁移后约 2 秒,启动快 6 倍,还删掉了一条独立部署流水线。

所以别因为“Claude 能迁”就迁。业务收益、测试裁判、Token 预算、审查能力,四样缺一个,都可能把漂亮 Demo 变成昂贵烂尾。

# 最后

这篇博客真正改写的,不是“AI 会不会翻译 Rust”。

它改写的是大项目的风险结构:以前人怕迁到 90% 后骑虎难下,现在可以先把裁判和规则做扎实,再让机器反复重跑。

代码可以重生成,规则必须能解释,结果必须由机器验。

# 参考链接

  • Anthropic 官方博客(How Anthropic runs large-scale code migrations with Claude Code):https://claude.com/blog/ai-code-migration
Last Updated: 7/22/2026, 11:08:55 AM

← DeepSeek V4-Pro永久降价75% Claude Code能力演进:从CLAUDE.md到Subagents →

评论

验证登录状态...

侧边栏 侧边栏
夜间模式 夜间
卡码简历 卡码简历
代码随想录 代码随想录
卡码投递表 卡码投递表🔥
2026实习校招群 2026群
添加客服微信 2026实习校招客服微信 PS:通过微信后,请发送姓名-学校-年级-2026实习/校招
支持卡码笔记 支持卡码笔记
鼓励/支持/赞赏Carl 卡码笔记赞赏码
1. 如果感觉本站对你很有帮助,也可以请Carl喝杯奶茶,金额大小不重要,心意已经收下
2. 希望大家都能梦想成真,有好的前程,加油💪