Anthropic 收购 Bun,Claude Fable 5 用 11 天把百万行 Zig 代码重写成了 Rust

编程基础设施的AI重塑

2026-07-11 19:59

AI 公司开始直接买基础工具链了。7 月 11 日,Anthropic 确认了一桩半年前的低调收购——它在 2025 年 12 月拿下了 JavaScript 运行时 Bun,创始人 Jarred Sumner 带着整个团队加入了 Claude 的阵营。这不是 Anthropic 第一次买公司,但却是第一次把目标瞄准应用层之下的基础设施。

Bun 是什么?你可以把它理解成把 Node.js、npm、esbuild、Jest、npx 全部打包成一个超高速二进制文件的「瑞士军刀」。一个命令装完就能跑 TypeScript、打包、测试、管理依赖,所有事都比 Node.js 快上好几倍。它从 2021 年开始走红,目前月均 CLI 下载量 2200 万,GitHub 上拿了 9 万多颗星。Vercel、Railway、DigitalOcean 这些主流云平台都原生支持 Bun。

更关键的是,Bun 从一开始就是用 Zig 写的。创始人 Sumner 2021 年在 Hacker News 上偶然看到 Zig 的文档,被它的底层控制力吸引,就一个人窝在奥克兰的公寓里,靠着这份热情在一年内搞出了包含转译器、打包器、包管理器、测试运行器和部分 Node.js API 的庞大工程。Zig 给了他极致的性能,但某种程度也埋下了隐患。

Bun 的架构有一个相当罕见的挑战:它要把 JavaScriptCore(一个自带垃圾回收的 JS 引擎)和由 Zig 手动管理的内存混在一起跑。JavaScriptCore 对异常处理和 GC 时机有一整套严格规则,而 Zig 像 C 一样没有构造函数和析构函数,清理工作全靠开发者手动在每个调用点写 defer。这种混合模式在 Bun 的 Bug 列表里留下一串触目惊心的记录——v1.3.14 版本的更新日志里,堆释放后使用(heap-use-after-free)在 zlib 里出现、在 http2 里出现、在 Buffer 操作里也出现,每条修复都像是在修补一根迟早会崩的缆绳。

「我们的 Bug 修复列表让人沮丧,我已经厌倦了每天睡前担心 Bun 会不会崩溃。」Sumner 后来在博客里坦白。团队不是没努力——他们给 Zig 编译器加上了 Address Sanitizer 支持,每个 commit 都跑 ASAN,Windows 版本用 Zig 的安全检查模式发布,还用 Fuzzilli 对运行时做 24 小时不间断模糊测试。但这些手段依然挡不住那些在特定调用路径下才能复现的内存错误。

事情在 Anthropic 入局后有了转机。收购让 Sumner 接触到一个尚未公开发布的模型——Claude Fable 5。他用它做了一个激进的决定:把 Bun 的核心代码整个从 Zig 搬到 Rust。2026 年 5 月 14 日,一个名为「Rewrite Bun in Rust」的 PR 被合并进主分支,6755 个 commit、2188 个文件被变更、约 100 万行代码被重写,前后只用了 11 天

这个数字本身就足够炸裂。一个 9 万多星的基础设施项目,用 AI 在不到两周的时间里完成了一场编程语言级别的全线迁移,而且测试通过率高达 99.8%。但真正值得追问的,不是「能不能跑通测试」,而是「跑通之后还能不能信任」。

Rust 的所有权模型和借用检查器恰好能堵死 Bun 过去一直在跟的那类内存 Bug——编译期就能阻止你在释放后继续访问那块内存。从技术逻辑上看,这个迁移方向完全正确。但 Rust port 的审计页面随后揭示了一个令人不安的数字:当时迁移后的代码里有多达 13,365 个 unsafe 块。官方解释说大部分来自 FFI 边界和遗留的所有权惯用法,约有 9300 个可以后期转成 safe 代码,剩下的 4000 个会保留在必要边界上——但一个以「内存安全」为核心理由的迁移,产出了上万处 unsafe 标记,这个矛盾让不少观望者心生疑虑。

社区的反应比 Bug 本身更复杂。yt-dlp 最先给出了明确态度:把 Bun 支持限定在 1.2.11 到 1.3.14 版本之间——也就是纯 Zig 代码的最后一个稳定区间,理由是该项目的开发方向显示出了「完全 vibe-coded」的趋势。Electrobun 宣布 2.0 版本将与 Bun 解耦。GitHub 上还有一批项目在陆续移除 `bun.lock` 和 Bun API 的依赖,虽然有些迁移动作早于 Rust rewrite,但节奏显然被加速了。

这背后是一场 AI 时代才有的信任危机。传统上,一个大型基础设施项目的核心迁移,需要经过漫长的人肉 Review、公开讨论、渐进式发布。参与贡献的人读过每一段关键逻辑,社区对代码库的「心智模型」是共享的。而当 100 万行代码由 AI 在 11 天内改写完成时,即使测试全部通过,社区也没有任何人「读过」这些代码——因为你不可能在合理时间内人肉审查 100 万行由 AI 生成的 Rust。

「测试通过只说明代码通过了已经写出来的测试,它不能证明没有未覆盖路径,不能证明抽象边界清晰,也不能证明未来维护者能读懂。」CSDN 上一位开发者的评论点出了问题的核心。基础设施项目需要的不仅是「行为相似」,还需要可解释的设计、可追踪的历史、可审查的变更——而这些恰恰是 AI 大规模生成代码最难以提供的。

不过,这件事也不能只往悲观的方向看。Anthropic 为 Bun 带来的资源是前所未有的。Bun 团队过去最大的痛点是「不知道怎么商业化」——拿了 2600 万美元融资却一分钱营收都没有。现在他们不必再想这件事了。Anthropic 明确表示会投入更多资源,把 Bun 打造成构建 AI 时代软件的首选底座,保持开源、MIT 协议、不锁生态。

对于普通开发者和正在用 Bun 的项目来说,最理性的做法不是恐慌式删除,而是把 Bunny 的用途拆开看:如果只是用来 `bun install` 或 `bun test`,风险很低;如果用作生产环境的运行时,就要小心那些接近系统边界的能力——FFI、HTTP 服务器、数据库操作。同时尽量为外部用户提供 Node/Deno 的备选路径。

回头再看整件事,Anthropic 收购 Bun 的意义其实远不止于一条技术新闻。它标志着 AI 公司正在从「用别人的工具开发 AI」转向「控制自己依赖的每一层基础设施」。Claude Code 上线仅半年就做到 10 亿美元年化收入,支撑这个增速的执行循环太重了,把底层的运行时拿到自己手里是唯一的选择。而 Rust 迁移则成了 Claude Fable 5 能力的最佳广告——一笔收购同时买下了控制权和一块活的广告牌。

往后看,更刺激的还在后面。当一个 AI 模型能一周内把百万行基础设施代码跨语言迁移一遍,那下一步就是让 AI 完全接管一个开源项目的核心维护。到那时,信任的边界到底划在哪条线上,可能是整个行业都需要重新回答的问题。

值得警惕的是,Bun 这场风波给所有开源基础设施项目提了一个醒:AI 可以加快迁移,但替代不了信任建设。对底层工具来说,最贵的东西永远是让用户相信这段代码值得跑在自己的服务器上——而这件事,单靠跑通测试集是做不到的。