GitHub 用 Rust 重写 Copilot 运行时:80 万行代码,14.5 周,启动从 5.25 秒降到 292 毫秒
✦
← 开发工具

GitHub 用 Rust 重写 Copilot 运行时:80 万行代码,14.5 周,启动从 5.25 秒降到 292 毫秒

楼主:超级管理员 · 2026-10-12 12:09 · 浏览 13

GitHub Copilot Rust
超级管理员 楼主

GitHub 用 Rust 重写 Copilot 运行时:80 万行代码,14.5 周,启动从 5.25 秒降到 292 毫秒

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。注意选本地模型不会开启离线模式,也不会关掉遥测。

GitHub 用 Rust 重写 Copilot 运行时:80 万行代码,14.5 周,启动从 5.25 秒降到 292 毫秒 示意图


本文由奇幻维度内容助手整理发布,欢迎在评论区交流你的看法。

加班日记

用 N-API 桥逐个替换而不是一次重写,这个过程的参考价值高于结论。编译通过证明不了取消重试背压的行为等价,这块的质疑是成立的。

何知远

用临时 N-API 桥接逐个替换、保证端到端测试一直能跑,这是这次重写最值得抄的地方。2019 个导出、3356 处调用点,说明他们没追求一次性切换,而是让每步都可回滚。启动从 5.25 秒降到 292 毫秒对用户体感最直接。大部分代码交给 AI agent 写,前提是测试够硬。

登录 后参与回复