技术进展

微软用 AI 将 Copilot 运行时重写为 Rust

Heooo 09月22日02时02分 32 阅读

「微软用 AI 代理把 GitHub Copilot 运行时从 TypeScript 全量移植到 Rust,43 万行代码变为 80 万行生产级代码,成本约 12 万美元 token 加一名工程师三周。基准测试每秒会话处理量由 7.55 次提升至 120 次,特定负载快 15.9 倍,内存占用降约九成,但过程中出现几十个回归。」

微软用 AI 代理把 GitHub Copilot 运行时从 TypeScript 全量移植到了 Rust,整个过程约花费 12 万美元的 token 成本,外加一名工程师三周的人工投入。这个运行时比多数用户想象得更要命:它支撑着 GitHub Copilot CLI、Copilot App、SDK 和 Copilot 云 Agent,还会出现在 VS Code、Visual Studio、Excel、Outlook、PowerPoint 以及一批微软云服务中。它原本用 TypeScript 配 Node.js,好处是开发快,但规模化之后,启动速度和服务器密度都成了瓶颈。

微软杰出工程师 Stephen Toub 把整个过程写成了长文。数据显示,AI agents 把 43 万行 TypeScript 变成了 80 万行生产级 Rust,跨越 135 个 release、14.5 周,平均每天开 1.3 个移植用 PR。成本大头是 token,约 12 万美元,外加开发者三周人工。Toub 表示,这活儿要是纯手工,得花几年、砸几百万美元。

性能收益相当实在。在一个基准测试中,原 TypeScript 实现每秒处理 7.55 个单轮会话生命周期,Rust 进程内跑到了 120 个,特定负载下实现 15.9 倍加速。内存占用差距更夸张:10 客户端的一批 agents,TypeScript 吃掉 1383MB,Rust 只要 126MB,降幅约九成,因为 Rust 版本全程在进程内完成,无需像 TypeScript 那样为补全额外拉起后台子进程。

有意思的是,这次移植也在给“AI 编程”祛魅。Toub 观察到,agents 花在收集信息上的时间远超写代码本身。“大众印象里 AI 疯狂吐代码的画面几乎是反的;在这个规模上,工作看起来更像迭代式调查——检查当前状态、形成假设、做一处针对性修改,然后循环。”

最棘手的文件是 session.ts,3 万多行 TypeScript,触及运行时的方方面面。移植它花了 25 小时,光读文档就占 56 分钟、做了 122 次工具调用来澄清需求,随后 spawn 了 15 个子会话,每个都有自己的 worktree 和 agent 并开始互相通信;一个内置编排技能会找到所有活跃会话,给任务重叠的发消息请求协作。

不过这次移植也暴露了用 AI 写 Rust 的坑:整个过程中出现了几十个回归,原本正常的东西改完不工作了。Toub 总结道:“如果编译通过就代表正确,那这句话只配当笑话听。”编译器并不知道函数顺序对不对、任务代价是否可接受。在蒙特利尔 RustConf 上,顾问 Lisa Crossman 也警告别把编译器当“神谕”:“Rust 阻止 agent 写内存不安全的代码,但不阻止它写错误却正确的程序。”

作为对照,Bun 作者 Jarred Sumner 最近几乎全用 Claude agents 把 Anthropic 的 JS 运行时从 53.5 万行 Zig 搬到 Rust,花了 16.5 万美元 token,在 Linux x64 glibc 上已通过 99.8% 的 Bun 既有测试,但 Zig 创始人 Andrew Kelley 至今称其代码为“没人审的垃圾”。

连同这次 Copilot 运行时移植,“AI 大规模重写”正在成为一类可验证的工程现实:便宜、够快,但验收标准必须靠人去盯住“编译通过”之外的语义正确性。对开发者而言,这既意味着迁移类重活的成本结构被彻底改写,也意味着评审、回归测试和语义校验环节的价值被进一步放大。

# AI编程代理 # Rust # GitHub Copilot # 代码迁移 # AI Agent

来源:Heooo AI工具导航