Bun 创始人 11 天用 Claude 重写 53 万行 Zig 到 Rust:64 个 Agent 并行跑出的百万行代码,到底能不能信?
上周四晚上刷到 Bun 创始人 Jarred Sumner 的博客时我第一反应是看日期——不是愚人节吧。他只用11 天把 Bun——这个被几十万开发者天天用的 JavaScript 运行时——从53.5 万行 Zig 代码整个重写成了 Rust。而且写这 100 万行代码的不是人类是 Claude。64 个 Claude 实例并行跑了 11 天产生59 亿uncached 输入 token、6.9 亿输出 tokenAPI 账单16.5 万美元。没有让团队冻结一年做重写没有漫长的迁移期一个人盯着 50 个动态 workflow11 天后 100% 测试通过128 个 bug 全部修复。说实话看到这些数字时我一方面觉得震撼一方面想起了去年用 AI 写过的那 10 万行代码和后来花两周删掉的 6 万行。AI 写的代码到底能不能信任100 万行未经全部人工审查的代码直接合并进生产环境这合理吗1. 不是 Zig 不好是 GC 和手动内存管理混在一起真的太痛了Bun 当初选 Zig 是有充分理由的。Sumner 在博客里写了一句话我特别认同:如果不是 ZigBun 根本不可能做出来。2021 年他在奥克兰一间逼仄的公寓里没有任何 AI 辅助用一年时间从零写出了 Bun 的第一版。Zig 给了他对底层内存的完全控制权这是 Go 和 JavaScript 都给不了的。Bun 要做的是比 Node.js 快 4-5 倍的 JS 运行时在几百微秒内启动、每秒处理数万请求。只有 Zig 级别的底层控制能做到。但三年半跑下来问题开始积压。Bun 的架构里有一个很难绕过去的矛盾: 它同时用了Boehm 垃圾回收器和 Zig 的手动内存管理。Boehm 是一个保守式 GC——它不知道哪些指针是真正的引用只能通过扫描堆栈来猜测存活对象。当 GC 和手动管理混合使用时就会出现一类特别恶心的 bug——你手动 free 了一块内存但 GC 认为它还在用或者 GC 回收了内存但你的 Zig 代码还持有指针。Bun 的用户报告过不少随机崩溃重启后消失这类最难排查。Sumner 的原话很直接:我们的 bugfix 列表让我很痛苦我厌倦了每天睡前还在担心 Bun 的崩溃。截至重写前Bun 在 GitHub Issues 里积累了128 个已知 bug其中近一半是内存相关的——use after free、double free、segfaults。而且修复一个往往引出两个新的因为 Zig 的编译期保障不足以覆盖跨 GC/手动边界的错误。核心问题是: Zig 不是为带 GC 的运行时设计的Bun 的需求超出了它当初选择的舒适区。Rust 的所有权系统和 borrow checker恰好能在编译期截住这类问题。同样的 bug在 Zig 里可能要跑数小时压力测试才能抓到在 Rust 里直接编译报错。Bun 的用户测试过 Rust 版本后发现 128 个 bug 中相当一部分在 Rust 版本中根本不可能出现——编译期就卡住了。这不是语言好坏的问题是语言匹配度的问题。Bun 的核心矛盾手动内存 GC 共存在选择 Zig 时还不明显跑了三年后变成了结构性负担。2. 一个实验: 从试一下到决定了全部重写Sumner 最初并没有计划重写。他当时在测试 Anthropic 的预发布模型——后来的Claude Fable 5——能不能做代码迁移的自动化工作。Zig 到 Rust 最初只是一个实验他甚至没预期能跑通。实验的目的很简单: 看看让 AI 理解一段 Zig 代码然后输出对应的 Rust 代码质量能不能接受。结果让他自己都意外。实验开始后几天测试套件的通过率快速爬升。他描述那个时刻:最开始我觉得值得试试几天后看到越来越多测试通过想法变成了我打算把这个合并进去。从实验到决定合并大概用了不到一周。这个测试套件是整件事的基石。Bun 的测试是用TypeScript 写的超过 100 万个断言覆盖了全部核心功能。因为 TypeScript 测的是运行时的外部行为——API 响应是否正确、文件读写是否正常、HTTP 请求能否处理——不是内部实现它天然就是语言无关的。只要 Rust 版本通过了同样的测试就意味着对外行为一致。这套策略在其他案例中也反复被验证:测试套件越完备AI 重写的成功率越高。如果你的项目测试覆盖率只有 20%AI 生成的代码你不敢合。但如果你有上万条断言精确定义了正确行为AI 的输出就有了可验证的准绳。Bun 成功的关键不是 Fable 5 多强而是那个百万级断言套件给了验证这个环节足够的置信度。Bun 的测试从 2021 年就开始积累三年半的 TypeScript 测试代码比 Zig 代码本身还庞大。3. 64 个 Claude 并行跑 11 天——不是有钱任性是有策略的并行化很多人看到新闻的第一反应是16.5 万美元换 11 天有钱任性。我读完技术细节后发现这钱花得比想象中聪明。Sumner 不是开了 64 个独立的 Claude 实例各写各的。他用了大约50 个动态 workflow——Claude Code 的特性。每个 workflow 内部维持多个子 agent各自负责一个小模块的转换root agent 统筹接口对齐和依赖管理。峰值时4 个 workflow 同时运行每个 16 个 Claude总共 64 个并发。每分钟产出约1300 行代码11 天总计超过 100 万行 Rust产生了6502 个 commit峰值每小时 695 个 commit。这个架构的关键在于隔离: 每个子 agent 在独立的 git worktree 里运行。如果一个 workflow 的某个模块转换出了问题不影响其他模块的进度。Sumner 可以单独暂停有问题的 workflow修改 prompt重启而不干扰整个流水线。这比一个 AI 帮你写一整天要可靠得多。更值得关注的是 token 消耗:59 亿 uncached 输入 token、720 亿 cached token reads、6.9 亿输出 token。为什么写出 100 万行代码需要读 59 亿 token每个子 agent 写代码前要先读取对应模块的 Zig 源码来理解逻辑。Bun 有 1448 个 .zig 文件覆盖 53.5 万行代码。每次 agent 要把整个模块读完才能翻译。长文件还要分段读取——Agent 的上下文窗口有限超过窗口的内容无法一次性处理文件越长分段越多token 消耗成倍增加。11 天里 Sumner 本人做的事情不是等着。他大部分时间在手动检查 workflow 的输出——读 diff、看测试报告、判断模块转换质量。如果发现某个模块有系统性问题比如某类 Zig 惯用法被翻译成了低效的 Rust他不是逐行改代码而是修改 workflow 的 prompt 或修复循环让 agent 下次自动用正确方式生成。他修的是过程不是结果。此外还要处理 64 个 agent 并行时的协调问题——不同的子 agent 可能对同一个 Rust crate 版本产生冲突两个 workflow 同时修改同一个接口定义——这些问题在自动化生成中比手写更突出。4. 代码可以编译通过但不代表它就是好代码这件事在 Rust 和 Zig 社区掀起了激烈讨论。Zig 创始人Andrew Kelley的回应尤其尖锐。他直接把这批 100 万行新代码称为未经审查的垃圾代码。核心论点: 测试套件能验证行为不能验证代码质量。一个实现可以通过所有测试但内部结构、错误处理一致性、性能特性可能完全是乱的。Kelley 讽刺地说:如果测试套件好到足以抓住 Zig 版本里漏掉的所有 bug那为什么它不足以让你信任经过人工 review 的 Zig 代码相同的测试套件没有阻止 128 个 bug 进入 Zig 版本凭什么相信它能兜住 Rust 版本我仔细想了想这个逻辑。一方面Kelley 说的有道理——测试通过不意味着代码没问题。但另一方面Sumner 切换语言的目的正是一类 bug 从运行时移到编译期。从结果看Rust 版本跑了一个月新 bug 数量显著下降。Claude Code 自己就在用 Rust 版 Bun——如果真有大问题Anthropic 自己先受害了。更棘手的问题在长期维护。535 496 行 Zig 分布在 1448 个 .zig 文件中每块都有对应的 agent 生成的 Rust 版本。100 万行代码里可能不到 5% 被人类完整读过。Sumner 读了 workflow 输出、看了差异、跟踪了测试——但他没有逐行 review。这带来的问题是: 测试覆盖了已知行为模式但 AI 可能在边缘路径上生成了一段人类不会写的代码——逻辑对但难以维护。如果过几个月需要修改某个模块接班的人面对的是一段看起来正常的 Rust 代码但没人记得它是怎么来的。不过 Sumner 的回应也有道理: Bun 的 100 万个断言是手写的 TypeScript每一条背后都有人的意图。AI 生成了 Rust 版本但这些断言是人类的签名。Bun 的新版本上线一个月Claude Code 从 v2.1.181 开始切换到 Rust 版 Bun启动快 10%几乎没人注意到这个变化128 个 bug 全部消失。工具变强了但判断好代码的标准不能跟着降。5. 这件事到底意味着什么——不是技术问题是信任机制的问题我不觉得 Bun 的做法可以直接复制到每个项目上。Fable 5 不对外开放16.5 万美元预算不是每个团队都有百万级测试套件是多年积累的硬资产。但这件事揭示了一个正在发生的深层转变:AI 已经开始承担模块级重写的任务。一个工程师加 50 个 workflow11 天完成小团队一年的工作量——已经不是效率提升是量级变化。我自己从这件事拿走的一个操作: 这周给项目的测试套件加了 CI 门槛——任何新功能必须先写测试再加代码。不是因为 KPI是因为看到了一个现实:测试套件的质量决定了你能在多大程度上信任 AI 生成的代码。你不需要现在就决定要不要用 AI 重写但你今天可以决定我的测试套件够不够强。如果有一天你也面临让 AI 重写一个模块的决策你的测试套件就是你的底气。当 AI 生成的代码量从辅助补全走向模块级重写整个行业需要新的验证机制。我们不可能逐行 review AI 生成的百万行代码——那不是 review是通读。也许答案是更严格的编译期检查。也许答案是自动化的形式化验证。也许答案是 AI 代码专用的审查流水线——就像人类代码从直接上线进化到 CI/CD review staging 一样。Ponytail 在做反过度工程审查OMO 在做 agent 验证层Bun 的 100 万个断言本质上也是同一件事: 让验证从人工检查每一行变成自动验证所有行为。这件事对开发者工具的启发可能比表面上的故事更深。当 64 个 agent 能在 11 天内完成语言迁移我们离AI 参与架构决策还有多远测试驱动的范式质量保障的自动化流程即代码——这些概念其实早在 Bun 之前就存在了但 Bun 把它推到了一个新的量级: 不是 AI 辅助人类而是人类设计流程、AI 执行流程、测试验证结果。这个三角关系可能是未来几年软件工程的核心模式。我不知道最终答案是什么。但我知道: 64 个 Claude 并行重写这个方案一年前不存在现在它存在了而且被验证过了。剩下的问题——怎么信任 AI 生成的代码——是我们整个行业要去适应的。这个适应过程可能比想象中更快。毕竟 11 天前Bun 还在用 Zig。回到最初那个问题: 64 个 AI 同时工作生成 100 万行代码一个人 11 天完成一年的工作量这到底是好消息还是坏消息我的答案是: 既是好消息也是坏消息。好消息是我们以前不敢做的事——大规模重写、全量迁移、彻底重构——现在可以做了。坏消息是那些以前靠读一遍所有代码来保证质量的做法已经不再适用了。而我现在每天在终端里敲 claude已经习惯了通过 workflow 批量处理任务的节奏——等我真正需要做一次模块级迁移时希望我的测试套件已经准备好了。因为当 AI 能每天产出百万行代码的时候测试套件就是你和灾难之间的那道闸门。回到最初那个问题: 64 个 AI 同时工作生成 100 万行代码, 一个人 11 天完成一年的工作量, 这到底是好消息还是坏消息? 我的答案是: 既是好消息也是坏消息。好消息是, 我们以前不敢做的事——大规模重写、全量迁移、彻底重构——现在可以做了。坏消息是, 那些以前靠读一遍所有代码来保证质量的做法, 已经不再适用了。当生成代码的速度远超审查代码的能力时, 信任必须从人工检查转移到自动验证。

相关新闻

《红色沙漠》1.12.01版本神级Mod整合包实战部署教程

《红色沙漠》1.12.01版本神级Mod整合包实战部署教程

随着《红色沙漠》更新至1.12.01版本,为了提升玩家的探索与战斗体验,本指南提供了一套经过深度测试的Mod整合包部署方案。该整合包重点优化了女性角色外观、商店系统以及各项基础操作逻辑。通过合理的配置与挂载,玩家可以在新版本中获得更为流…

2026/10/20 15:53:30 阅读更多 →
AI如何自动识别技术方案缺失导致废标废标风险?智能评审项目实践

AI如何自动识别技术方案缺失导致废标废标风险?智能评审项目实践

这里写自定义目录标题欢迎使用Ma rkdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个…

2026/10/17 2:03:34 阅读更多 →
AI如何自动识别项目经理资格废标风险?智能评审项目实践

AI如何自动识别项目经理资格废标风险?智能评审项目实践

这里写自定义目录标题欢迎使用Ma rkdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个…

2026/10/20 2:13:24 阅读更多 →

最新新闻

5分钟粒度时间序列预测:ARIMA全流程实战与坑点解析

5分钟粒度时间序列预测:ARIMA全流程实战与坑点解析

数据准备:5分钟数据的“脏活累活” 2.1 采集与落库,先解决有没有的问题 2.2 缺失值处理,别让“空洞”骗了模型 2.3 异常值甄别,业务噪声与真实波动的边界 2.4 重采样与对齐,把时间轴捋直了 数据是一切时序建模的地…

2026/10/20 16:43:46 阅读更多 →
降AIGC软件横评:9类工具原理、避坑与实操流程

降AIGC软件横评:9类工具原理、避坑与实操流程

最近这段时间,被问得最多的问题就是“到底有没有靠谱的降AIGC软件”。经常是头像一换,那边甩过一张截图,问“这种标红要怎么办”。尤其专科生群体,课程报告、实训总结、毕业设计说明一摊开,全是AI生成常见句式&#xf…

2026/10/20 16:43:46 阅读更多 →
Apache Pulsar 2.9.1 部署实战:从解压到集群调优的完整指南

Apache Pulsar 2.9.1 部署实战:从解压到集群调优的完整指南

简介:Apache Pulsar 2.9.1 的二进制发行包,面向需要搭建高吞吐消息队列与实时流处理管道的后端开发、架构师和云原生运维人员,解决分布式消息中间件选型与自建集群时的环境前置问题。压缩包约 321.53MB,为 tar.gz 格式&#xff0c…

2026/10/20 16:43:46 阅读更多 →
AI Agent任务规划、状态管理与长任务恢复:从原理到最小实现

AI Agent任务规划、状态管理与长任务恢复:从原理到最小实现

1. 从“能聊天”到“能干活”:任务规划到底在解决什么问题 很多人第一次接触 AI Agent,脑子里想的还是“更聪明的聊天机器人”。但真正做过 Agent 项目的人都知道,聊天只是最表层的能力,真正决定一个 Agent 能不能落地干活的&…

2026/10/20 16:43:46 阅读更多 →
Python AI编程入门指南:机器学习、深度学习、NLP与强化学习实战

Python AI编程入门指南:机器学习、深度学习、NLP与强化学习实战

1. 从零到一:为什么我建议你用Python切入AI编程很多人第一次接触AI编程,脑子里冒出来的第一个问题不是“怎么学”,而是“从哪开始”。我见过太多人抱着厚厚的数学书啃了三个月,结果连一行能跑的代码都没写出来,最后热情…

2026/10/20 16:43:46 阅读更多 →
医学图像处理代码实战:从DICOM读取到三维重建与分割

医学图像处理代码实战:从DICOM读取到三维重建与分割

前一阵有个刚转行做医学影像算法的朋友来找我,说他从某医院那边拿到了一批脱敏后的CT数据,文件夹里装着一堆后缀为 .dcm 的文件。他第一反应是像处理普通照片一样用 OpenCV 直接读,结果 cv2.imread 返回一大片乱码。这个场景我太熟悉了&#…

2026/10/20 16:42:44 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 10:02:08 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:45 阅读更多 →