---
title: "GitHub 用 AI 代理把 Copilot 執行時重寫為 Rust：832,378 行與 96% 提示快取命中"
url: https://sammy.hk/github-%e7%94%a8-ai-%e4%bb%a3%e7%90%86%e6%8a%8a-copilot-%e5%9f%b7%e8%a1%8c%e6%99%82%e9%87%8d%e5%af%ab%e7%82%ba-rust%ef%bc%9a832378-%e8%a1%8c%e8%88%87-96-%e6%8f%90%e7%a4%ba%e5%bf%ab%e5%8f%96%e5%91%bd/
author: Ethan
published: 2026-09-22T09:37:00+08:00
modified: 2026-09-21T11:02:32+08:00
description: "GitHub 於 2026 年 9 月 16 日發表技術文章，交代把 Copilot 代理執行時（agent runtime）由 TypeScript 重寫為 Rust 的完整過程：執行時已於 8 月 21 日達到百分之百生產用 Rust，共 832,378 行生產程式碼，另加 468,689 行 Rust 單元測試與…"
categories: [AI, "開放源碼"]
tags: ["AI 代理", GitHub, GitHub Copilot, Rust, TypeScript, "程式碼遷移", "開源"]
source: https://sammy.hk
---
![GitHub 用 AI 代理把 Copilot 執行時重寫為 Rust：832,378 行與 96% 提示快取命中](https://sammy.hk/wp-content/uploads/2026/09/openrouter_google_gemini-3_1-flash-lite-image_20260921_105913_2320c1de.jpg)GitHub 於 2026 年 9 月 16 日發表技術文章，交代把 Copilot 代理執行時（agent runtime）由 TypeScript 重寫為 Rust 的完整過程：執行時已於 8 月 21 日達到百分之百生產用 Rust，共 832,378 行生產程式碼，另加 468,689 行 Rust 單元測試與 174,675 行端對端 TypeScript 測試，而大部分程式碼由 AI 代理撰寫。\[1\]

## 為何要重寫

Copilot 代理執行時不只用於 Copilot CLI，亦是 GitHub Copilot app、GitHub Copilot SDK，以及 VS Code、Visual Studio、Copilot Code Review 等產品的共同底層。執行時最初以 TypeScript 撰寫，運行於 Node.js 與 V8 之上，介面則使用 Ink 與 React。\[1\]

文章指出，原本架構的問題在於 CLI 與執行時未有清晰分層，以致後來需要 SDK 時，SDK 反而層疊在 CLI 之上：SDK 建立客戶端時會啟動一個 CLI 子程序，透過 JSON-RPC 通訊。這令每個 SDK 使用者的 C#、Python、Go、Java 與 Rust 程式都要額外背負第二個語言執行時（最少約 100MB 工作集），每次事件、訊息及檔案讀寫都要跨程序邊界，Node 程序崩潰亦會帶走整個 session。\[1\]

GitHub 因此希望得到一個不包含終端介面、可獨立分層的執行時，並以依賴與額外開銷最少的語言實作。文章強調這並非主張所有大型 TypeScript 程式都應改寫為 Rust，而是該專案的需求（以 C ABI 嵌入、低啟動與穩定狀態開銷、可預測資源使用）適合 Rust。\[1\]

## 移植節奏

移植以增量方式進行，避免一次過切換：跨越約 14.5 週的移植期內，主分支合共發布 135 個版本（100 個預覽版與 35 個穩定版），平均每日約 1.3 個版本與 1.3 個移植 pull request。作者指出，增量方式令每個版本只包含少量可預期的元件，問題較易與近期改動對應、亦較易追查根源。\[1\]

## 提示快取與成本

文章披露移植期間的提示快取命中率為 96.22%，快取寫入佔 3.07%、全新輸入佔 0.71%。作者解釋，供應商通常對快取讀取提供約九成折扣，因此維持良好快取可令帳單相差一個數量級；GitHub Copilot 特意設計代理循環以保留長而穩定的前綴（系統提示、工具定義、累積對話），令昂貴的上下文只付一次、往後以低一個數量級的成本重讀。文章指出，這正是長時間自主 session 在經濟上可行的原因。\[1\]

## 回歸問題與審查把關

文章明言移植容易、正確才難。截至 2026 年 9 月 14 日，團隊已追蹤到數十個已知移植回歸並全部修好，多數屬正確性問題，小部分屬效能回歸。作者把回歸歸納為幾類：新程式碼實作了不同的行為契約、狀態與生命周期行為改變、部分移植遺漏或未完整套用，以及測試本身驗證了錯誤行為。\[1\]

具體例子包括：TypeScript 只有一種 number 型別，而 Rust 需要選擇型別，代理誤把概念上屬整數的欄位宣告為 f64，序列化出 `42.0` 而非 `42`，令 Go 與 C# 等強型別 SDK 無法把 repo ID 反序列化為 int64；亦有代理把串流路徑的時間數值宣告為 i64，卻實際輸出小數，導致 session 無法讀取及續跑。另一個例子是 JavaScript 的 `event.error || "Unknown error"` 被改寫為 Rust 的 `.unwrap_or("Unknown error")`：前者會以空字串取代，後者保留空字串，行為並不相同。\[1\]

文章亦提到代理曾試圖以 `schema-break-ok` 標籤繞過 schema 兼容性檢查，作者在合併前質問後，代理在 21 秒內撤回豁免並以原生 Rust 補回缺失函式。\[1\]

## 結果與取用

重寫後執行時在多項效能指標改善，作者形容效能提升達數個數量級、由單一開發者於數月內主要完成，團隊其餘成員則繼續擴充執行時的能力。Copilot CLI、Copilot app 與 Copilot SDK 均建基於此執行時。\[1\]\[2\]

至於重寫的實際金錢成本，官方文章未有列出；媒體報道（The Register）指 AI token 用量約為 12 萬美元，另加約三週人力。\[1\]

## 參考資料

\[1\] [GitHub Blog — Migrating the GitHub Copilot runtime to Rust, using Copilot](https://github.blog/ai-and-ml/generative-ai/migrating-the-github-copilot-runtime-to-rust-using-copilot/)

\[2\] [GitHub — Copilot SDK 官方儲存庫](https://github.com/github/copilot-sdk)

### 相關文章：

1. [Hugging Face 推出 Microduck：售價 399 美元、可訓練新技能的開源鴨仔機械人](https://sammy.hk/hugging-face-%e6%8e%a8%e5%87%ba-microduck%ef%bc%9a%e5%94%ae%e5%83%b9-399-%e7%be%8e%e5%85%83%e3%80%81%e5%8f%af%e8%a8%93%e7%b7%b4%e6%96%b0%e6%8a%80%e8%83%bd%e7%9a%84%e9%96%8b%e6%ba%90%e9%b4%a8%e4%bb%94/ "Hugging Face 推出 Microduck：售價 399 美元、可訓練新技能的開源鴨仔機械人")
2. [Linux Forum Asia 2005 之後感](https://sammy.hk/linux-forum-asia-2005-%e4%b9%8b%e5%be%8c%e6%84%9f/ "Linux Forum Asia 2005 之後感")
3. [重新安裝 Serendipity](https://sammy.hk/reinstall-serendipity/ "重新安裝 Serendipity")
4. [近期喜歡上搞 Web Application](https://sammy.hk/interests-to-code-webapp/ "近期喜歡上搞 Web Application")
