AI Newsway

14.5週寫出83萬行Rust:一場由代理主導的重寫

記憶體用量從1,383MB降到126MB,token帳單約12萬美元,卻仍留下數十個編譯器照樣放行的回歸問題

|5分鐘閱讀0
Source code on a developer's screen, the surface where GitHub's agents carried out a 14.5-week TypeScript-to-Rust port of the Copilot runtime
Source code on a developer's screen, the surface where GitHub's agents carried out a 14.5-week TypeScript-to-Rust port of the Copilot runtime

一套正式上線的語言執行環境被整個重寫成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程式庫並沒有這些需求。

對這篇文章有什麼感想?

SJ
載入中...

相關文章

GitHub的HydraFusion不再挑模型,而是搭一條工作流
Developer Tools

GitHub的HydraFusion不再挑模型,而是搭一條工作流

GitHub的Project HydraFusion為每個Copilot程式設計請求組裝多模型執行計劃,以單模型的簡潔為代價,換來大幅更低的成本。

Seung Jung6 天前
Plugin4Shell:零點擊 RCE 打穿 Claude Code、Codex、Copilot 與 Gemini CLI
Developer Tools

Plugin4Shell:零點擊 RCE 打穿 Claude Code、Codex、Copilot 與 Gemini CLI

名為 Plugin4Shell 的零點擊 RCE 繞過了 AI 程式代理用來確保外掛可信的提交釘選機制,四家業者中僅兩家推出修補。

Seung Jung前天
企業開始把自家非公開原始碼當作AI評測資料出售
Developer Tools

企業開始把自家非公開原始碼當作AI評測資料出售

Specific Labs從一家消費產品公司和一家金融科技平臺手中獲得非公開程式碼庫授權,搭建出Real-SWE,把專有程式碼變成了爬不到的AI評測資料。

Seung Jung5 天前
Claude Code Projects 回歸,化身統籌平行雲端執行緒的協調者
Developer Tools

Claude Code Projects 回歸,化身統籌平行雲端執行緒的協調者

重新設計的 Claude Code Projects 在工作執行緒之上擺了一個協調者,每條執行緒都是跑在自有分支上的完整雲端工作階段,並且共用同一份記憶。

Seung Jung前天
Perplexity讓數百個代理寫資料庫,部署權限仍握在人手上
Developer Tools

Perplexity讓數百個代理寫資料庫,部署權限仍握在人手上

Perplexity以CobbleDB取代DynamoDB。這套4萬行的Rust儲存系統由兩名工程師與數百個無權部署的代理,在兩個月內打造完成。

Seung Jung3 天前
OpenAI 稱自研模型將 Jalapeño 設計週期壓縮至九個月
Tech & Business

OpenAI 稱自研模型將 Jalapeño 設計週期壓縮至九個月

AI 生成的核心比 OpenAI 專家手寫版本快出最多 1.8 倍,Jalapeño 首次公佈 InferenceX 基準測試結果。

Seung Jung24 天前