AI News HubLIVE
站內改寫2 分鐘閱讀

Quilt:在一個Git倉庫中執行多個AI編碼代理

Quilt是一個命令列工具,可以追蹤每個AI代理編輯了哪些程式碼行,使得多個代理可以在同一個Git檢出中同時工作而不會產生衝突。它透過逐行歸屬、符號級宣告和碰撞預防,確保每個代理只提交自己的更改,避免靜默覆蓋,並支援無縫協調。

來源Hacker News AI作者: wkoverfield

Quilt是一款專為多AI代理協作設計的命令列工具,它解決了多個代理在同一個Git倉庫中工作時常見的衝突問題。傳統的做法是為每個代理建立獨立的工作樹(worktree),但這會導致每個代理都需要獨立的安裝、構建和環境,開銷巨大。而Quilt透過共享一個檢出,讓所有代理即時看到彼此的動態,並主動預防衝突,而非事後處理。

Quilt的核心功能包括逐行歸屬、符號級宣告和碰撞預防。逐行歸屬意味著每個代理的修改都會被精確記錄到每一行程式碼,即使多個代理修改了同一個檔案的不同部分,Quilt也能在提交時準確分離各自的更改。符號級宣告允許代理宣告特定函式或符號的所有權。例如,一個代理可以宣告utils.js#formatPrice,其他代理嘗試寫入該函式時會被拒絕,並看到持有者的意圖和宣告過期時間。這種細粒度的鎖定機制大大減少了不必要的衝突。

碰撞預防是Quilt的另一大亮點。當一個代理試圖寫入已被其他代理宣告的程式碼時,Quilt會在任何位元組更改之前拒絕該操作,並顯示持有者的意圖。被拒絕的代理可以等待持有者提交後自動釋放宣告,再重新宣告併疊加更改。這樣,兩個代理的修改都能被保留,不會丟失。此外,Quilt還能檢測和保留被覆蓋的未提交更改,確保資料不丟失。所有狀態都儲存在.quilt目錄中,不會干擾Git倉庫本身。

Quilt的安裝非常簡單,只需一個npm命令:npm install -g @quilt-dev/cli,然後執行quilt setup即可將其掛接到倉庫中。它自動為每個Claude Code會話或MCP連線分配ID,也支援透過環境變數設定穩定的代理名稱。例如,設定QUILT_ACTOR=auth-agent後,該代理的所有編輯都會歸屬於auth-agent。使用quilt commit --mine可以只提交自己的更改,而quilt status可以檢視當前所有代理的狀態和宣告。

與工作樹方案相比,Quilt的優勢顯而易見。工作樹雖然提供了隔離,但合併時依然會產生衝突,並且每個代理都需要完整的安裝和構建。Quilt透過共享一個檢出,避免了這些開銷,同時讓代理之間能夠互相感知並協調。工作樹適合獨立的長期任務,而Quilt則適合需要緊密協作的短期任務。兩者並不互斥,可以結合使用。

Quilt的設計哲學是信任Git,它從不呼叫LLM或生成代理,所有狀態都儲存在本地.quilt目錄中。提交的程式碼仍然是普通的Git提交,因此可以輕鬆整合到現有工作流中。無論是處理不相關的檔案還是競爭同一段程式碼,Quilt都能提供清晰的提交歷史和協作流程,是AI編碼代理團隊協作的有力工具。