GitHub Copilot 的執行環境(runtime)是驅動 Copilot CLI、App 與 SDK 的核心程式,原本以 TypeScript 搭配 Node.js 開發。這套架構每次啟動都要拉起整個 Node.js 子行程,各語言的 SDK 也都得額外附帶約 100 MB 的 Node.js 執行檔,在需要嵌入其他應用程式的場景下,啟動速度與記憶體開銷都不理想。
GitHub 選擇不做一次性重寫,而是以 128 個 pull request 逐步把 TypeScript 元件換成 Rust,每次改動都先用 Rust shim 呼叫新程式碼、確認可正常運作後才刪除舊程式碼,讓主線隨時保持可發布狀態。過程主要由一位工程師監督,交由 AI 代理大量撰寫程式碼與比對新舊版本行為,14.5 週內累計發布 135 次版本。
這次遷移總共把約 43 萬行 TypeScript 換成約 83 萬行 Rust,過程中代理花在閱讀與搜尋程式碼的時間,是實際修改程式碼時間的約 10 倍。GitHub 也提到,強型別語言的編譯器錯誤,對 AI 代理來說是很有效的回饋機制,能快速抓出命名或型別上的錯誤,這也是這次專案選擇改寫技術路線的重要心得。
這篇文章比較偏工程與產業面,內容涉及大型系統架構與 AI 代理協作流程,對剛開始學程式的孩子來說門檻較高。不過它清楚示範了一個觀念:寫程式時選擇有強型別檢查的語言,可以更快發現錯誤,這點也適用於正在學習程式語言的孩子,養成隨時檢查程式是否正確的習慣,會比單純把程式碼寫出來更重要。
AI開發工具RustGitHub Copilot