Git worktree:讓多個 AI agent 並行工作而不互相沖突的基礎
並行執行時,你的 agent 會互相覆蓋對方的工作。Git worktree 用兩條命令就能解決。這篇文章告訴你怎麼用。
你在同一個儲存庫上啟動了兩個 agent。一個在改 package.json,另一個也在改。三十秒後,你的程式碼變成了誰都沒法合併的狀態。
這不是 agent 的 bug,而是因為它們都在同一個資料夾裡幹活。
解決辦法是一個 Git 已經支援多年、卻幾乎沒人用的工具:git worktree。
問題所在:3 個 agent,1 個儲存庫,根本沒法合併
一個普通的 Git 儲存庫就是一個資料夾,同一時間只能簽出一個分支。你在 main 上工作,切換分支時整個資料夾都會跟著變。
現在往這個資料夾裡塞進三個自主 agent。它們會同時寫檔案。Agent A 建立了一個檔案,agent B 跑了個 git checkout 想從乾淨狀態開始,結果把 A 正在做的工作全沖掉了。最後你得到的是一堆寫了一半的檔案、被搞亂的索引,以及一堆衝突,解起來比你自己寫程式碼還費勁。
只有 agent 之間互不干擾,並行才能真正幫你省時間。
git worktree 是什麼
worktree 就是掛在同一個儲存庫上的第二個工作資料夾。
歷史相同、遠端相同,但每個 worktree 都簽出自己的分支,磁碟上也有自己的一套檔案。你可以同時擺五個,每個在不同的分支上,互不打擾。
一個 .git,多個工作區。就這麼簡單。
實戰:每個 agent 一個 worktree
下面是具體做法。在你的儲存庫裡執行:
git worktree add ../project-auth -b feature/auth
git worktree add ../project-billing -b feature/billing
git worktree add ../project-export -b feature/export
你剛剛建立了三個資料夾,每個都在自己的分支上。然後在每個裡啟動一個 agent:
cd ../project-auth && claude
cd ../project-billing && codex
每個 agent 都有自己的資料夾、自己的分支、自己的檔案。auth agent 永遠看不到 billing agent 在幹什麼。不可能撞車。
某個功能做好後,你審查它的分支然後合併。接著清理:
git worktree remove ../project-auth
資料夾沒了,分支還留在你的歷史裡。乾淨利落。
需要知道的 3 個坑
第一個坑:共享的中心檔案。如果兩個功能都得動同一個 routes.ts 或同一個資料庫 schema,worktree 救不了你,合併的時候照樣衝突。一旦某個 agent 碰了大家共用的檔案,其他 agent 就得等,或者繞著走。
第二個坑:分支跑偏。你的 agent 在幹活的同時,main 也在往前走。三天後你的分支已經落後一截,合併起來就很痛苦。要麼趁早、勤快地 rebase,要麼把每次會話控制得短一點。
第三個坑:忘了清理。每個 worktree 都是磁碟上真實存在的資料夾。一天開十個又不清理,你的父目錄很快就亂得沒法看了。git worktree list 能列出還留著哪些,git worktree prune 能清掉已經失效的。
第四個坑:worktree 一開始是空的
worktree 裡只有 Git 跟蹤的檔案。git worktree add 給你的是原始碼,沒有 node_modules,沒有 .venv,沒有存著你本地金鑰的 .env,也沒有建置快取。在全新 worktree 裡啟動的 agent 跑不了測試,起不了開發伺服器,而且往往不說原因:npm test 因為缺模組而失敗,應用因為缺環境變數而失敗,agent 把頭十分鐘花在了管道雜活上,而不是花在工單上。
這個坑我們自己也踩過。一位使用者指出,AgentsRoom 的 worktree 選項藏在 agent 表單的高階選項裡,而且任何在 worktree 裡啟動的 agent 都沒有任何依賴,一個測試都跑不了。兩點都屬實。隔離功能是有的,但如果不做一步誰都記不住的手動操作,它就沒法用。
從 1.194.0 版開始,這個選項放在 agent 表單的隔離區塊裡,不用展開任何東西就能看到,而在全新 worktree 裡啟動的第一個 agent 拿到的已經是準備好的 worktree:AgentsRoom 會從主簽出裡複製匹配某個模式的被忽略檔案(預設是所有 .env*,從不覆蓋,也從不復制進 node_modules 或 .git),然後執行根據 lockfile 檢測出的安裝命令(bun、pnpm、yarn、npm、uv、poetry、pipenv、bundle、composer),或者你在專案設定裡指定的命令。命令在 agent 自己的終端裡執行,所以你看得見,安裝失敗也不會阻止 agent 啟動。每個 worktree 只做一次:worktree 私有 git 目錄裡的一個標記會讓下一次啟動跳過這一步。
如果你手動來做,步驟一樣,一個腳本就能裝下:複製 .env*,執行安裝,然後啟動 agent。把 git worktree add 包進這個腳本里,不然到第三個 agent 你就會忘。
如果你不想自己維護這個腳本,AgentsRoom 的 worktree 管理器就是替你做這件事的工具:每個工單或每個 agent 一個 worktree,在 agent 啟動前準備好,之後在同一個視窗裡審查、提交和合並。
真正的問題:誰來盯著這五個資料夾?
worktree 解決的是檔案衝突,但解決不了你的心智負擔。
你有五個資料夾、五個 agent、五個終端。哪個在等你審查?哪個十分鐘前就跑完了、而你當時正看著別處?哪個崩了?
如果你一直待在終端裡,這就是"每個 agent 一個 worktree"這套做法的天花板。技術上的衝突你解決了,但要盯的視窗也翻了好幾倍。
AgentsRoom 把每個 agent 放到一塊獨立的卡片上,帶著它的狀態和顏色,不管它跑在哪個 worktree 裡。某個 agent 一旦在等你,它就會變紅並提醒你。想了解疊加在 worktree 之上的完整方法,讀一讀如何並行執行 3 到 8 個 agent 而不手忙腳亂。
核心要點
一個 agent,一個 worktree,一個分支。這就是認真做多 agent 工作的基本規則。
命令三行就寫完,好處立竿見影:你的 agent 不再互相覆蓋。再加上一個能告訴你哪個 agent 需要你的檢視,你就真的能同時扛住五件事,而不至於把自己逼瘋。
下載 AgentsRoom
在一個視窗中執行你所有專案的所有 AI 代理。
配套應用:隨時隨地監控你的 Agent
使用 Claude、Codex、Antigravity CLI 或其他 AI 提供商。
把 Bug 和需求直接傳送到您的公開待辦清單。
繼續閱讀
我的 AI 跑步教練是一個 Git 儲存庫加一個 Claude 代理
跑完一趟,手錶自動同步,三分鐘後分析已經寫進我的儲存庫,本週計劃被重新調整過,教練還在 Strava 活動下留了一條評論。沒有做 App,沒有寫伺服器,沒有按 token 計費的帳單:一個 Claude 訂閱、AgentsRoom,加上一堆 Markdown 檔案。下面是完整的搭建過程,可以照著復現。
閱讀全文一個 Claude 帳戶用在兩台電腦上,或兩個人共用:哪些行得通
一個 Claude 帳戶可以在你所有的裝置上登入,所有裝置都從同一個 5 小時上限和每週上限里扣,Claude 和 Claude Code 合在一起算。兩個人共用一個帳戶違反 Anthropic 的條款,也沒有家庭套餐。這是我們在 2026 年 10 月 25 日核實的內容,以及如何檢視哪台電腦用了多少。
閱讀全文Claude Code 與 Codex CLI 對比:2026 年該選哪個(以及為什麼我兩個都用)
一份關於 Claude Code 和 Codex CLI 的誠實對比:價格、速度、MCP、可控性。還有為什麼幾週之後,我不再二選一。
閱讀全文