Decision Offloading w. Jev
エージェントがタスクの途中で下す中間判断のうち、どれを判断専用モデルJevに任せられるでしょうか。この研究は、任せた後も独立に検証したタスクの品質が保たれるかを、準備、繰り返しの判断、修正、最終的な引き渡しまで含めて確かめます。初期のパイロットの結果は判断の呼び出しを差し替えるだけでは説明できなかったため、入力契約、判断契約、確率ポリシー、実行エージェントによる消費を、それぞれ別の実験に切り分けました。
ランタイム · 最終判定
Jevを選択した場合、最終検証はChoiceの1問でJevを1回呼び出し、受け入れられたsupportedの判定だけが通過します。
judgment_engine · llm | jev
core/config/judgment.py実行 · 判定: 経路を選択最終判定 · Choiceの1問core/agent/verify.pyJevの経路は、judgment_engineをjevに設定した場合にだけ使われます(既定はllm)。provider autoはTypeSafe、次にOpenRouterの順で、キーのある方を選びます。キーがなければLLM judgeの経路のままです。失敗したリクエストを別の場所で再試行するフォールバックではありません。
最終判定 · Choiceの1問
core/agent/verify.pyデータ: リクエスト · 候補 · 観測SystemOne · 1回の呼び出し · フォールバックなしadapters/typesafe.py元のリクエストと候補を秘匿化して長さを制限し、ツールの観測とともにChoiceの質問1つ(supported、contradicted、insufficient_evidence)として送ります。判断の呼び出しにはツールを与えません(allow_tools=False)。画像が必要な判断はJevに送られず、verification_errorになります。
SystemOne · 1回の呼び出し · フォールバックなし
adapters/typesafe.pyデータ: SystemOneを1回呼び出しTypeSafe SystemOneTypeSafeへの直接またはOpenRouter経由で1回呼び出し、別のプロバイダーへ移ることはありません。Jevがルートのテキスト生成モデルとして使われることはありません。
受け入れ検査 · 合計の許容誤差1e-5
adapters/typesafe.pyデータ: 受け入れられたChoicesupportedのみ通過 · テキストのみcore/agent/verify.py応答は、型・範囲・確率合計(許容誤差1e-5)の受け入れ検査を通過した後にだけ使われます。通過するのはsupportedだけで、contradictedとinsufficient_evidenceは、固定された次の確認とともに再試行のシグナルになります。end_turnでない応答や受け入れ検査に失敗した応答はverification_errorとなり、再試行のシグナルにはなりません(should_retry=False)。スコアは較正された確率ではなく、二値への射影です。
supportedのみ通過 · テキストのみ
core/agent/verify.pyデータ: passed · reflectionPostVerify · Stopポリシーloop/_lifecycle.py判定は「完了判定」章のPostVerifyとStopのポリシーへ渡ります。判定はそのポリシーへの入力であって権限ではありません。レビュー待ちになると、候補はpending_textとしてのみ残り、最終応答は空になるため、何も引き渡されません。
PostVerify · Stopポリシー
loop/_lifecycle.py記録 · 観測: 判定行タイムライン · ledgerの判定行memory · observability判定の決定はタイムラインとevidence ledgerに記録されます。研究の成果物とは別の、ランタイムの記録です。
ランタイム · リフレクション
同じ選択がリフレクションの根拠の分類を動かし、次の確認の文はコードが決めます。
judgment_engine · llm | jev
core/config/judgment.py実行 · 判定: 同じ選択リフレクション · 根拠の分類loop/_reflection.py同じ選択がリフレクションにも適用されます。
リフレクション · 根拠の分類
loop/_reflection.pyデータ: 根拠を分類SystemOne · 1回の呼び出し · フォールバックなしadapters/typesafe.pyリフレクションはJevで範囲を限った根拠を分類し、コードが定めた次の確認を追加します。信念の仮説や自信度は変更しません。
SystemOne · 1回の呼び出し · フォールバックなし
adapters/typesafe.pyデータ: SystemOneを1回呼び出しTypeSafe SystemOneTypeSafeへの直接またはOpenRouter経由で1回呼び出し、別のプロバイダーへ移ることはありません。Jevがルートのテキスト生成モデルとして使われることはありません。
受け入れ検査 · 合計の許容誤差1e-5
adapters/typesafe.pyデータ: 分類リフレクション · 根拠の分類loop/_reflection.py受け入れ検査を通過した分類だけが、リフレクションの状態を更新します。失敗した場合、次のラウンドは同じ以前の状態から再試行します。
研究 · 固定パネルU3
actorなしで、同じ状態と質問に対するJevとAstraの判断をペアで比較しました。
Astra · Jev · 同じ質問
U3 · 固定状態パネルデータ: Jevの判定TypeSafe SystemOneU3(元の実験コミット2f2b494):固定状態120 · ソースクラスター27 · 呼び出し240回。各状態と質問をJevとAstraに1ペアとして送り、actor、ツール、Harborは使っていません。
Astra · Jev · 同じ質問
U3 · 固定状態パネルデータ: Astraの判定Astraの判定 · actorモデル同じサンプルでの正答はAstra 90/120、Jev 84/120。呼び出しあたりの中央値は10.446秒対0.253秒です。これは判断呼び出しだけのレイテンシで、タスクの所要時間やコスト削減ではありません。
U3 · 固定状態パネルデータ: パネルの結果 · レポートJev研究レポート
U3の正答率とレイテンシの結果は、公開技術レポートに掲載されています。このパネルがE2Eの公開パケットに含まれるかどうかは、ここでは主張しません。
研究 · E/I実行
Astraをactorとして判定の経路だけを変え、独立したルールoracleで結果と引き渡しを別々に確認しました。
Astra actor · ツール · 修正
E/I · Harbor 0.22データ: 生成 · ツール · 修正Astraの判定 · actorモデルHarbor 0.22上のE/Iでは、actorのAstraが生成・ツール呼び出し・修正を担い、変わるのは判定の経路だけです。
判定経路 · Astra · Jev · Jev-first
E/I · Harbor 0.22データ: 完了判定の経路TypeSafe SystemOneE7(元の実験コミット1f65534):作成した合成タスク12 × 構成3 × 2回 = 72回、各構成で24/24。Jev-first構成で実際にフォールバックしたのは0/24回で、その効果は測定されていません。
E/I · Harbor 0.22記録 · 観測: 独立した確認正答 · 引き渡しは別に集計
rule oracle独立したルールoracleが最終結果を確認し、実際の最終的な引き渡しは別に数えます。中断されたU8nの事後11ペアでは、すべての候補がoracleを通過しましたが、引き渡しはAstra 11/11、Jev Noul 0/11でした。
E/I · Harbor 0.22データ: 失敗 · 修正の系譜E2E-DATA · ソース · 公開版のハッシュ
jev-v3-20260927E2Eの公開パケットは準備・失敗・修正の系譜を保持し、ソースと公開版のハッシュを分けています。秘匿化された公開版が、変更されていないソースの検証の代わりになることはありません。
REPRODUCE · model-free
jev-v3-20260927データ: モデル不要の再計算Jev研究レポート保存された応答から数値を再計算することと、新たに実行することは別の操作です。レポートは公開技術レポートであり、査読済みの論文ではありません。
すべての接続を同じ太さで表示します。フローを選ぶと、その経路だけを番号付きで強調します。
- 実線 · リクエスト・候補・結果が流れる方向
- 破線 · 実行・判定・認可・設定
- 長い一点鎖線 · 記録と観測、判定とは別
- 太い黒線 · 選んだフロー。番号は順序
- ボックス · コードまたは記録の境界、見出しにパス
- 内側のチップ · その境界内の構成要素
- 破線ボックス · その境界の外
- ループ · 実行ハーネス
- 経路の選択 · 判定 · oracle
- 記録 · 公開パケット
- 通信 · 判断パネル
上部と下部は別のシステムです。研究の構成と結果がすべて現在のランタイム経路で有効になっているわけではなく、両者の唯一の共通点は同じJevモデル(jev-1.13.0)を呼び出すことです。
- ランタイムの受け入れ検査
- ランタイムは確率合計の許容誤差を1e-5と厳しく保ちます。評価側の呼び出し元は、ランタイムのパーサーを緩めるのではなく、記録された独自の許容誤差を渡します。
- 研究の範囲
- U3は判断呼び出しだけを測定し、E/Iはactorと修正を含みます。両者の分母を混ぜることはなく、U8nの11ペアは中断された研究の事後分析です。
3つの判断契約
Choice
- 返り値
- カテゴリまたは選択肢ごとの確率
- 判断対象
- 完了、リクエストの意図と対象
Noul
- 返り値
- 条件ごとのP(true)
- 判断対象
- 矛盾、根拠の不足
Score
- 返り値
- 固定された順序尺度上の期待値と分布
- 判断対象
- 生成された候補の順位
期待値は尺度上の候補の位置を示すもので、確信度としては使いません。
評価と接続
各契約はそれぞれ固定の入力パネルで評価し、一部は実験ハーネスの実行経路に接続して、実行エージェントが判断をどう消費するかを確かめました。上の構成図では、研究の部分がそれらの実行で、ランタイムの部分は現在のGEODEにあるオプトインの経路です。
設計を変えた観測
- I5 → I6 · 入力契約
- 共通の引き渡し失敗を追跡すると、判定の入力にタスク契約が欠け、同じリクエスト内のツール観測が過去の文脈として記述されていた
- 修正したコードと新しいアカウントで行った別の実行で、I6は6/6を引き渡した
- U3 · 同じ120の状態ペア
- 呼び出しあたりの中央値Astra 10.446秒 · Jev 0.253秒、同じサンプルでの正答90/120 · 84/120
- 判断ごとに速度と正確さを併せて比べ、委任の範囲を決める
- U2 · 確率
- Jevの確率は大きさの較正で優れていたが、誤った判断を上位に並べる順位付けはAstraの方が確実だった
- 較正と誤りの選別を別々に測定し、しきい値はselection分割で固定
- U6a · 意図と対象
- 設計者が作成した40ファミリーでJev 216/220 · Astra 220/220、事前登録の−5ppマージンを満たした
- 固定された意図・対象の分類を、次の適用候補に絞り込んだ
- U8n · 引き渡し
- 中断された実行の事後11ペア:修正された候補は両方のarmでoracleを通過、引き渡しはAstra 11/11 · Jev Noul 0/11
- 根拠不足の判定が正しい引き渡しを妨げ、現在のNoulの構成には単独の引き渡し判定を担う根拠がない