エージェントを並列実行
このガイドでは、複数のエージェントを同時に実行し、互いを上書きしないようにする方法を説明します。
分離の単位はエージェントではなくスペース
「分離の単位はエージェントではなくスペース」というセクションスペースで作業が始まると、Control Center はそのスペース自身のルート以下に、登録済みリポジトリごとにコピーオンライトのチェックアウトを 1 つプロビジョニングします。ブランチはワークスペースのブランチ名テンプレートから導出されます。その後、スペース内の各エージェントはそれぞれ独自のオーバーレイ作業ディレクトリを受け取りますが、それらのオーバーレイはそのスペースの repos/ ディレクトリを共有します。
つまり:
- 異なるスペースの 2 つのエージェントは、異なるチェックアウトで、異なるブランチ上で作業します。これが真の分離です。
- 同じスペースの 2 つのエージェントは、同じチェックアウトで、同じブランチ上で作業します。オーバーレイパスは異なるため、ディスパッチパスロック(同一の作業ディレクトリを要求したときにだけ実行を直列化する)も、両者を直列化しません。2 つは同じファイルに同時に書き込めます。
そこから導かれるルール: 並列タスクごとに 1 つのスペース。
タスクを並列で実行する — スペースを分ける
「タスクを並列で実行する — スペースを分ける」というセクション- エージェント A でスペースを開き、タスクを送ります。
- エージェント B で 2 つ目のスペースを開き、別のタスクを送ります。
- どちらも即座にディスパッチされ、それぞれが自分のスペースのチェックアウトで、自分のブランチ上で実行されます。
エージェントがファイルを編集する場合は、常にこの手順を使ってください。
1 つのスペースで共同作業する — 複数メンション
「1 つのスペースで共同作業する — 複数メンション」というセクション1 つのスペースで、複数のエージェントを @ メンションします:
@alice refactor the auth module. @bob review what alice lands.両方のエージェントが並列でディスパッチされ、送信者でタグ付けされた状態で同じスペースにストリームします。スペースのチェックアウトを共有するため、これは共同作業 — 一方が書き込み、一方が読む、あるいは 2 つのエージェントが同じツリーについて推論する — に使い、2 つの独立した編集には使わないでください。
パイプラインからファンアウトする
「パイプラインからファンアウトする」というセクション組み込みの pr_review テンプレートは、ファンアウトの同梱例です。複数のレビュアーノードが 1 つのトリガーから同時に実行され、Consolidate (join) ノードがそれらの検出結果を 1 つのレポートにまとめます。パイプライン画面から実行すると、すべてのレビュアーが並列でディスパッチされます。
パイプラインエディターは終端センチネルを非表示にし、ステップを追加または接続するときに、すべての有効なシンクを待つよう配線し直します。そのため、自分で描いたブランチも確実に実行されます。
実行の様子を確認する
「実行の様子を確認する」というセクションオブザーバビリティ → ライブ(サイドバー下部 → オブザーバビリティ、次にライブタブ)には、このワークスペースのエージェント名簿が 1 秒ごとに更新されて表示されます。ステータス(実行中 / アイドル / 休止中 / 中止)、各エージェントが何をしているか、最新実行のトークンとコスト、実行中プロセスの強制終了コントロールです。行を選択すると、ライブトランスクリプトのドロワーがドッキングされます。
設定 → ワークスペース → エージェント には同じ名簿が、各エージェントの実行履歴から導出された、注意を優先する別のステータス語彙 — 実行中、ブロック中、失敗、アイドル、まだ実行がありません — で表示され、注意が必要なものが上位に浮かぶように並べ替えられます。各エージェントの ログ タブには、そのエージェント自身の実行履歴が入っています。
どちらの画面も、アクティブなワークスペースにスコープされます。
コンフリクトに対処する
「コンフリクトに対処する」というセクションスペースをまたぐ場合、各スペースはそれぞれ独自のブランチ上にあるため、衝突は 2 つ目のプルリクエストをマージするときに、通常の Git マージコンフリクトとして表面化します。他のマージコンフリクトと同じように解決してください。
1 つのスペースの内部にはブランチの境界もロックもありません。エージェントは同じファイルをリアルタイムで書き込んでおり、負けた側は単純に上書きされます。2 つのエージェントに 1 つのスペースで編集させたくなったら、代わりに作業を 2 つのスペースに分割してください。
どちらの場合でも衝突を減らすには:
- 各エージェントに異なるスコープ — 異なるファイル、異なるモジュール — を与えます。
- ディスパッチする前に、コードグラフを使ってその変更が何に触れるかを確認します。コードグラフでコードを検索を参照してください。
- 各エージェントのプルリクエストを速やかにレビューしてマージします。
リソースに関する考慮事項
「リソースに関する考慮事項」というセクション実行中のエージェントごとに、次のコストがかかります:
- スペースのチェックアウト — コピーオンライトが利用できる間はディスク上でごくわずかです。Windows では
git worktreeです。reflink できないファイルシステムでは、コピーするのではなくプロビジョニングが失敗します。 - サーバーホスト上のプロセス
- エージェントごとに蓄積するモデルトークン
コストは オブザーバビリティ → インサイト に集計されます。通常の対話ターンには支出上限がないことに注意してください。上限がある 2 つのコマンドについては、コスト管理を参照してください。