LLMエージェントは自信満々に誤答する。並列で動かすと、単体より成功率が下がることさえあります。監督役を置いて実行を巻き戻せる設計が、この壁を数値で示しました。
この記事では、Northeastern大学とStanford大学の研究チームが公開したPython基盤「Shepherd」を軸に、メタエージェントとエージェント監督の仕組みを整理します。論文ではCooperBenchのペア完遂率が28.8%から54.7%まで上がったと報告されています(参考)。
この記事でわかること
- LLMエージェントが「過信と誤答」に陥る実用上の課題
- メタエージェントがワーカーを監督する階層構造の考え方
- 実行状態を巻き戻すエージェント監督の3つの介入手段
- CooperBenchでの完遂率改善と導入方法
単体より並列のほうが失敗しやすい矛盾
複数のLLMエージェントを並列で動かせば、作業は速くなるはずです。ところがCooperBenchという協調コーディングのベンチマークでは、2体のエージェントが互いにメッセージを送り合うだけの構成(coop)のペア完遂率は28.8%にとどまりました。1体が順番に両方の機能を実装するsolo構成は57.2%です。並列にした結果、成功率は半分以下に落ちています(参考)。
この現象は論文で「coordination penalty(協調ペナルティ)」と呼ばれます。各ワーカーは相手が送った情報しか見えず、その情報は送信者の不完全な状態認識を通したものです。片方が誤った前提で進むと、もう片方も巻き込まれ、エラーが積み上がります。LLM特有の「自信のある誤答」が、この連鎖を止められないのが実務上の痛みです。
Shepherdは実行そのものを操作できる基盤
Shepherdは、エージェントの実行を「データ」として扱うPythonランタイム基盤です。モデル呼び出し、ツール実行、ファイル変更のひとつひとつが、Gitのコミットのように構造化されたイベントとして記録されます。過去の任意の状態へ巻き戻したり、分岐を作って別ルートを試したりできます。論文では、docker commitより5倍速いフォークと、リプレイ時にLLMプロバイダのKVキャッシュを95%以上再利用できる点が示されています(参考)。
従来のエージェント基盤は、実行ログや環境スナップショットを渡すにとどまることが多く、メタエージェントが本格的な介入をするには独自ツールを組む必要がありました。Shepherdは関数型プログラミングの考え方を取り入れ、エージェントを@taskデコレータ付きの型付きPython関数として定義します。ワーカーの実行を観察しても軌道を乱さず、分岐したスコープの変更が親に漏れない、という性質が形式化されています。
開発はアルファ段階です。READMEでもAPIがリリース間で変わる可能性があると明記されています(参考)。
メタエージェントが監督役になる階層構造
メタエージェントとは、他のエージェントを生成・監視・操作する上位のエージェントです。人間のマネージャーが部下の作業を見るのと同じ階層です。Shepherdでは、メタエージェントがワーカーのエフェクトストリーム(実行イベントの流れ)に直接購読し、リアルタイムで状態を把握します。
CooperBenchの実験では、Claude Haiku 4.5を2体のワーカーとして並列配置し、Claude Sonnet 4.6またはOpus 4.7をメタエージェント(監督役)として動かしました。監督役は両ワーカーの実行を非干渉で観察し、問題が起きる前に介入します。メッセージのやり取りに頼るcoop構成とは対照的に、監督役は両者の行動をフィルタなしで見ています(参考)。
論文の共著者には、Northeastern大学のWeiyan Shi氏とStanford大学のChristopher Manning氏が名を連ねています。2026年7月には、Weiyan Shi氏がこの成果をXで紹介し、日本語圏でも注目を集めました(参考)。
エージェント監督の3手段と巻き戻し
監督メタエージェントには3つの調整ツールが与えられます。
- inject:ワーカーのセッションにガイダンスを送り込む。軽量な介入で、論文では最も多く使われた手段です
- handoff:先行ワーカーのスコープをフォロワーの新しい起点としてフォークし、作業を引き継ぐ
- discard:行き詰まったワーカーを
scope.discard()で打ち切り、親スコープをフォーク時点の状態に戻す
discardがまさに「ロールバック」に相当します。フォーク時点のファイルシステム、プロセス、バインディングがコピーオンライトで保存されるため、打ち切ればワーカーが触れた痕跡ごと巻き戻せます。誤ったコード変更やツール呼び出しの影響を、実行の途中で取り消せるのがShepherdの核です。
リスクの高い書き込みの前に分岐を作り、失敗した枝を捨てて正しいルートへ戻す、というパターンが自然に書けます。これがエージェント監督(Agent Supervision)の実体であり、過信による誤答を放置せず、軌道修正する仕組みです。
CooperBenchで完遂率が28.8%から54.7%に
全479ペアでの結果は次のとおりです。
| 構成 | ペア完遂率 |
|---|---|
| coop(監督なし並列) | 28.8% |
| Sonnet監督 | 45.3% |
| Opus監督 | 54.7% |
| solo(1体順次) | 57.2% |
Opus監督は、soloとの28.4ポイント差のうち91%を回復しました。完遂率はほぼ2倍(28.8%→54.7%)に跳ね上がっています。壁時計コストも抑えられ、Opus監督はペアあたり平均24.2分で、soloの28.4分より短い結果です。メタエージェントのオーバーヘッドはペアあたり4.3分にとどまりました(参考)。
監督なしの並列coopが28.8%だったのに対し、監督付き並列はsoloに近い水準まで戻せた、というのが実験の要点です。並列化の速度メリットを活かしつつ、信頼性を単体並みに引き上げられる可能性を示しています。
導入はpipと数行のPythonから
https://github.com/shepherd-agents/shepherd
Shepherdはpip install shepherd-aiでインストールできます。エージェントは空の関数シグネチャとdocstringだけ書けばよく、実装はランタイムが担います。
from shepherd import task, workspace
from shepherd.providers import claude
@task
def implement(repo, feature):
"Implement the feature in the repo"
@task
def oversee(worker, repo, feature):
"If tests break, revert the worker and retry"
with workspace(model=claude("sonnet-4-5")):
implemented = oversee(implement, repo, "login")
CLIではshepherd initでワークスペースを初期化し、shepherd run trace --latestで実行トレースを確認できます。Claude CLIへのサインイン、またはAnthropic APIキーが必要です。APIキーなしで試すオフラインクイックスタートも用意されています(参考)。
論文では監督以外にも2つのメタエージェント応用が示されています。失敗したワークフローを分岐リプレイで修復するカウンターファクチュアル最適化(CRO)と、RL学習時にフォーク地点を選んでステップ単位のクレジット割り当てを改善するTree-GRPOです。いずれも同じ実行トレース基盤の上に載っています。
エージェント設計の次の一手
LLMエージェントの信頼性は、モデル単体の賢さだけでは決まりません。実行中に軌道を観察し、誤りを巻き戻せるランタイムがあるかどうかが分かれ目になります。ShepherdはそのランタイムをOSSとして公開し、監督メタエージェントでCooperBenchの完遂率を28.8%から54.7%に押し上げた事実を示しました。アルファ段階ではあるものの、複数エージェントを本番業務に載せたい開発者にとって、設計の選択肢が一つ増えたと言えます。