コンテンツにスキップ

エージェントを並列実行

このガイドでは、複数のエージェントを同時に実行し、互いを上書きしないようにする方法を説明します。

分離の単位はエージェントではなくスペース

「分離の単位はエージェントではなくスペース」というセクション

スペースで作業が始まると、Control Center はそのスペース自身のルート以下に、登録済みリポジトリごとにコピーオンライトのチェックアウトを 1 つプロビジョニングします。ブランチはワークスペースのブランチ名テンプレートから導出されます。その後、スペース内の各エージェントはそれぞれ独自のオーバーレイ作業ディレクトリを受け取りますが、それらのオーバーレイはそのスペースの repos/ ディレクトリを共有します。

つまり:

  • 異なるスペースの 2 つのエージェントは、異なるチェックアウトで、異なるブランチ上で作業します。これが真の分離です。
  • 同じスペースの 2 つのエージェントは、同じチェックアウトで、同じブランチ上で作業します。オーバーレイパスは異なるため、ディスパッチパスロック(同一の作業ディレクトリを要求したときにだけ実行を直列化する)も、両者を直列化しません。2 つは同じファイルに同時に書き込めます。

そこから導かれるルール: 並列タスクごとに 1 つのスペース。

タスクを並列で実行する — スペースを分ける

「タスクを並列で実行する — スペースを分ける」というセクション
  1. エージェント A でスペースを開き、タスクを送ります。
  2. エージェント B で 2 つ目のスペースを開き、別のタスクを送ります。
  3. どちらも即座にディスパッチされ、それぞれが自分のスペースのチェックアウトで、自分のブランチ上で実行されます。

エージェントがファイルを編集する場合は、常にこの手順を使ってください。

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 つのコマンドについては、コスト管理を参照してください。