Claude DevFleet マルチエージェントオーケストレーション
使用するタイミング
複数の Claude Code エージェントを並行してコーディングタスクにディスパッチする必要がある場合にこのスキルを使用します。各エージェントは、完全なツールを備えた分離された git ワークツリーで実行されます。
セットアップ
DevFleet サーバーは別のプロジェクトであり、ECC にはバンドルされていません。最初にそのリポジトリからインストールして実行してください: https://github.com/LEC-AI/claude-devfleet
次に、MCP 経由で実行中のインスタンスに接続します:
claude mcp add devfleet --transport http http://localhost:18801/mcp
初めて使用する前に、ポート18801で待機しているプロセスがインストールした DevFleet バイナリであることを確認してください(localhost MCP サーバーに関する SECURITY.md を参照)。
仕組み
ユーザー → 「認証とテスト付きのREST APIを構築して」
↓
plan_project(prompt) → project_id + ミッションDAG
↓
計画をユーザーに表示 → 承認を得る
↓
dispatch_mission(M1) → エージェント1がワークツリーで起動
↓
M1完了 → 自動マージ → 自動ディスパッチ M2(depends_on M1)
↓
M2完了 → 自動マージ
↓
get_report(M2) → files_changed, what_done, errors, next_steps
↓
ユーザーに報告
ツール
| ツール | 目的 |
|---|---|
plan_project(prompt) | AIが説明をチェーンされたミッションを持つプロジェクトに分解します |
create_project(name, path?, description?) | 手動でプロジェクトを作成し、project_id を返します |
create_mission(project_id, title, prompt, depends_on?, auto_dispatch?) | ミッションを追加します。depends_on はミッションID文字列のリストです(例: ["abc-123"])。依存関係が満たされたときに自動開始するには auto_dispatch=true を設定します。 |
dispatch_mission(mission_id, model?, max_turns?) | ミッションでエージェントを開始します |
cancel_mission(mission_id) | 実行中のエージェントを停止します |
wait_for_mission(mission_id, timeout_seconds?) | ミッションが完了するまでブロックします(下記の注意を参照) |
get_mission_status(mission_id) | ブロックせずにミッションの進行状況を確認します |
get_report(mission_id) | 構造化レポート(変更されたファイル、テスト済み、エラー、次のステップ)を読み取ります |
get_dashboard() | システム概要: 実行中のエージェント、統計、最近のアクティビティ |
list_projects() | すべてのプロジェクトを参照します |
list_missions(project_id, status?) | プロジェクト内のミッションを一覧表示します |
wait_for_missionに関する注意: この関数は、timeout_seconds(デフォルト600)まで会話をブロックします。長時間実行されるミッションの場合は、代わりに30〜60秒ごとにget_mission_statusをポーリングすることを推奨します。これにより、ユーザーは進行状況の更新を確認できます。
ワークフロー: 計画 → ディスパッチ → 監視 → 報告
- 計画:
plan_project(prompt="...")を呼び出す →project_idとdepends_onチェーンおよびauto_dispatch=trueを持つミッションのリストを返します。 - 計画の表示: ミッションのタイトル、タイプ、依存チェーンをユーザーに提示します。
- ディスパッチ: ルートミッション(
depends_onが空)に対してdispatch_mission(mission_id=<最初のミッションID>)を呼び出します。残りのミッションは、依存関係が完了すると自動的にディスパッチされます(plan_projectがそれらにauto_dispatch=trueを設定するため)。 - 監視:
get_mission_status(mission_id=...)またはget_dashboard()を呼び出して進行状況を確認します。 - 報告: ミッションが完了したら
get_report(mission_id=...)を呼び出します。ハイライトをユーザーと共有します。
同時実行数
DevFleet はデフォルトで最大3つの同時エージェントを実行します(DEVFLEET_MAX_AGENTS で設定可能)。すべてのスロットが埋まっている場合、auto_dispatch=true のミッションはミッション監視機能でキューに入れられ、スロットが空き次第自動的にディスパッチされます。現在のスロット使用状況は get_dashboard() で確認してください。
例
完全自動: 計画して起動
plan_project(prompt="...")→ ミッションと依存関係を含む計画を表示します。- 最初のミッション(
depends_onが空のもの)をディスパッチします。 - 残りのミッションは依存関係が解決されると自動的にディスパッチされます(
auto_dispatch=trueが設定されています)。 - プロジェクトIDとミッション数を報告し、ユーザーが何が起動されたかを把握できるようにします。
get_mission_statusまたはget_dashboard()を定期的にポーリングし、すべてのミッションが終了状態(completed、failed、またはcancelled)になるまで待ちます。- 各終了ミッションに対して
get_report(mission_id=...)を呼び出し、成功を要約し、エラーと次のステップとともに失敗を報告します。
手動: ステップバイステップ制御
create_project(name="My Project")→project_idを返します。- 最初の(ルート)ミッションに対して
create_mission(project_id=project_id, title="...", prompt="...", auto_dispatch=true)→root_mission_idを取得します。 後続の各タスクに対してcreate_mission(project_id=project_id, title="...", prompt="...", auto_dispatch=true, depends_on=["<root_mission_id>"])を実行します。 - 最初のミッションに対して
dispatch_mission(mission_id=...)でチェーンを開始します。 - 完了したら
get_report(mission_id=...)を実行します。
レビュー付き順次実行
create_project(name="...")→project_idを取得します。create_mission(project_id=project_id, title="Implement feature", prompt="...")→impl_mission_idを取得します。dispatch_mission(mission_id=impl_mission_id)を実行し、get_mission_statusで完了するまでポーリングします。get_report(mission_id=impl_mission_id)で結果をレビューします。create_mission(project_id=project_id, title="Review", prompt="...", depends_on=[impl_mission_id], auto_dispatch=true)— 依存関係が既に満たされているため自動開始します。
ガイドライン
- ユーザーが先に進めと言わない限り、ディスパッチ前に必ず計画をユーザーに確認してください。
- ステータスを報告する際はミッションタイトルとIDを含めてください。
- ミッションが失敗した場合は、再試行する前にそのレポートを読んでください。
- 一括ディスパッチの前に
get_dashboard()でエージェントスロットの空き状況を確認してください。 - ミッションの依存関係は DAG を形成します — 循環依存関係を作成しないでください。
- 各エージェントは分離された git ワークツリーで実行され、完了時に自動マージします。マージ競合が発生した場合、変更は手動解決のためにエージェントのワークツリーブランチに残ります。
- 手動でミッションを作成する場合、依存関係完了時に自動的にトリガーさせたい場合は必ず
auto_dispatch=trueを設定してください。このフラグがないと、ミッションはdraftステータスのままになります。