一个Agent几周重写TypeScript编译器:tsrs类型检查快8倍、内存省70%
一个拥有 3.7 万个文件的前端单体仓库,用 TypeScript 7.0 做一次完整类型检查,…
文章目录
一个拥有 3.7 万个文件的前端单体仓库,用 TypeScript 7.0 做一次完整类型检查,需要 19 GiB 内存和 80 秒。对于一个每天要跑几十次 CI 的团队来说,这不是一个可以忽略的数字。有人把这段等待压缩到了 7 秒,而写代码的,主要不是人,是一个 AI Agent。

Cloudflare 联合 VoidZero 与 Owner.com 推出了 tsrs:一个用 Rust 重写的 TypeScript 编译器。它不是 TypeScript 的分支,语言规范仍由 TypeScript 团队维护;Cloudflare 声称,在相同类型检查线程数下,类型检查速度最高提升 8 倍,内存占用减少约 70%。更具话题性的是,这次移植由一个以 Claude Opus 5.5 为核心的 Agent 驱动完成,人类几乎没有手写代码。
一分钟速览
- tsrs 是 TypeScript 编译器的 Rust 移植版,与 TypeScript 团队合作开发,不是分支。
- 相同线程数下,类型检查最高快 8 倍,内存减少约 70%,可编译为 WebAssembly。
- 移植以 TypeScript 官方 15,197 个一致性测试为基准,Agent 负责主要编码工作。
- Owner.com 的 3.7 万文件仓库,检查时间从 80 秒降到 7 秒,内存从 19 GiB 降到可接受水平。
- 目前仍是实验阶段:不支持 watch 模式和语言服务器,诊断输出顺序可能不同。
不是“重写语言”,而是重写工具链
需要先厘清一个容易误解的点:tsrs 不是要取代 TypeScript 语言,也不是另起炉灶的方言。语言设计仍由 TypeScript 团队掌控,tsrs 只是把编译器这个工具,用 Rust 重新实现了一遍。开发者仍然使用现有的 tsconfig,安装 tsrs 后用 npx tsrs -p . –noEmit 就能跑类型检查。
这条路并不孤独。微软自己用 Go 重写了 TypeScript 编译器,项目名为 tsgo;社区里也有其他 Rust 移植尝试。Cloudflare 的打算不是让这些项目互相竞争,而是把 tsc-rs 与 tsrs 合并成一个统一的软件包,并计划加入语言服务器和内容映射器支持。
为什么是 Rust?答案藏在内存管理里。TypeScript 编译器跑在 Node.js 上,面对超大代码库时,垃圾回收和对象分配会带来明显开销。Rust 没有 GC,内存布局更可控;编译成 WebAssembly 后,还能在浏览器或 Cloudflare Workers 上运行检查,而不必把整个 Go 运行时带进产物。
Agent 是怎么“写”出来的
项目参与者 Max Schwenk 的说法是:他没有编写任何代码,而是指挥一个以 Claude Opus 5.5 为核心的 Agent,完成了忠实于原版的移植。整个过程以 TypeScript 自身的 15,197 个一致性测试用例作为规范。换句话说,Agent 的任务不是“发明一个编译器”,而是让新实现通过一整套既有的行为约束。
这恰好是 AI 编程目前最擅长、也最容易被低估的场景:目标明确、验收标准清晰、可以反复试错。编译器移植不需要产品直觉,需要的是对规范的耐心覆盖;一致性测试提供了即时反馈,Agent 可以一轮轮修,直到全绿。比起“让 AI 从零做一个新产品”,这种任务的边界更清楚,成功也更容易被验证。
当然,这不意味着人类可以完全离场。测试用例覆盖不到的地方、性能取舍、架构决策,仍然需要工程师判断。Agent 把“写”的门槛降低了,但没有把“判断”的门槛降到零。
数字要分开看
Cloudflare 的 8 倍提升,是在特定条件下测得的。独立开发者对两个 npm 包做基准测试,得到的是约 5.3 倍速度提升、72% 内存减少,诊断结果完全一致,生成代码逐字节相同。但如果改用更新的 TypeScript 7.1 beta,提升幅度会缩小到约 2.7 倍。这说明 8 倍是相对较旧版本的成绩,不能简单外推。
还有一个容易被忽略的兼容性坑:tsrs 在存在类型错误时以退出码 2 结束,而 tsc 返回 1。对于把退出码写死在 CI 脚本里的团队,这个差异足以悄无声息地破坏流水线。TypeScript 团队的 Daniel Rosenwasser 也提醒,性能提升“并不只是语言选择的结果”,tsrs 中的一些优化已经被用于改进 TypeScript 7.1。
趋势洞察
tsrs 最有价值的信息,可能不是“快了几倍”,而是它展示了一种新的软件工程协作方式:人类定义规范与验收标准,Agent 负责大规模、机械但需要耐心的实现工作。编译器移植是一个极端案例,但同样的模式可以复制到代码迁移、测试补齐、API 适配等场景。
对前端团队来说,短期不必急着切换。tsrs 仍处于实验阶段,缺少 watch 模式和语言服务器,生产环境使用要谨慎。但它释放的信号很明确:工具链的性能竞赛,正在被 AI 重新加速。那些过去因为“重写成本太高”而被搁置的基础设施项目,可能会在接下来一两年里密集出现。
结语
一个 Agent 几周内完成编译器移植,听起来像营销故事;但 15,197 个一致性测试、可复现的基准数据和 Apache-2.0 的开源许可证,让它更像一次真实的工程实验。AI 编程的下一阶段,可能不是“帮你补全一行代码”,而是“按一套严格规范,重写一整层基础设施”。
本文地址:https://www.163264.com/19544


