マルチエージェント:ファンアウト、敵対者、統合
別々のタスクにまたがってではなく一つのタスクの中で回る「多数のエージェント」の第二の種類がある。一つのエージェントがすべてをやる代わりに、役割を分ける:
- 幅のためのファンアウト。 複数のエージェントが同じ問題を異なる角度から攻める——あるいは大きなコードベースの異なる部分を探索する——そして報告する。網羅を欲するときに有用だ:「この非推奨関数を呼んでいるすべての場所を見つけよ」はよく並列化する。
- 敵対的レビュアー。 一つのエージェントが書く。二つ目のエージェントの唯一の仕事は、一つ目の出力を攻撃することだ——バグ、抜けたエッジケース、未処理のエラーを見つける。「これは間違っていると仮定して、なぜか突き止めよ」という指示でdiffに向けられたレビュアーは、作者エージェントが自分を納得させてしまったものを捕まえる。
- 統合。 最後のパスが発見をまとめ、一つの一貫した結果を生む——動くコードと、レビュアーが何を指摘しどう解決したかの短いメモ。
Reviewer agent brief:
You are reviewing a diff written by another agent. Assume it contains
at least one bug and find it. Specifically check:
- Does it actually satisfy the original goal, or just pass the tests?
- Edge cases: empty input, nulls, the largest realistic input.
- Anything deleted or changed that the task didn't ask for.
Report concrete problems with file and line. Do not rewrite the code —
just report. If you find nothing after a genuine look, say so plainly.
三つの役割は、末尾にゲートを持つパイプラインを形づくります。敵対的レビュアーがパスを終え、統合が見つかったものを解決するまで、何もコミットには届きません。
┌──────────────────── 一つのタスク内で ─────────────────────┐
│ │
│ ┌──────────┐ │
│ │ 展開 │ 複数の代理人、異なる角度 │
│ │ 代理人 │ ── 幅 / カバレッジ ──┐ │
│ └──────────┘ ▼ │
│ ┌──────────┐ ┌──────────────┐ │
│ │ 作成者 │── 差分作成 ──▶│ レビュアー │ │
│ │ 代理人 │ │ 「誤りと │ │
│ └──────────┘ │ 仮定しバグ │ │
│ │ を探す」 │ │
│ └──────┬───────┘ │
│ ▼ │
│ ┌──────────────┐ │
│ │ 統合 │ 発見を │
│ │ 修正 + メモ │ 統合 │
│ └──────┬───────┘ │
└────────────────────────────────────────┼──────────────────┘
▼
── ゲート ──▶ commit ✓
敵対的レビュアーは、エージェントの艦隊を持たない一人きりの場合でも整える価値がある——なぜなら変更の作者は、人間であれAIであれ、その欠陥を見つけるのに最も不向きな者だからだ。敵対的なプロンプトでもう一度見直すことは安価な保険だ。