微软 GitHub 在 9 月 17 日由杰出工程师 Stephen Toub 发了一篇 65 分钟的长文,详细披露如何把 Copilot 背后的 agent runtime 从 TypeScript 整套迁到 Rust。文章里 GitHub 自己列了一份账单:14.5 周、128 个 PR 落到 main 分支、约 1.3 个 PR 一天、435 万行 TypeScript 改写成 832378 行 Rust、468689 行 Rust 单测、token 总消耗 1363 亿(其中 1306 亿是缓存读取,prompt-cache 命中率 96.22%),总账约 12 万美元,主体工程师归功于 Stephen Toub 一人。

性能数字同样硬:同一基准下 TypeScript runtime 每秒 7.55 个单轮会话,Rust 进程内加载后每秒 120 个,特定负载下 15.9 倍吞吐。10 个客户端的 agent 集群,TypeScript 跑出 1383 MB 内存,Rust 只剩 126 MB——少了一个数量级。GitHub 把 runtime 重做成 C ABI,19 个导出函数,SDK 不用再 Node 子进程拉一次,直接进程内加载。

迁移过程的工具调用结构被当成经典案例讲:63 万次 shell、59 万次 read、28 万次 ripgrep、5.4 万次 apply_patch、4 万次 edit、1.3 万次 task 委派子 agent。GitHub 自己总结了一句「AI 吐代码的画面几乎是反的」——agent 绝大部分时间在读、在搜、在跑诊断,edit 反而是少数。session.ts 一个 3 万行大文件,父 session 跑了 25 小时,发 222 次 shell、读 205 个文件、做 197 次 ripgrep,summon 出 15 个子 session,7 轮子任务,10 个跑 GPT-5.6 Sol、5 个跑 Claude Opus 4.8。

子 agent 主力模型排名:Claude Opus 4.8 / GPT-5.6 Sol / Claude Haiku 4.5 / GPT-5.5 / Gemini 3.1 Pro / Claude Opus 5。子 agent 的定义本身绑模型,所以这个排序一部分也是配置决定的。review 阶段 Opus 5、GPT-5.6 Sol、Grok 4.6 拉来对 TypeScript vs Rust 的行为做对照。

代价也明明白白写在文里:截止 9 月 14 日追溯并修复了几十个回归,几乎全因为端到端测试不够厚。GitHub 列了五条操作手册:状态描述要把终态说全、e2e 测试是 oracle 不能被 agent 顺手改掉、oracle 必须和改代码的人物理隔离、先翻译再重构不要一锅端、同样的失败模式两次就写进 standing instructions/skill。

参考链接(已核实):GitHub 官方博文 https://github.blog/ai-and-ml/generative-ai/migrating-the-github-copilot-runtime-to-rust-using-copilot/ ;CellCog 详细记录 https://cellcog.ai/blog/github-copilot-runtime-rust-rewrite/