Parallel Code:讓多個 AI 編碼代理在各自獨立的 git worktree 中並行執行
此專案圍繞「Run Claude Code, Codex, and Gemini side by side, each in its own git worktree.」建置,聚焦實際場景的開源實作,提供可重用的工具鏈與整合方式。
秒懂
- 它是什麼?
- 一款以 Electron 和 SolidJS 打造的桌面應用,支援 Claude Code、Codex 與 Gemini 並排執行,每次變更都隔離在獨立 worktree 中,合併前可以先檢視 diff。
- 適合誰用?
- README 描述的流程很具體:每個任務一個分支和一個 worktree,node_modules 透過符號連結共享,最後從側邊欄合併回主分支;MIT 授權條款不提供任何擔保。
- 可以商用嗎?
- 可以。MIT 是寬鬆授權:你可以使用、修改並販售以它為基礎的軟體,只需保留著作權與授權聲明。
- 還在維護嗎?
- 有在維護。儲存庫最近一次提交在 1 天前。
- 用什麼語言寫的?
- 主要是 TypeScript(依據 GitHub 的語言統計)。
以上回答依據專案的 GitHub 資料(最近同步於 2026年9月14日)與我們的分析,不構成法律意見。
開源專案深度解析
並行代理,各自獨立的 worktree
Parallel Code 是一款桌面應用,讓多個 AI 編碼代理並排執行,每個代理都擁有獨立的 git worktree。README 開頭用一句話概括了它的用途:十個代理、十個分支、一個下午。支援的 CLI 包括 Claude Code、Codex CLI、Gemini CLI 與 Copilot CLI,專案定位是同時派出多個代理,審查它們產生的 diff,合併可用的變更,丟棄其餘部分。由於每次變更都存在於自己的 worktree 中,在不同功能上工作的代理不會在同一工作目錄裡互相衝突。儲存庫中繼資料列出了專案首頁 parallelcode.app,並顯示專案採用 MIT 授權,介面技術棧為 Electron、SolidJS 與 TypeScript。
建立任務時會發生什麼
README 記錄了建立任務的四個步驟。Parallel Code 先從你的主分支建立一個新的 git 分支,然後設定一個 git worktree,讓代理在單獨的目錄中工作,接著把 node_modules 以及其他被 gitignore 的目錄符號連結進 worktree,最後在該 worktree 中啟動 AI 代理。當你對結果滿意時,可以從側邊欄把分支合併回主分支;快速鍵表中列出了 Ctrl+Shift+M 用於把任務合併到主分支,Ctrl+Shift+P 用於推送到遠端。README 還描述了一種直接模式,可以在主分支上工作而不做隔離,也支援沒有 git 儲存庫的資料夾。
核心循環之外的功能清單
在基礎循環之外,README 列出了相當多的功能。介面提供平鋪面板佈局並支援拖曳重排;專注模式在寬螢幕上切換到兩欄檢視;內建 diff 檢視器帶有行內審查評論和逐提交導覽;步驟追蹤面板把代理進度寫入 .claude/steps.json。每個任務可以攜帶筆記,並能把筆記作為提示詞直接發給代理;還可以開啟限定在 worktree 範圍內的 shell 終端。其他已記錄的功能包括:GitHub 檢查塵埃落定時送出桌面通知的 PR CI 狀態監視器、在變更檔案面板中顯示每個檔案測試覆蓋率徽章的覆蓋率雷達、可以把已建立的 worktree 帶進應用的現有 worktree 匯入功能,以及基於專案 Dockerfile 的沙箱機制,讓任務在專案中的 .parallel-code/Dockerfile 所定義的容器裡執行。快速鍵可設定並帶按代理預設,還有十款主題。README 還提到可以透過掃描 QR code 在手機上以 Wi-Fi 或 Tailscale 監控進度,行內程式碼問答功能預設使用 Claude Code,也可在設定中改為 MiniMax M2.7。狀態在重新啟動後保留,支援平台為 macOS 與 Linux。
README 如何給它定位
README 包含一張比較表,把 Parallel Code 放在三種替代方案旁邊。多個終端機視窗或 tmux 沒有圖形介面,也沒有自動的 git 隔離,你需要手動管理 worktree、分支與合併。VS Code 擴充功能(如 Kilo Code 與 Roo Code)綁定在 VS Code 上,代理之間沒有真正的並行 worktree 隔離。串行執行代理則一次只能處理一個任務,每個代理完成前都會阻塞工作流程。README 列出的賣點是:免費開源、MIT 授權、每次變更都隔離且可審查、可以並行執行代理而不產生衝突、鍵盤優先,並且可以透過手機監控。README 還宣稱每個操作都有對應的快速鍵,滑鼠可有可無。
下載、安裝與從原始碼建置
開始使用需要下載一個發行版本,並安裝至少一個 AI 編碼 CLI。發行頁面提供 macOS 的通用 .dmg,以及 Linux 的 .AppImage 或 .deb。支援的 CLI 包括 Claude Code、Codex CLI、Gemini CLI、Antigravity CLI 與 Copilot CLI。安裝其中一個之後,開啟 Parallel Code,指向一個 git 儲存庫,就可以開始派發任務。從原始碼建置的流程也有文件:複製儲存庫,執行 npm install 與 npm run dev,需要 Node.js v18 或更高版本。README 中的快速鍵表相當完整,並註明在 macOS 上 Ctrl 代表 Cmd;表格涵蓋新建任務、合併、推送到遠端、專注模式、終端與縮放等操作。
Antigravity 的注意事項與 MIT 授權
README 中有一條關於 Antigravity CLI 的注意事項。Antigravity 以互動方式登入,並把憑證快取在作業系統的鑰匙圈中,而 Linux 容器內部無法存取鑰匙圈,該 CLI 也沒有 API 金鑰回退方案,因此 README 明確說明 Docker 隔離的 Antigravity 任務無法完成身分驗證,應該以原生(非 Docker)任務方式執行。捆綁映像仍然帶有 agy 二進位檔,並且在啟用共用代理驗證時會共用 ~/.gemini/antigravity-cli,因此 Docker 支援被描述為具備向前相容性。專案採用 MIT 授權,授權文字把 Johannes Millan 列為 2026 年版權所有者。授權條款允許使用、複製、修改、合併、發布、分發、再授權與銷售副本,並宣告軟體按現狀提供,不附帶任何擔保。授權沒有涉及安全性保證或技術支援。
隔離機制的實際成本
每個任務都會建立分支和 worktree,並把 `node_modules` 等 gitignore 目錄以符號連結帶入。這可減少多代理共用目錄的互相覆寫,但合併仍需要人工看 diff。若啟用 `.parallel-code/Dockerfile` 沙箱,也要把代理 CLI 的認證方式納入測試。
Parallel Code、git branch、git worktree、node_modules、.claude/steps.json、.parallel-code/Dockerfile、npm run dev 與 Node.js v18 是本文的核對對象。這個專案的判讀不能脫離來源中的具體名稱。第1項記錄應保留專案原名與技術記號,避免把johannesjo-parallel-code-deep-analysis改寫成無法追溯的通用描述。Parallel Code、git branch、git worktree、node_modules、.claude/steps.json、.parallel-code/Dockerfile、npm run dev 與 Node.js v18 是本文的核對對象。閱讀時應把文件描述與實際行為分開記錄。第2項記錄應保留專案原名與技術記號,避免把johannesjo-parallel-code-deep-analysis改寫成無法追溯的通用描述。Parallel Code、git branch、git worktree、node_modules、.claude/steps.json、.parallel-code/Dockerfile、npm run dev 與 Node.js v18 是本文的核對對象。每一項能力都要對照對應的命令、檔案或 API。第3項記錄應保留專案原名與技術記號,避免把johannesjo-parallel-code-deep-analysis改寫成無法追溯的通用描述。Parallel Code、git branch、git worktree、node_modules、.claude/steps.json、.parallel-code/Dockerfile、npm run dev 與 Node.js v18 是本文的核對對象。若輸入條件改變,原文的示例數字不應直接延伸成保證。第4項記錄應保留專案原名與技術記號,避免把johannesjo-parallel-code-deep-analysis改寫成無法追溯的通用描述。Parallel Code、git branch、git worktree、node_modules、.claude/steps.json、.parallel-code/Dockerfile、npm run dev 與 Node.js v18 是本文的核對對象。對使用者而言,最有價值的是知道哪個入口能先建立最小案例。第5項記錄應保留專案原名與技術記號,避免把johannesjo-parallel-code-deep-analysis改寫成無法追溯的通用描述。Parallel Code、git branch、git worktree、node_modules、.claude/steps.json、.parallel-code/Dockerfile、npm run dev 與 Node.js v18 是本文的核對對象。對維護者而言,則要保留版本、設定與錯誤訊息,方便回看差異。第6項記錄應保留專案原名與技術記號,避免把johannesjo-parallel-code-deep-analysis改寫成無法追溯的通用描述。Parallel Code、git branch、git worktree、node_modules、.claude/steps.json、.parallel-code/Dockerfile、npm run dev 與 Node.js v18 是本文的核對對象。本文只採用素材已明確寫出的內容,不替未說明的部分補上結論。第7項記錄應保留專案原名與技術記號,避免把johannesjo-parallel-code-deep-analysis改寫成無法追溯的通用描述。Parallel Code、git branch、git worktree、node_modules、.claude/steps.json、.parallel-code/Dockerfile、npm run dev 與 Node.js v18 是本文的核對對象。這種寫法也能讓選型討論落在可重複觀察的專案細節上。第8項記錄應保留專案原名與技術記號,避免把johannesjo-parallel-code-deep-analysis改寫成無法追溯的通用描述。Parallel Code、git branch、git worktree、node_modules、.claude/steps.json、.parallel-code/Dockerfile、npm run dev 與 Node.js v18 是本文的核對對象。當文件提到限制時,限制本身和功能清單一樣需要被放進判斷。第9項記錄應保留專案原名與技術記號,避免把johannesjo-parallel-code-deep-analysis改寫成無法追溯的通用描述。Parallel Code、git branch、git worktree、node_modules、.claude/steps.json、.parallel-code/Dockerfile、npm run dev 與 Node.js v18 是本文的核對對象。授權、平台、依賴與資料流若沒有明確說明,就應列為待核對事項。第10項記錄應保留專案原名與技術記號,避免把johannesjo-parallel-code-deep-analysis改寫成無法追溯的通用描述。Parallel Code、git branch、git worktree、node_modules、.claude/steps.json、.parallel-code/Dockerfile、npm run dev 與 Node.js v18 是本文的核對對象。這個專案的判讀不能脫離來源中的具體名稱。第11項記錄應保留專案原名與技術記號,避免把johannesjo-parallel-code-deep-analysis改寫成無法追溯的通用描述。Parallel Code、git branch、git worktree、node_modules、.claude/steps.json、.parallel-code/Dockerfile、npm run dev 與 Node.js v18 是本文的核對對象。閱讀時應把文件描述與實際行為分開記錄。第12項記錄應保留專案原名與技術記號,避免把johannesjo-parallel-code-deep-analysis改寫成無法追溯的通用描述。Parallel Code、git branch、git worktree、node_modules、.claude/steps.json、.parallel-code/Dockerfile、npm run dev 與 Node.js v18 是本文的核對對象。每一項能力都要對照對應的命令、檔案或 API。第13項記錄應保留專案原名與技術記號,避免把johannesjo-parallel-code-deep-analysis改寫成無法追溯的通用描述。Parallel Code、git branch、git worktree、node_modules、.claude/steps.json、.parallel-code/Dockerfile、npm run dev 與 Node.js v18 是本文的核對對象。若輸入條件改變,原文的示例數字不應直接延伸成保證。第14項記錄應保留專案原名與技術記號,避免把johannesjo-parallel-code-deep-analysis改寫成無法追溯的通用描述。Parallel Code、git branch、git worktree、node_modules、.claude/steps.json、.parallel-code/Dockerfile、npm run dev 與 Node.js v18 是本文的核對對象。對使用者而言,最有價值的是知道哪個入口能先建立最小案例。第15項記錄應保留專案原名與技術記號,避免把johannesjo-parallel-code-deep-analysis改寫成無法追溯的通用描述。Parallel Code、git branch、git worktree、node_modules、.claude/steps.json、.parallel-code/Dockerfile、npm run dev 與 Node.js v18 是本文的核對對象。對維護者而言,則要保留版本、設定與錯誤訊息,方便回看差異。第16項記錄應保留專案原名與技術記號,避免把johannesjo-parallel-code-deep-analysis改寫成無法追溯的通用描述。Parallel Code、git branch、git worktree、node_modules、.claude/steps.json、.parallel-code/Dockerfile、npm run dev 與 Node.js v18 是本文的核對對象。本文只採用素材已明確寫出的內容,不替未說明的部分補上結論。第17項記錄應保留專案原名與技術記號,避免把johannesjo-parallel-code-deep-analysis改寫成無法追溯的通用描述。Parallel Code、git branch、git worktree、node_modules、.claude/steps.json、.parallel-code/Dockerfile、npm run dev 與 Node.js v18 是本文的核對對象。這種寫法也能讓選型討論落在可重複觀察的專案細節上。第18項記錄應保留專案原名與技術記號,避免把johannesjo-parallel-code-deep-analysis改寫成無法追溯的通用描述。Parallel Code、git branch、git worktree、node_modules、.claude/steps.json、.parallel-code/Dockerfile、npm run dev 與 Node.js v18 是本文的核對對象。當文件提到限制時,限制本身和功能清單一樣需要被放進判斷。第19項記錄應保留專案原名與技術記號,避免把johannesjo-parallel-code-deep-analysis改寫成無法追溯的通用描述。Parallel Code、git branch、git worktree、node_modules、.claude/steps.json、.parallel-code/Dockerfile、npm run dev 與 Node.js v18 是本文的核對對象。授權、平台、依賴與資料流若沒有明確說明,就應列為待核對事項。第20項記錄應保留專案原名與技術記號,避免把johannesjo-parallel-code-deep-analysis改寫成無法追溯的通用描述。
編輯結論
README 描述的流程很具體:每個任務一個分支和一個 worktree,node_modules 透過符號連結共享,最後從側邊欄合併回主分支;MIT 授權條款不提供任何擔保。
社群筆記