原本要3位資深工程師投入一年才能完成的大型軟體重寫專案,後來花11天就完成了。
JavaScript執行環境Bun創辦人Jarred Sumner用AI輔助開發工具Claude Code,把Bun內部53萬多行程式碼從Zig語言改寫成Rust。11天內,共完成6,502次Git提交,最高同時有64支Claude協作。
最後,Rust版Bun不只通過Linux、Windows和macOS三種作業系統的所有自動測試,效能也提高2%~5%,執行檔還瘦身20%,甚至修復了128項舊版問題,變得更有效率、更好維護。
這個成功經驗,意味著AI輔助開發(AI Coding)降低了大型軟體重新改寫的門檻。過去,企業就算知道系統該改,往往因代價太高,只能繼續修補舊架構;現在,這些原本負擔不起的工程,因AI Coding的成熟而有機會展開。
為何放棄Zig、改用Rust?
Bun是一套用來執行、打包和測試JavaScript和TypeScript程式的開發工具,目前每月下載量超過2,200萬次。Claude Code、OpenCode等AI開發工具都以Bun執行程式,Bun去年底也被Anthropic收購。
Jarred Sumner在2021年用Zig語言開發Bun。他回憶,當初看上Zig對底層的控制能力和開發效率,才能在一年內完成功能眾多的第一版Bun。
對底層的控制權越大,就越得靠開發者自己管理記憶體。隨著Bun規模擴大,程式變得複雜,記憶體洩漏、重複釋放記憶體和越界讀寫等錯誤也越來越常見。就算團隊持續優化記憶體檢查和模糊測試,這類問題還是反覆出現。
因此Jarred萌生改用Rust的念頭,希望用Rust的記憶體安全機制,從開發階段就減少這類問題。
但真正的難題不是技術,而是成本。Jarred Sumner估算,若用傳統方式重寫,需要3位熟悉Bun的資深工程師投入一年,團隊幾乎得暫停改善Node.js相容性、修補漏洞和開發新功能。所以,這項重寫一直停留在計畫裡。團隊繼續用Zig,一邊修補舊架構,一邊開發新功能。
直到Anthropic模型和Claude Code越來越成熟,讓Jarred Sumner看到一絲機會,他想用一周時間來驗證可行性。幾天後,眼看通過的測試越來越多,他才下定決心,把整個Bun改寫成Rust。
組成AI工程團隊,分工改寫與除錯
不過,Jarred Sumner馬上展開重寫,而是先花3小時和Claude整理Zig轉換成Rust的規則,釐清資料型別、記憶體管理和錯誤處理等原則,再挑3個檔案試跑。
確認流程可行後,他設計了50套AI工作流程,涵蓋程式改寫、編譯、除錯、測試和程式碼審查等不同任務,再交給多支Claude依照這些流程接力完成工作。每套流程都由不同Claude接手不同工作,有的負責把Zig改寫成Rust,有的修正編譯錯誤,有的分析測試失敗原因,有的依照審查意見修改程式,最後再交給另一支Claude審查。
他刻意把實作和審查工作分開,為了避免AI自己背書自己寫的程式,。審查Agent只看程式修改內容,不看實作Agent的推理過程,而且收到的指令不是「檢查看看」,而是直接假設程式有錯,想辦法把問題找出來。
這種對抗式審查,確實攔下不少原本可能漏掉的問題,包括記憶體過早釋放、時間格式處理錯誤,以及Rust函式行為差異造成的程式故障。
流程穩定後,Jarred Sumner才把重寫範圍擴大到全部1,448個Zig檔案。他將專案拆成4個獨立的Git工作區(worktree),每個工作區同時啟用16支Claude,最高峰時共有64支Claude平行作業,彼此互不干擾。AI最快每分鐘可產生約1,300行程式碼,一分鐘完成58次Git提交。
百萬次檢查,來驗收AI改寫成果
AI可以快速改寫程式,但能不能正式上線,還是得靠測試驗收。
Bun原本就有大量以TypeScript撰寫的自動測試,專門檢查功能和輸出是否正確,而不是底層用了哪種語言。Rust版直接沿用了這套測試,比對是否和Zig版行為一致。
每完成一批改寫,系統就會自動執行這些測試。要是結果不同,系統就保存錯誤資訊,交給Claude修正,再由另一支Claude審查,反覆進行直到通過驗證。
第一次跑完整套測試時,多達972個測試檔失敗;兩天後,失敗數降到23個。整套驗證涵蓋4,174個測試檔、6萬多個測試案例,以及約139萬次結果檢查。最後,Rust版Bun順利通過Linux、Windows和macOS所有自動測試,團隊也沒有刪除或跳過任何測試。
效能更快、記憶體更穩,但仍有風險
完成重寫後,Rust版Bun不只順利運作,效能也略有提升。例如在Linux x64測試中,HTTP伺服器每秒請求量增加4.8%,Next.js建置速度加快4.5%;Claude Code在Linux上的啟動時間,也從517毫秒降至464毫秒,約快一成。
記憶體改善更明顯。舊版Bun連續執行2,000次建置後,記憶體用量升至6,745MB;Rust版則維持在609MB左右。Windows和Linux執行檔也瘦身20%,Bun 1.4還修復了128項舊版可重現的問題。
不過,重寫並非毫無代價。目前仍有19項已知功能退步,部分原因是Zig和Rust某些語法看似相近,實際行為卻不同。此外,約4%的Rust程式碼仍使用unsafe來串接JavaScriptCore等C、C++函式庫,相關記憶體操作無法完全交給Rust編譯器檢查,開發者還是得自行確認安全性。
因此,AI雖然大幅縮短重寫時間,後續還是需要人工審查、資安測試和持續重構。
花16.5萬美元,換來11天完成大型專案重寫
若按API價格計算,這次Claude使用費約16.5萬美元(約台幣500萬元),並不是小數目。但Jarred Sumner認為,真正該比較的是:找3位資深工程師投入一年,期間還可能拖慢Bun的新功能開發和漏洞修補。
AI沒有讓重寫成本歸零,而是讓一項原本太貴、太耗時,甚至不可能啟動的工程,變得可行。當然,這也建立在Bun已有成熟架構、大量自動測試,以及創辦人親自設計流程和把關品質的前提下。
Bun的成功經驗,點出AI Coding開始降低企業啟動大型重寫專案的門檻。那些過去因成本過高而一再延後的系統改造和技術債,如今或許可以重新評估。
Comments (0)