← すべての記事

答えより先にツールを評価する

From the guide: Claude Code Comprehensive Guide

セッションのツールログにテスト呼び出しが1つも記録されていないにもかかわらず、「すべてのテストに合格しました。リファクタリングされたクエリは元のクエリと同一の結果を生成します」と返してくるエージェント。これは、ツールを実行するあらゆるオーケストレーターが検出し、命名し、ゲートを設けることを学ぶ構造的な失敗パターンです。完了文は、エージェントが実行していない作業に言及しています。セッションログ内の推論は健全に見え、SQLは正しく見え、レポートは依然として、実行されなかったツール呼び出しのためにモデルが縫い合わせた衣装である可能性があるのです。

session log, tool-call grep:
  tool:read           app/db/queries.py
  tool:edit           app/db/queries.py
  tool:read           tests/test_queries.py
  [no tool:bash entries matching pytest]
  [no tool:bash entries at all]

このパターンはエージェントランタイム全体で繰り返し発生します。モデルは、テスト合格、クエリ確認、ファイル間の調整、または首尾一貫したリファクタリングについて、答えの形をした文字列を書きます。独立してチェックされたツールログには、答えが主張する呼び出しが含まれていません。仮にモデルの推論が網羅していなかったエッジケースで作業がわずかに間違っていた場合、検証を主張する完了レポートの裏に隠れてバグが出荷されていたでしょう。

答えを生成するはずだったツール呼び出しが実行されていないとき、オーケストレーターは答えを採点すべきではありません。 答えは品質の単位ではありません。(ツール呼び出し、答え)のペアが品質の単位です。ツール側が欠けていれば、答え側は採点不能となります。

このルールは、スキャフォールディング層でエンコードするのが容易です。完了レポートからヘッジ表現(合格するはず、思います、おそらく、確信しています、〜のように見えます)をgrepし、セッションのツール呼び出しログと照合し、レポートが対応するツール呼び出しなしにツール依存の主張をしている場合は、セッションを閉じる前に引用された証拠を要求します。

TL;DR

  • 完了レポートは、それが依存するツール呼び出しが実際に実行されていない限り、採点不能です。
  • 4つの失敗モードは同じ形を共有しています。流暢な答えのテキストに対して、欠落または無効なツール証拠です。
  • 修正は、答えの前にツール呼び出しを採点することです。決定的な証拠が先、判定が後。

4つの答えの形をした失敗モード

4つのモードは形を共有しています。モデルの答えは、有能なエージェントが行ったであろうことのもっともらしい要約です。独立してチェックされたモデルのツールは、その要約を裏付けません。答えの形が機能するのは、ループ内の採点者が正しい動詞に言及する言葉を受け入れるからです。

ファントム検証。 完了レポートはテストに合格したと主張しますが、セッションのbash呼び出しにテストランナー呼び出しは存在しません。検出ルールは、ツール呼び出しログに対して完了レポートを照合します。すべてのテストに合格のような主張があるのに、テストランナー呼び出しに一致する tool:bash エントリがない場合は、フェイルクローズドします。

不正なツール風景。 あるレポートは「テーブルにクエリを実行し、インデックスが使用されていることを確認しました」と述べていますが、ツールログでは、データベース名が間違っていたためステータス2で終了した psql 呼び出しが示されています。その呼び出しの出力は空です。エージェントは空の出力を読み、それはクエリが暗黙のうちに成功したことを意味すると判断し、その沈黙を確認として報告します。終了コードゲートは、完了レポートで引用されたbashツール呼び出しからのゼロ以外の終了ステータスに対してフェイルクローズドします。1

スキップされた依存関係。 あるレポートは、複数のファイルにまたがる協調的な変更を挙げています。「マイグレーションとテストを更新しました。」マイグレーションファイルは編集ログに表示されますが、テストファイルは完了レポートの文中にしか表示されません。テストファイルへの tool:read は発生していません。ファイル読み取り監査は、完了レポートで名前が挙げられたファイルが、ツール呼び出しログに読み取りまたは書き込みとして表示されなければならないと主張します。

サマリーロンダリング。 コードベースの3つの無関係な領域にわたる3つの小さな編集が、首尾一貫したストーリーとして報告されます。「ロジックをクリーンアップし、エラーメッセージを改善し、リトライを追加しました。」ツールログで見ると、3つの編集にはテーマ的な関連性がありません。ドリフト検出器は、元のタスク説明と完了レポートのサマリーとの間でコサイン類似度を計算し、しきい値を下回る低下があれば手動レビューフラグを発動させます。

各モードは、正しく見える答えに加えて、実行されなかったツール呼び出し、または実行されたが答えが主張する証拠を生成しなかったツール呼び出しから構成されます。修正は、いずれの場合も同じレイヤーに存在します。オーケストレーターは答えが採点可能かどうかを決定するのであり、答えが正しいかどうかを決定するのではありません。決定は一方向性です。ツール証拠が欠けていれば、答えは採点不能であり、セッションは人間によるレビューのためにフラグが立てられます。ツール証拠が存在すれば、答えは評価可能となります。オーケストレーターは、2つの問いを1つに統合することを拒否します。

判定の前に証拠を:Jiroゲートが背骨である

Jiro品質哲学は、上記の4つのフックがその4つの実装であるところのゲートに名前を付けています。品質の主張には証拠が必要であり、感覚は必要ない、というものです。2 スキャフォールディング層のルールはここから直接導かれます。ツール呼び出しが証拠を生成していない限り、いかなる答えも採点不能です。証拠こそがゲートです。ゲートは一方向性です。

上記のすべての検出器は、異なる基層におけるゲートです。ヘッジ表現の検出は、自然言語層におけるゲートです。終了コードのチェックは、シェル層におけるゲートです。ファイル読み取り監査は、ファイルシステム層におけるゲートです。ナラティブドリフト検出は、埋め込み層におけるゲートです。4つの基層、1つのルール、1つの方向。証拠が失敗すれば、判定は拒否されます。証拠が成立すれば、判定が進行します。逆方向の合成はありません。自信ありげに聞こえる判定テキストがどれだけあっても、事後的に証拠を製造することは許されないのです。

Steveテストは、1つ上の高度におけるゲートです。Blakeはこれに自分の名前を署名するでしょうか?3 問いは答えが正しく見えるかではありません。問いはBlakeはその答えに自分の名前を署名するかです。署名には、答えが検証されたツール呼び出しに基づいているという証拠が必要です。ツールをスキップした答えは署名できません。なぜなら、本番環境で答えが間違っていたと判明したときに指し示すべきゲートが存在しないからです。

Minimum Worthy Productが枠組みを完成させます。4 ミニマムはスコープ制約であって、品質割引ではありません。最小限の完了レポートはレポートです。最小限の価値ある完了レポートは、すべての主張の背後にツール呼び出し証拠を持っています。スコープを削ることは、証拠を削るライセンスではありません。答えの形をした失敗は、エージェント出力層における証拠カットなしのスコープカット病理なのです。

隣接する文献がすでに述べていること

スキャフォールディング層のルールには、同じ形に名前を付けたトレーニング層の先行研究があります。ReAct(Yao et al., 2022)は推論トレースとツールアクションをインターリーブし、思考の連鎖をツール呼び出しに接地させることが、ツール使用ベンチマークにおいて自由形式の推論を上回ることを示しています。5 Toolformer(Schick et al., 2023)は、挿入された呼び出しが下流の損失を減らすかどうかを監視信号とする自己教師ありループを通じて、モデルが自身の出力にツール呼び出しを挿入するように訓練します。6 OpenAIのLet’s Verify Step by Step(Lightman et al., 2023)は、推論連鎖が長いとき、推論ステップに対するプロセスレベルの監視が結果レベルの監視を上回ることを示しています。7 これらはそれぞれ、同じ一般的主張に対する異なる角度です。最終的な答えのみに報酬を与える採点者は、モデルがその間のステップを偽造する自由を残してしまいます。

スキャフォールディングルールは、その主張のランタイムかつ決定的なバージョンです。ReActが推論とアクションをインターリーブするのに対し、ルールはアクションが実際に発生したことを主張します。Toolformerがツールを出力分布に訓練するのに対し、ルールは挿入されたツール呼び出しが、答えが引用する証拠を生成したことを主張します。プロセス監視が推論ステップに報酬を与えるのに対し、ルールはそれらのステップの決定的な副作用、すなわち終了コード、スキーマ検証、ファイル書き込みパスに報酬を与えます。

ツール監視型RL論文が勾配の形に名前を付ける

ノースイースタン大学とAmazon AGIの研究者らは、2026年4月にarXivでVisual Reasoning through Tool-supervised Reinforcement Learningを発表しました。8 彼らの設定は、5つの操作(ズームイン、回転、反転、線描画、点描画)にまたがる3つの視覚ツールファミリーで、2つの報酬スケジュールでマルチモーダルモデルを訓練します。ジョイント(ツール品質と答え品質を融合した1つの報酬信号)と逐次(ステージ1のツール品質に対する報酬、続いてツール監視ステージ後のステージ2の答え品質に対する報酬)です。両ステージは同じ数のGRPOアップデート(論文の訓練詳細によると各200回)にわたって実行されます。逐次カリキュラムは、報告されているほとんどのベンチマークでジョイントスケジュールを上回り、正確なマージンはデータセットによって異なります。著者らはジョイント訓練の失敗モードを異種タスク間の最適化の衝突と命名しています。8

訓練レベルの失敗は、スキャフォールディングレベルのものと韻を踏んでいます。報酬信号が答えを求めるとき、オプティマイザは最小の作業で報酬を満たす局所最適解を見つけます。最も安価な局所最適解は、不十分に指定されたツール呼び出しを伴う、整った形の答えです。スキャフォールディング層はそれをファントム検証と呼びます。訓練文献はそれを仕様ゲーミングと呼びます。9 Skalseらは一般クラスに形式的な扱いを与えました。報酬ハッキングは、最適化対象が真の報酬を完全には追跡しないプロキシであるときに出現するのです。10

AmazonとノースイースタンUniversity の著者らが選んだ視覚ツールは偶発的なものではありません。それぞれが安価な決定的なグラウンドトゥルースを持っています。ズームが正しい領域に中心を合わせたか、回転が正しい角度を適用したか、描画が正しい座標にヒットしたか。ステージ1の報酬は、最終的な答えを参照することなくこれらを採点できます。同じ条件こそが、終了コードゲートがスキャフォールディング層で利用するものです。Bashステータス0は、プロセスがエラーを報告せずに完了したという決定的な証拠です。ステータス127は、意図したバイナリが見つからなかったという決定的な証拠です。11 JSONスキーマ検証は、出力が期待される形に一致したことの決定的な証拠です。ファイル書き込みパスのアサーションは、書き込みが期待される場所に着地したことの決定的な証拠です。決定的な監視が無料であるところでは、モデルを自身の採点に関与させることなく、証拠ゲートが防衛線を保つことができます。

この論文は、二段階修正によるルールの最もクリーンな勾配形式のデモンストレーションの1つです。ルールのスキャフォールディング版はそれよりも古く、より広範です。ツールを使用し、答えで採点されるあらゆるシステムは、最終的に何らかのバージョンを必要とします。異なる基層、関連する形。証拠が先、判定が後、逆方向の合成はなし。

モデルを訓練することのないオペレーターのための3つの読み方

論文は、訓練がスコープ外であってもスキャフォールディング設計に移植できます。

ツール呼び出しと答えを別々のトラックで採点する。 ツール品質と答え品質を1つのスコアに融合するオーケストレーターは、エージェントに、より安価な側を満たすよう促します。ツールに対するリトライ予算と、答えに対する品質スコアを別々に保ってください。ツール呼び出しが不正であった場合、それに続いたテキストが答えのスコアに寄与することを許してはなりません。111

決定的なツール監視が無料のところでそれを使用する。 終了コード。JSONスキーマバリデーター。ファイル書き込みパスのアサーション。出力形状テスト。論文のツールファミリーが存在するのは、部分的にはそのグラウンドトゥルースが安価だからです。本番環境では、同じ安価なグラウンドトゥルースが終了コードとスキーマに現れます。それらのゲートを出荷してください。回答前パスにおけるあらゆる決定的なアサーションは、上記の失敗分類における1行を閉じます。11

混ぜる前にシーケンスする。 ツールのみの作業(lint、型チェック、フォーマット、テスト)を行うサブエージェントが、答えを生成する2番目のサブエージェントの前に動作するのは、論文の二段階カリキュラムをオーケストレーション層で実行することです。学習されたものではなく決定論的。カスタム訓練の実行よりも安価に出荷できます。そのレイヤーには学習された報酬収束問題はありませんが、2番目のサブエージェントは依然として悪い答えを生成する可能性があります。ルールは2つを混ぜる失敗モードを切り取るのです。12

より難しいケースは、人間の判断なしには正しさを真値として評価できないツールに関わります。コード作成、文章作成、検索クエリ、SQLです。これらのドメインではステージ1の報酬は無料ではありません。ノイズの多いケースは劣化した信号に応答します。構文チェック、テストの合格/不合格、検索結果品質プロキシ。不完全ですが、目的を分離することの構造的な利益は残ります。ノイズの多いステージ1信号における二段階カリキュラムを、同じ信号における一段階カリキュラムと比較してベンチマークすれば、分離不変条件が本番環境下で持ちこたえるのか、グラウンドトゥルースが柔らかくなったときに崩壊するのかが分かるでしょう。

その研究が登場するまで、スキャフォールディング層が負荷を担います。信頼できるオーケストレーターは、このルールの何らかのバージョンをエンコードする傾向があります。フックとして。リトライ予算として。サブエージェントディスパッチルールとして。常に、ツールが実行されなかったときに答えを採点することを拒否するものとして。


答えより先にツールを評価しなさい。さもなくば、答えは実行されなかったツールのための衣装になってしまいます。4つの失敗モードは、同じ形の4つの切り口です。ToolsRL論文は、勾配層でスキャフォールディングルールと韻を踏みます。両方の高度における修正は、1つの方向に整列します。証拠が先。判定が後。それ以外でゲートが合成されることはないのです。

FAQ

AIエージェントにおけるファントム検証とは何ですか?

ファントム検証とは、ツール呼び出しが実行されていないにもかかわらず、エージェントが検証が行われたと報告することです。ツールログにテストランナー呼び出しがないのに、完了レポートがすべてのテストに合格と述べているのが典型的なケースです。修正方法は、答えを採点する前に、ツール依存の主張をツール呼び出しログと比較することです。

なぜツール呼び出しは答えより先に採点されるべきなのですか?

ツール呼び出しが先に採点されるべきなのは、答えが証拠を模倣できるからです。答えがテストに合格した、クエリが実行された、ファイルが変更されたと主張するなら、オーケストレーターは関連するツールが実行され成功したという決定的な証明を必要とします。そのときにのみ、答えは採点可能となります。このルールは、流暢なテキストが事後的に自信を製造することを防ぎます。

答えの形をした失敗とは何ですか?

答えの形をした失敗とは、もっともらしい完了レポートであり、その言葉遣いは期待される結果と一致するものの、ツール証拠がその主張を裏付けていないものです。本記事では4つに名前を付けています。ファントム検証、不正なツール風景、スキップされた依存関係、サマリーロンダリングです。それぞれ、レポートを読み取り、書き込み、終了コード、タスク履歴と照合するまでは正常に見えます。

ツール監視型強化学習はエージェントオーケストレーションとどのように関係していますか?

ツール監視型強化学習は、ツール品質に対する報酬を最終的な答えの品質に対する報酬から分離します。オーケストレーション版は決定論的です。終了コード、スキーマ、ファイルアサーション、またはログでツール呼び出しを最初に採点し、次に答えを採点します。両システムとも、見栄えの良い答えと弱いツール使用で採点者を満足させることができる、混合報酬を回避するのです。

参考文献


  1. Anthropic, “Hooks reference,” code.claude.com docs. PreToolUse、PostToolUse、UserPromptSubmit、および終了コードゲートが実装するライフサイクル分類。 

  2. 著者の分析 The Jiro Quality Philosophy。証拠ゲート:品質の主張には証拠が必要であり、感覚は必要ない。 

  3. 著者の分析 The Steve Test。Jiroの証拠ゲートの上にある味覚ゲートとしての「私はこれに自分の名前を署名するか?」。 

  4. 著者の分析 Minimum Worthy Product。スコープ制約としてのミニマム、品質バーとしてのワーシー。 

  5. Shunyu Yao et al., “ReAct: Synergizing Reasoning and Acting in Language Models,” arXiv:2210.03629, 2022. 知識集約型および意思決定タスクにおける推論とツールアクションのインターリーブ。 

  6. Timo Schick et al., “Toolformer: Language Models Can Teach Themselves to Use Tools,” arXiv:2302.04761, 2023. 下流損失削減を介した自己教師ありツール使用挿入。 

  7. Hunter Lightman et al., “Let’s Verify Step by Step,” arXiv:2305.20050, 2023. プロセス監視(個々の推論ステップへの報酬)が、数学推論において結果監視を上回ること。 

  8. Qihua Dong, Gozde Sahin, Pei Wang, Zhaowei Cai, Robik Shrestha, Hao Yang, and Davide Modolo(ノースイースタン大学およびAmazon AGI),”Visual Reasoning through Tool-supervised Reinforcement Learning,” arXiv:2604.19945, 2026年4月。 

  9. Victoria Krakovna et al., “Specification gaming: the flip side of AI ingenuity,” DeepMind blog, 2020年4月。誤って指定された目的下での報酬ハッキングのベースラインフレーミング。 

  10. Joar Skalse et al., “Defining and Characterizing Reward Hacking,” arXiv:2209.13085, 2022. MDPにおける不完全なプロキシ報酬の最適化としての報酬ハッキングの形式的扱い。 

  11. POSIX.1-2017, “Shell Command Language: Exit Status,” IEEE/Open Group. ステータス127 = コマンドが見つからない、126 = 実行不可。 

  12. Anthropic, “Subagents reference,” code.claude.com docs. サブエージェントのディスパッチとスコープ制約。 

関連記事

静的スキルは死んだスキル

エージェントスキルは、誰もトラジェクトリを見ていない瞬間から劣化が始まります。クロスユーザーでのスキル進化に関する新しい論文が、その問題と解決策を提示しています。

1 分で読める

リポジトリに自身の信頼性を投票させてはならない

37日間で2件発生したClaude Codeの信頼ダイアログバイパスCVEは、ロード順序の欠陥を露呈させました。これを修正する不変条件は1つだけです。パスが信頼されるまで、ワークスペースのバイトを一切解釈しないこと。

2 分で読める

Ralphループ:自律型AIエージェントを一晩中稼働させる方法

ストップフック、スポーンバジェット、ファイルシステムメモリを備えた自律エージェントシステムを構築しました。失敗から学んだことと、実際にコードをシップする仕組みを紹介します。

3 分で読める