コンテンツにスキップ

レビュアーエージェントをディスパッチ

このガイドでは、プルリクエストをレビューするためにレビュアーエージェントを ディスパッチする方法を説明します。

  1. PR を開き、概要タブに移動します
  2. ⋯ オーバーフローメニューを開き、AIに質問を選択します

これにより、シード済みの pr_review パイプラインが開始されます。このパイプラインは PR のレビュースペースを開き、ワークスペースのレビューレベルに応じたレビュアーを ディスパッチし — デフォルトでは 3 名(シード済みの qa、architect、 engineer エージェント)— その後、リードエージェントに統合させます。この経路では ロールを選択できません。どのロールを実行するか、各ロールがどのファイルを見るかを 制御するには、以下で説明する MCP ツールまたはパイプラインステップを使用してください。

既存のレビュースペース内から呼び出します:

dispatch_reviewers(
space_id: "...",
workspace_id: "...",
reviewers: [
{role: "reviewer"},
{role: "security", scope: "src/auth/**"}
]
)

space_id、workspace_id、reviewers はすべて必須です。各レビュアー指定は role に加えて、省略可能なファイル glob の scope と、デフォルトのブリーフを 置き換える prompt_override を取ります。省略可能な concurrency(1〜8)は並列 ディスパッチの同時実行数に上限を設けます。省略した場合は、ワークスペースの review_concurrency 設定が適用されます(デフォルト 3、設定 → ワークスペース → 全般で設定)。

このツールは即座に、dispatched と unmatched のリストを返します。ディスパッチ された各レビュアーは参加者としてスペースに追加され、システムメッセージで通知され、 そのブリーフとともにディスパッチされます。指摘はそのスペースに review_node メッセージとして届きます。

設定 → ワークスペース → パイプラインテンプレートを開き、テンプレートを開いてから、 次の操作を行います:

  1. パレットから Reviewer (prompt) ノードを追加します
  2. ディスパッチするエージェントを選び、上流の出力に {{key}} プレースホルダーを 使ってレビュアープロンプトを書きます(例えば {{repo_local_path}}、 {{pr_number}})
  3. 出力キー(デフォルトは reviewer_findings)を設定して、下流のステップが指摘を 読み取れるようにします

このステップはエージェントをディスパッチし、その実行が終了するまで中断します。 その後、エンジンはその実行の submit_output ペイロードを、ノードの出力キーの下で パイプライン状態に取り込みます。(パレットの説明には今もこのステップが complete_task 呼び出しを待つと書かれていますが、そのツールは存在しません。この 文字列は無視してください。)

複数のレビュアーノードを同じ上流ステップに接続してファンアウトし、Consolidate (join) ノードでそれらの出力を統合します。

エディターは隠れた終端を到達可能なすべてのシンクに再接続するため、シード済みの Step の後に追加したノードも実行されます。同じ上流ステップに接続されたファンアウト ノードは並列に実行されます。

レビューパイプラインを自動で発火させるには:

  1. 設定 → ワークスペース → パイプラインテンプレートでテンプレートを開きます
  2. ノードライブラリのトリガーセクションから PR が公開または外部 PR が オープンをキャンバスにドラッグします(または トリガーを追加のゴースト タイルから選択します)
  3. 新しいノードを選択し、インスペクターで有効をオンにしてから、テンプレート を有効にします

ここでは 2 つのイベントが重要で、これらは互いに置き換えできません:

イベント 発火するタイミング ペイロードのキー
PullRequestPublished PR が Control Center 経由でオープンされた — コンポーズ画面、またはエージェントが pr_lifecycle.publish を呼び出した場合 pr_id、workspace_id、repo_owner、repo_name
ExternalPrDetected PR ポーリングサービスが、GitHub 上で直接オープンされた PR を検出した repo_owner、repo_name、pr_number、pr_title、author

github.com でオープンされた PR は PullRequestPublished を発生させないため、その イベントだけに接続されたテンプレートはそれを認識しません。また、 PullRequestPublished は pr_number を持ちません — スクリプトやプロンプトで {{pr_number}} を参照するステップには、ExternalPrDetected から、あるいはそれを 供給する手動実行から入力する必要があります。

チェックポイント: 有効化した後、パイプラインを開き、次に条件に一致する PR で 実行が表示されることを確認します。無効のままにしたテンプレートは、そのトリガーが 何も起こさずに発火します — エンジンは無効なテンプレートを拒否し、実行を開始せずに 戻ります。

ロールがエージェントにマッチされる仕組み

「ロールがエージェントにマッチされる仕組み」というセクション

dispatch_reviewers は、要求された各ロールラベルに対してワークスペース内のすべての エージェントを、大文字と小文字を区別せずにスコアリングします:

一致 スコア
ロールラベルを含むスキル +3
ロールラベルを含むタイトル +2
ロールラベルを含むエージェント名 +1

スコアは累積され、合計が最も高いものが優先されます(同点の場合は最初に見つかった 候補)。どの候補も 0 を超えるスコアにならない場合、その指定はディスパッチされずに ツールの unmatched リストとして返されます — つまり、誰もマッチしないロールは 報告され、黙ってスキップされることはありません。

PR が持つレビュースペースは厳密に 1 つだけで、レビュアーごとに 1 つではありません。 これは pr.ensureSpace によって冪等に作成され、ReviewSpaceAssociation を通じて PR に リンクされ、PR のヘッド ref に対してプロビジョニングされます。ディスパッチされた すべてのレビュアーはそのスペースに参加し、その review_node の指摘をそこに投稿します。 これが指摘を比較可能にし、リードエージェントがそれらをまたいでコンセンサスに到達 できるようにします。

ディスパッチされた各レビュアーには、それぞれ独自の AgentRunLog が付きます。進捗は 次の場所で確認できます:

  • レビュースペース — 指摘がライブで流れ込みます
  • PR のレビュータブ — レビューのステータスバーと判定を表示します
  • オブザーバビリティ → ライブ(/workspaces/:id/observability)— 実行ごとの ステータス、ライブの経過時間、トランスクリプトドロワー、強制終了コントロールを 備えたエージェント名簿です。これ用のキーボードショートカットはありません — サイドバーのフッターから開きます。