产品派
返回

GitHub将Copilot运行时迁移至Rust并提速

AIInfoQ 中文站2026/10/22 14:03:38
AI 导读

GitHub已将Copilot CLI、Copilot应用及Copilot SDK背后的运行时从TypeScript和Node.js迁移到Rust,借助AI辅助重写了超过80万行代码。整个过程持续约14.5周,完成128个拉取请求,期间仍持续发布运行时版本。测试显示,在客户端启动、创建会话和进行单轮交互的场景中,旧运行时耗时约5.25秒,Rust版本以内嵌进程运行时降至292毫秒。

迁移也改变了运行时与宿主应用的连接方式。此前方案依赖Node.js和V8,并通过独立进程与客户端通信,每个客户端因此增加约100MB工作集内存。Rust版本支持通过C ABI直接嵌入宿主应用,同时保留独立进程运行模式。Copilot SDK目前已原生支持TypeScript、Python、Go、.NET、Java和Rust。

GitHub没有采用先并行重写、最后一次切换的方式,而是逐步替换各个TypeScript组件。迁移期间,临时N-API互操作层负责连接新旧实现,使现有端到端测试能够在其他组件仍使用TypeScript时验证Rust代码。项目期间共发布135个版本,其中包括35个稳定版和100个预发布版。

在兼容层移除前,内部N-API导出项达到2019个,TypeScript调用点共有3356处。截至8月21日,运行时包含832378行生产环境Rust代码,以及468689行Rust单元测试代码。绝大部分实现由AI智能体生成,编译、自动化测试和人工评审则用于排查行为、状态、生命周期、库语义及优化逻辑丢失等回归问题。GitHub记录了4478次直接执行cargo check,其中87.1%实现了一次性通过校验。

社区讨论的重点并非单纯使用Rust,而是AI辅助迁移能否在边界条件下保持原有运行时行为。相关观点指出,取消、重试和背压等场景不能只依赖编译结果验证;小规模、易评审的变更,兼容层以及工程师判断,是降低迁移风险的重要因素。遗留系统中未被文档记录的行为约定,也构成了识别和复现问题的主要难点。

迁移完成后,运行时形成了原生Rust架构,既能嵌入宿主应用,也能以独立进程运行;Copilot SDK则继续为各支持语言提供对应的语言专属接口。整个项目将AI生成代码、增量集成、临时兼容边界、自动化校验和人工评审结合起来,并在迁移过程中持续向生产环境发布更新。

GitHub CopilotRustAI编程运行时迁移软件工程

本文基于公开渠道信息整理,内容可能存在不准确或遗漏之处,不代表本站立场,如内容涉及侵权或错误,请联系我们处理。

阅读原文