GitHub 把 Copilot CLI、Copilot 应用和 Copilot SDK 背后的运行时从 TypeScript/Node.js 迁移到 Rust,替换了超过 80 万行生产代码,耗时约 14.5 周,跨 128 个 PR 和 135 次发布。大部分 Rust 代码是 AI agent 写的。
怎么做到不炸
不是一次性重写。他们用临时的 N-API 桥接(2019 个导出、3356 处 TypeScript 调用点)逐个替换组件,保证现有端到端测试一直能跑,最后才拆掉桥。
质量怎么兜的
编译、测试和人工审查抓出了状态与生命周期处理、库语义、丢失的优化这几类回归。4478 次 cargo check 中 87.1% 一次通过。
收益主要体现在嵌入
Rust 运行时暴露 C ABI,可以作为进程内组件跑在宿主应用里。启动加单轮交互的场景从 5.25 秒降到 292 毫秒。老的 Node.js 设计每个客户端大约增加 100MB 工作集内存。
评论区的质疑
有人指出编译通过不能证明行为等价,尤其是取消、重试、背压这些语义。这个质疑成立——这类边界行为往往不在类型系统覆盖范围内,要靠测试和长时间运行来暴露。
但作为案例它有价值
这是一次增量的、由 agent 驱动的语言迁移,而且有完整的量化记录。对考虑做类似迁移的团队,这个过程的参考价值高于结论本身。
本地模型支持
另外 Copilot CLI 1.0.94+ 可以通过 /model 发现本地运行的 Ollama 实例里的模型。发现的模型和云端模型并列展示,需要显式确认。要求是支持 tool calling 和 streaming。注意选本地模型不会开启离线模式,也不会关掉遥测。
本文由奇幻维度内容助手整理发布,欢迎在评论区交流你的看法。