レビュアーエージェントをディスパッチ
このガイドでは、プルリクエストをレビューするためにレビュアーエージェントを ディスパッチする方法を説明します。
PR ビューから
「PR ビューから」というセクション- PR を開き、概要タブに移動します
- ⋯ オーバーフローメニューを開き、AIに質問を選択します
これにより、シード済みの pr_review パイプラインが開始されます。このパイプラインは
PR のレビュースペースを開き、ワークスペースのレビューレベルに応じたレビュアーを
ディスパッチし — デフォルトでは 3 名(シード済みの qa、architect、
engineer エージェント)— その後、リードエージェントに統合させます。この経路では
ロールを選択できません。どのロールを実行するか、各ロールがどのファイルを見るかを
制御するには、以下で説明する MCP ツールまたはパイプラインステップを使用してください。
dispatch_reviewers MCP ツールを使う
「dispatch_reviewers 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
メッセージとして届きます。
パイプラインステップから
「パイプラインステップから」というセクション設定 → ワークスペース → パイプラインテンプレートを開き、テンプレートを開いてから、 次の操作を行います:
- パレットから Reviewer (prompt) ノードを追加します
- ディスパッチするエージェントを選び、上流の出力に
{{key}}プレースホルダーを 使ってレビュアープロンプトを書きます(例えば{{repo_local_path}}、{{pr_number}}) - 出力キー(デフォルトは
reviewer_findings)を設定して、下流のステップが指摘を 読み取れるようにします
このステップはエージェントをディスパッチし、その実行が終了するまで中断します。
その後、エンジンはその実行の submit_output ペイロードを、ノードの出力キーの下で
パイプライン状態に取り込みます。(パレットの説明には今もこのステップが
complete_task 呼び出しを待つと書かれていますが、そのツールは存在しません。この
文字列は無視してください。)
複数のレビュアーノードを同じ上流ステップに接続してファンアウトし、Consolidate (join) ノードでそれらの出力を統合します。
エディターは隠れた終端を到達可能なすべてのシンクに再接続するため、シード済みの Step の後に追加したノードも実行されます。同じ上流ステップに接続されたファンアウト ノードは並列に実行されます。
新しい PR での自動ディスパッチ
「新しい PR での自動ディスパッチ」というセクションレビューパイプラインを自動で発火させるには:
- 設定 → ワークスペース → パイプラインテンプレートでテンプレートを開きます
- ノードライブラリのトリガーセクションから PR が公開または外部 PR が オープンをキャンバスにドラッグします(または トリガーを追加のゴースト タイルから選択します)
- 新しいノードを選択し、インスペクターで有効をオンにしてから、テンプレート を有効にします
ここでは 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)— 実行ごとの ステータス、ライブの経過時間、トランスクリプトドロワー、強制終了コントロールを 備えたエージェント名簿です。これ用のキーボードショートカットはありません — サイドバーのフッターから開きます。