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編碼代理團隊協作的有力工具。