一套正式上線的語言執行環境被整個重寫成83萬2,378行Rust程式,全面取代原本的TypeScript,效能落差相當明顯:以1,000次單輪工作階段生命週期為基準的測試,從每秒7.55次提升到120次;10個用戶端的代理批次處理,記憶體用量則從1,383MB降到126MB。整個工程自2026年5月12日進行到8月21日,主要由一名開發者督導編碼代理完成,過程收錄在Microsoft傑出工程師Stephen Toub撰寫的詳盡工程紀錄中。
重點摘要
- 代理在14.5週內透過128個已合併的pull request,把約43萬行正式環境的TypeScript轉成83萬2,378行Rust。
- 測量1,000次單輪工作階段生命週期的基準測試,TypeScript為每秒7.55次,行程內Rust則達每秒120次;10個用戶端的代理批次記憶體從1,383MB降至126MB。
- 工作階段紀錄中的3萬1,247則使用者訊息,只有約2,600則由真人輸入,大約每十二則才有一則。
移植背後的數字
除了正式程式碼,代理還產出46萬8,689行Rust單元測試。移植的pull request以每天約1.3個的節奏落地,期間仍推出135次公開版本,原因在於團隊採逐一替換模組的方式,而非一次性切換。The Register報導指出,token帳單約為12萬美元。
臨時搭建的鷹架也說明了同一件事。銜接兩套世界的N-API匯出在8月3日達到2,019個的高點,另有3,356處TypeScript呼叫點,最後雙雙歸零。
這套執行環境到底撐起什麼
這具引擎對多數使用者而言是隱形的。它支撐Copilot CLI、Copilot桌面應用程式、六種語言版本的Copilot SDK與雲端代理,並隨近期版本的VS Code和Visual Studio一起出貨,觸角甚至延伸到Excel、Outlook、PowerPoint與Word。
最初的版本以TypeScript搭配Node.js與V8執行,迭代速度快,但一旦同一具引擎必須透過C ABI嵌入這麼多宿主程式,啟動延遲與伺服器密度就成了弱點。Toub刻意限縮結論的適用範圍,強調這項專案絕不代表所有大型TypeScript程式都該改寫成Rust,這次的需求特別看重C ABI嵌入、低穩態負擔與可預測的資源使用。
代理為何讀的時間多過寫
紀錄顯示共有1,276萬995筆事件與185萬7,409次工具啟動,光是檢視Git狀態的指令就耗掉608個實測小時。提示快取命中率達96.22%,若少了這一點,如此長的工作階段在成本上根本撐不住。
外界想像中AI瘋狂吐出程式碼的畫面幾乎是反過來的;在這種規模下,工作更像是不斷反覆的調查。
移植session.ts這個牽動整套執行環境、長達3萬行的檔案,花了一次25小時的工作階段。開頭56分鐘全在閱讀,並發出122次釐清用的工具呼叫,才動第一筆修改;之後分七波衍生出15個子工作階段,彼此往返89則協調訊息。模型依強項分派,GPT-5.6 Sol與Anthropic的Claude Opus 4.8都有參與。
編譯器攔不住的那一半
每次談Rust難度必被提起的borrow checker,這回幾乎沒什麼戲份。8,678個編譯錯誤裡,所有權、借用與生命週期只占1.7%,名稱與匯入解析反而占了37%。unsafe程式碼控制在36個檔案、158個區塊,幾乎全落在C ABI、Windows API與POSIX的交界處。
真正棘手的是回歸問題。數十個案例被追蹤出來,多數浮現在預先發行的通道,直到9月14日才完全清理乾淨。這些問題集中在未完成的遷移、狀態與生���週期、行為契約不一致、宿主邊界,以及錯誤的測試判準,沒有一項是編譯器會替你判斷的。在蒙特婁舉行的RustConf上,顧問Lisa Crossman提醒開發者別把編譯器當成正確答案,她指出Rust能阻止代理寫出記憶體不安全的程式碼,卻擋不住它把錯的程式寫得很正確。Toub的結論也差不多:能編譯就等於正確,這句話只有當笑話講才有用。
後續觀察
可拿來對照的案例是Anthropic旗下的JavaScript執行環境Bun。開發者Jarred Sumner幾乎全靠Claude代理,把約53萬5,000行Zig搬到Rust;這個實驗性移植版在7月30日已能通過Bun於Linux x64 glibc環境99.8%的測試,但穩定版仍由Zig建置,Zig創造者Andrew Kelley更直言那些產出是沒人審過的垃圾。GitHub走的是相反路線,不動架構、模組逐一對換,也就是說真正的最佳化工程還沒開始。這個模式呼應了OpenAI由兩名工程師完成的Rust重寫:極小的人類團隊、驚人的代理產能,以及仍卡在審查的最後一道關卡。
常見問題
Rust程式碼全都是AI代理寫的嗎?
大部分由代理產出,但人類始終參與設計、審查與最終決策。工作階段紀錄顯示,3萬1,247則使用者訊息中約有2,600則由真人輸入,等於大約每十二輪就有一次人為介入。
Rust版執行環境快了多少?
在一項公開基準測試中,測試以共用用戶端搭配100條並行管線,跑完1,000次單輪工作階段生命週期。Rust版本達到每秒120次,TypeScript為7.55次,差距為15.9倍;10個用戶端的代理批次記憶體則從1,383MB降到126MB。
其他TypeScript專案該改用Rust嗎?
Toub明確拒絕推論到一般情況。這次選擇Rust的理由在於需要透過C ABI嵌入、低啟動成本,以及跨多個宿主應用程式的可預測資源使用,而多數TypeScript程式庫並沒有這些需求。






