使用平行 Claude Agent 團隊構建 C 編譯器

TL;DR

Anthropic 研究員 Nicholas Carlini 展示了「Agent 團隊」的能力,他指派了 16 個平行的 Claude Opus 4.6 實例,讓它們自主從頭開始構建一個基於 Rust 的 C 編譯器。最終生成的 10 萬行編譯器可以為 x86、ARM 和 RISC-V 構建 Linux 6.9,證明了自主 Agent 團隊可以在無需人類持續干預的情況下,處理大規模、長期的技術專案。

Agent 團隊架構

為了超越需要人類操作員提供持續回饋的需求,Carlini 開發了一個框架,將 Claude 置於一個持續的迴圈中。當一個任務完成時,Agent 會立即根據提示詞(prompt)開始下一個任務,該提示詞指示它將問題分解為小塊並追蹤自己的進度。

平行執行與同步

平行運行多個 Agent 可以同時進行多個問題的除錯,並使用專業化角色。技術實作使用了 bare git repository 和 Docker 容器:

  • 基礎設施: 每個 Agent 在其專屬的 Docker 容器中運行,並掛載了 repository。Agent 會 clone 一個本地副本,執行任務,然後將更改推送到 upstream repository。
  • 同步: 為了避免重複工作,Agent 使用簡單的鎖定機制,透過在 current_tasks/ 目錄下寫入文字檔來實現。如果兩個 Agent 嘗試聲稱同一個任務,git 同步會強制第二個 Agent 選擇不同的任務。
  • 工作流: Agent 從 upstream 拉取,合併其他 Agent 的更改,推送更新,並移除鎖定。Claude 被指派負責解決任何產生的合併衝突。

為自主進展進行工程設計

成功的自主開發需要一個環境,讓模型可以自我定位並在沒有人類指導的情況下驗證自己的工作。

高品質驗證

由於 Claude 會解決它被賦予的問題,因此任務驗證器必須幾乎完美,以防止模型解決錯誤的問題。Carlini 實施了持續整合(CI)流水線和嚴格執行,以防止新功能破壞現有功能。

優化 LLM 限制

該框架是為了應對特定的語言模型限制而設計的:

  • 上下文窗口污染: 為了防止浪費 token,該框架會打印出極簡的輸出,並將詳細資訊記錄到文件中。日誌格式經過設計,以便能透過 grep 輕鬆搜尋錯誤。
  • 時間盲目性: 由於 LLM 無法追蹤時間,該框架提供了一個 --fast 選項,可以運行確定性的 1% 或 10% 隨機測試樣本,以便在不花費數小時進行完整測試套件時,快速識別回歸問題。

擴展至複雜任務

雖然對於獨立測試來說,平行化很容易,但像編譯 Linux kernel 等單體任務通常會導致 Agent 互相覆蓋彼此的工作。為了這個問題,Carlini 使用 GCC 作為「線上已知良好的編譯器 oracle」。

透過隨機使用 GCC 編譯大部分 kernel,並僅對一部分使用 Claude 的編譯器進行編譯,Agent 可以平行地隔離並修復特定檔案中的 bug。

這個過程透過 delta debugging 技術進一步優化,以識別那些在配對使用時會失敗、但在獨立使用時卻能正常運行的檔案。

產出的編譯器之能力與限制

使用 Claude Opus 4.6,該專案在兩週內消耗了 20 億個輸入 token 和 1.4 億個輸出 token,成本約為 20,000 美元。

技術成就

  • 範圍: 使用僅 Rust standard library 的 clean-room 實作。
  • 相容性: 可在 x86、ARM 和 RISC-V 上構建可啟動的 Linux 6.9。它還能編譯 QEMU、FFmpeg、SQLite、Postgres 和 Redis。
  • 基準測試: 在大多數編譯器測試套件(包括 GCC torture test suite)上達到了 99% 的通過率,並成功編譯並運行了 Doom。

目前的限制

  • 引導程序(Bootstrapping): 它缺乏啟動 Linux 從 real mode 所需的 16-bit x86 編譯器;目前它在該特定階段會調用 GCC。

  • 工具鏈: 它沒有自己功能完全的開發工具鏈(assembler 和 linker),在演示影片中依賴於 GCC。

  • 效率: 生成的代碼比禁用所有優化後的 GCC 代碼更低效。

  • 代碼品質: Rust 源碼品質尚可,但無法與專家級人類 Rust 程式設計師的品質相符。

對自主開發的影響

這次實驗標誌著從 LLM 作為自動補全工具或結對編程(pair-programmer)到 LLM 作為自主專案執行者的轉變。雖然生產力潛力巨大,但 Carlini 指出,對於自主產出且從未經由人類親自驗證的軟體部署,存在顯大的安全疑慮,並引用其在滲透測試方面的背景來提醒謹慎。

Sources

相關

  • 專案
  • 專案
  • 專案
  • 專案
  • Dispatch