AI エージェントを並列実行する際に起きがちなファイル競合問題を、git worktree を活用して自動解決するツール「dmux」を紹介する。
背景:AI エージェント並列実行の落とし穴
Claude Code や OpenAI Codex などの AI コーディングエージェントを複数同時に走らせると、次のような問題が起きやすい。
- 共通ファイルの同時上書き:複数エージェントが同じファイルを編集し、片方の変更が消える
- 変更の消失:あるエージェントが直したコードを、別のエージェントが元に戻してしまう
ターミナルを複数開いたり、tmux でペインを分割して並列実行する方法は手軽だが、全エージェントが同一のワーキングディレクトリを共有しているため、この問題は常に起きうる。
dmux とは
dmux は、AI エージェントの並列実行環境を安全に管理するための CLI ツール。内部的には git worktree + branch の自動隔離 を行い、各エージェントが独立したディレクトリ・ブランチで作業できる環境を自動でセットアップする。
主な特徴
- 自動隔離:難しい設定なしに git worktree + ブランチを自動作成し、エージェントごとに完全に分離した環境を提供する
- 衝突の自動解決:マージ競合が発生した場合、AI が自動で解決を試みる
- エージェント切り替え:Claude Code、Codex、Claude Opus、Composer など任意のエージェントを簡単に切り替え可能
- A/B テスト:複数エージェントの出力を比較検証できる
git worktree によるエージェント隔離の仕組み
git worktree は、同一リポジトリを複数のディレクトリに展開する Git 標準機能。通常の git clone とは異なり、リポジトリのデータを共有しながら、異なるブランチを別ディレクトリでチェックアウトできる。
リポジトリ
├── (メインディレクトリ) ← ブランチ: main
├── .worktrees/agent-1/ ← ブランチ: agent/task-a ← エージェント1
└── .worktrees/agent-2/ ← ブランチ: agent/task-b ← エージェント2
dmux はこの仕組みを自動化し、各エージェントを専用の worktree に割り当てる。エージェント同士は別ブランチで動くため、同一ファイルへの同時書き込みが発生しない。
利用が向いているケース
- 複数のタスクを並列で AI に処理させたい
- 異なるアプローチを同時に試して結果を比較したい
- Claude Code の並列セッションを安定して運用したい
インストール
前提条件
- Node.js 18+
- tmux 3.0+
- Git 2.20+
- AI エージェント CLI が少なくとも1つインストール済み(Claude Code、Codex、Gemini CLI など)
npm でインストール
| |
起動
プロジェクトディレクトリで dmux を実行するだけで起動できる。
| |
基本操作
dmux は tmux ベースの TUI で、キーボードショートカットで操作する。
| キー | 操作 |
|---|---|
n | 新規ペインを作成 |
j / Enter | ペインに移動 |
m | ペインメニューを開く |
f | ファイルブラウザ |
q | 終了 |
ワークフロー
nで新規ペインを作成- タスクの説明(プロンプト)を入力
- 使用するエージェントを選択(複数選択可、空のままだと通常のターミナル)
- dmux が自動で git worktree とブランチを作成し、エージェントを起動
各エージェントは隔離された worktree 内で動作するため、完了後に自動でマージされる。
関連ツール:cmux との違いと使い分け
AI エージェントの並列実行を支援するツールとして cmux もある。dmux と名前が似ているが、役割が異なる。
- dmux — tmux ベースの CLI ツール。git worktree の自動作成・管理によるファイル競合の防止が主な役割
- cmux — macOS ネイティブのターミナルアプリ(iTerm2 や Terminal.app の代替)。縦タブ、通知リング、インアプリブラウザなど、複数エージェントの視覚的な管理が主な役割
| dmux | cmux | |
|---|---|---|
| 種類 | CLI ツール(tmux 上で動作) | ターミナルエミュレータ(アプリ) |
| 主な役割 | worktree による作業環境の隔離 | エージェント状態の視覚的管理・通知 |
| worktree 管理 | 自動 | なし(手動で切り替え) |
| プラットフォーム | Linux / macOS | macOS のみ |
どちらか一方で十分なケース
- dmux だけ:通常のターミナルで
dmuxを起動すれば、worktree 隔離と並列実行は完結する。視覚的な通知やブラウザ統合が不要ならこれで十分 - cmux だけ:ワークスペースごとに手動で worktree を切り替えれば、dmux なしでも隔離は可能。自動化より UI の快適さを重視する場合に向く
組み合わせるケース
cmux のターミナル上で dmux を起動する構成。iTerm2 の中で tmux を使うのと同じ関係になる。dmux の自動 worktree 管理に加えて、cmux の通知リングやインアプリブラウザも活用したい場合に有効。
まとめ
dmux は、AI エージェントの並列実行における「ファイル競合」という実用上の課題に対して、git worktree という既存の Git 機能を活かしてシンプルに解決するツール。単体でも十分に機能し、cmux のような UI 特化のターミナルと組み合わせればさらに快適な並列実行環境を構築できる。Claude Code や Codex を使った開発フローを並列化・効率化したい場合に有力な選択肢となる。