dmux 工作流程 是做什麼的?
使用 dmux(一種適用於代理工具的 tmux 窗格管理器)協調平行 AI 代理工作階段。
何時啟用
- 平行執行多個代理工作階段
- 協調 Claude Code、Codex 及其他工具間的工作
- 受益於「分而治之」平行處理的複雜任務
- 使用者說「平行執行」、「拆分這項工作」、「使用 dmux」或「多代理」
什麼是 dmux
dmux 是一個基於 tmux 的協調工具,用於管理 AI 代理窗格:
- 按
n建立一個帶有提示的新窗格 - 按
m將窗格輸出合併回主工作階段 - 支援:Claude Code、Codex、OpenCode、Cline、Gemini、Qwen
安裝: 在審查套件後,從其儲存庫安裝 dmux。請參閱 github.com/standardagents/dmux
快速入門
# 啟動 dmux 工作階段
dmux
# 建立代理窗格(在 dmux 中按 'n',然後輸入提示)
# 窗格 1:「在 src/auth/ 中實作認證中介軟體」
# 窗格 2:「為使用者服務撰寫測試」
# 窗格 3:「更新 API 文件」
# 每個窗格執行自己的代理工作階段
# 按 'm' 將結果合併回來
工作流程模式
模式 1:研究 + 實作
將研究和實作拆分為平行軌道:
窗格 1(研究):「研究 Node.js 中速率限制的最佳實務。
檢查現有函式庫,比較方法,並將結果寫入
/tmp/rate-limit-research.md」
窗格 2(實作):「為我們的 Express API 實作速率限制中介軟體。
先從基本的令牌桶開始,研究完成後再進行最佳化。」
# 窗格 1 完成後,將結果合併到窗格 2 的上下文中
模式 2:多檔案功能
跨獨立檔案平行化工作:
窗格 1:「為計費功能建立資料庫結構和遷移腳本」
窗格 2:「在 src/api/billing/ 中建立計費 API 端點」
窗格 3:「建立計費儀表板 UI 元件」
# 全部合併,然後在主窗格中進行整合
模式 3:測試 + 修復循環
在一個窗格中執行測試,在另一個窗格中修復:
窗格 1(監視器):「以監視模式執行測試套件。當測試失敗時,
摘要說明失敗原因。」
窗格 2(修復者):「根據窗格 1 的錯誤輸出修復失敗測試」
模式 4:跨工具協作
對不同任務使用不同的 AI 工具:
窗格 1(Claude Code):「審查認證模組的安全性」
窗格 2(Codex):「重構效能相關的工具函式」
窗格 3(Claude Code):「為結帳流程編寫 E2E 測試」
模式 5:程式碼審查管道
平行審查觀點:
窗格 1:「審查 src/api/ 的安全性漏洞」
窗格 2:「審查 src/api/ 的效能問題」
窗格 3:「審查 src/api/ 的測試覆蓋率缺口」
# 將所有審查結果合併成一份報告
最佳實務
- 僅限獨立任務。 不要平行化彼此輸出相依的任務。
- 明確界限。 每個窗格應處理不同的檔案或關注點。
- 策略性合併。 在合併之前先審查窗格輸出,以避免衝突。
- 使用 git worktrees。 對於容易發生檔案衝突的工作,為每個窗格使用獨立的工作樹。
- 資源感知。 每個窗格都會使用 API 權杖 — 將總窗格數保持在 5-6 個以下。
Git Worktree 整合
對於涉及重疊檔案的任務:
# 建立工作樹以隔離
git worktree add -b feat/auth ../feature-auth HEAD
git worktree add -b feat/billing ../feature-billing HEAD
# 在獨立的工作樹中執行代理
# 窗格 1:cd ../feature-auth && claude
# 窗格 2:cd ../feature-billing && claude
# 完成後合併分支
git merge feat/auth
git merge feat/billing
互補工具
| 工具 | 功能 | 使用時機 |
|---|---|---|
| dmux | 代理適用的 tmux 窗格管理 | 平行代理工作階段 |
| Superset | 支援 10+ 平行代理的終端機 IDE | 大規模協調 |
| Claude Code Task 工具 | 程序內子代理產生器 | 工作階段內的程式化平行處理 |
| Codex 多代理 | 內建代理角色 | Codex 特定的平行工作 |
ECC 輔助工具
ECC 現在包含一個用於外部 tmux 窗格協調的輔助工具,可搭配獨立的 git worktrees:
node scripts/orchestrate-worktrees.js plan.json --execute
plan.json 範例:
{
"sessionName": "skill-audit",
"baseRef": "HEAD",
"launcherCommand": "codex exec --cwd {worktree_path} --task-file {task_file}",
"workers": [
{ "name": "docs-a", "task": "修復技能 1-4 並撰寫交接筆記。" },
{ "name": "docs-b", "task": "修復技能 5-8 並撰寫交接筆記。" }
]
}
該輔助工具:
- 為每個工作者建立一個分支備份的 git worktree
- 可選擇性地將主要工作目錄中的選定
seedPaths覆蓋到每個工作者工作樹中 - 在
.orchestration/<session>/下為每個工作者寫入task.md、handoff.md和status.md檔案 - 啟動一個 tmux 工作階段,每個工作者佔用一個窗格
- 在其自己的窗格中啟動每個工作者的命令
- 保持主窗格空閒供協調者使用
當工作者需要存取尚未包含在 HEAD 中的髒檔案或未追蹤的本機檔案(例如本機協調腳本、草稿計畫或文件)時,請使用 seedPaths:
{
"sessionName": "workflow-e2e",
"seedPaths": [
"scripts/orchestrate-worktrees.js",
"scripts/lib/tmux-worktree-orchestrator.js",
".claude/plan/workflow-e2e-test.json"
],
"launcherCommand": "bash {repo_root}/scripts/orchestrate-codex-worker.sh {task_file} {handoff_file} {status_file}",
"workers": [
{ "name": "seed-check", "task": "在開始工作前確認已播種的檔案是否存在。" }
]
}
故障排除
- 窗格無回應: 直接切換到該窗格,或使用
tmux capture-pane -pt <session>:0.<pane-index>檢查。 - 合併衝突: 使用 git worktrees 隔離每個窗格的檔案變更。
- 高權杖使用量: 減少平行窗格數量。每個窗格都是一個完整的代理工作階段。
- 找不到 tmux: 使用
brew install tmux(macOS)或apt install tmux(Linux)安裝。