GEODEの公式ピクセルキャラクター、Geodi
展示室へ戻る

GEODE

Autonomous Agent Harness

観測から、次の行動へ。

調査、ファイル作業、予約タスクを任せられる、ローカルの自律エージェント・ハーネスです。

2026.02.21 — present

設計・判断・検証: Author · 実装: Claude · レビュー: Codex

  • CLI一般公開 · PyPI
  • MCPサーバー実装済み

一度に変えるポリシーは1つ、測定は固定。

ハーネスの外で動く別のループです。ベースラインから型付きのポリシー変更を1つ適用し、同じPetri監査とゲートでKEEPか復元かを決めます。

SIL構成図 · 固定コミット9e2c041のevolveパスと2026年6月の実行記録から作図
GEODEポリシー探索(SIL)構成図ランタイムの外で動くポリシー探索ループです。承認された実行契約が予算・シード・ルーブリック・モデルを固定し、mutatorが許可された7つのサーフェスのうち1つのポリシーを変更します。measure.pyが同じ測定装置でPetriを通じてGEODEを監査し、fitness.pyとgate.pyがcritical回帰と昇格のルールでKEEPか復元かを決め、ledger.pyがベースラインと結果の行を書き込みます。2026年6月の実行では、変更なしのnever arm、K=5のベースライン、replicateによる測定で、監査のノイズと変更の効果を切り分けました。運用者の承認ライブ呼び出し · 予算Petri監査auditor · GEODE target · judgeprogram.md実行契約 · モデル · 予算停止条件 · 承認後に実行train.py固定予算のループ--replicate K · 再測定loop/mutatemutator · 候補1つ7つのサーフェス · ハイパーパラメータ不可state/policiesファイルベースのポリシーprepare.pyシードプール · ルーブリック固定measure.py監査サブプロセス · 固定タイムアウトポリシーごとのOVERRIDE · STRICTfitness.pycritical回帰 · ペナルティledger.pybaseline · provenanceresults · mutation行gate.py_should_promote · KEEP_reject_and_revertcore · ポリシーローダープロンプト分岐 · system_prompt.pyポリシーローダー6種 · tool、skill…run-2606-broken-tool-usegen-0のベースライン · 監査5回の平均never arm · 変更なしの対照random · gate armreplicate · 単発KEEPの再測定evolve/scaffold_search外部の探索ループ · ランタイムの外変更の候補実行ごとに1つ測定装置比較中は固定run-2606 · 2026年6月3–4日broken_tool_use監査対象のGEODE許可されたポリシーだけが変わる1承認2 実行契約 · 実行契約 · モデル · 予算 → 固定予算のループ23 候補を1つ要求 · 固定予算のループ → mutator · 候補1つ34ポリシー変更 · mutation ID5 シード · ルーブリック固定 · シードプール · ルーブリック固定 → 監査サブプロセス · 固定タイムアウト56選択されたポリシー7ポリシーごとのoverrideパス8audit subprocess9監査の対話1次元スコア2 baseline · provenance · baseline · provenance → critical回帰 · ペナルティ23 fitness · 回帰の理由 · critical回帰 · ペナルティ → _should_promote · KEEP34KEEP · 次のベースライン5REJECT · 以前の値を復元6結果 · 判定行13つのarm2K=5平均のベースライン3変更なしで測定4--replicate K5再測定 → 復元

変更1つ → 監査

実行契約を固定したうえで許可されたポリシーを1つだけ変更し、同じ測定装置でGEODEを監査します。稼働中の製品が自らを書き換える経路ではありません。

  1. 運用者の承認実行 · 判定: 承認実行契約 · モデル · 予算program.md

    ライブ呼び出しと固定予算が承認された後にだけ実行を開始します。承認がなければ、契約を準備してオフラインで確認するだけです。

  2. 実行契約 · モデル · 予算program.md実行 · 判定: 実行契約固定予算のループtrain.py

    シードとルーブリックの版、役割ごとのモデルと認証情報の出所、測定設定、反復・時間・コストの予算、昇格ポリシー、停止条件を実行前に固定します。

  3. 固定予算のループtrain.py実行 · 判定: 候補を1つ要求mutator · 候補1つloop/mutate

    根拠のある1つの仮説が、許可されたポリシーサーフェスを1つだけ変更します。

  4. 7つのサーフェス · ハイパーパラメータ不可loop/mutateデータ: ポリシー変更 · mutation IDファイルベースのポリシーstate/policies

    変更できるのは7つのサーフェスだけです。ラッパープロンプト、ツールポリシー、分解の助言、リフレクション、スキルカタログのメタデータ、エージェント契約(role、system_prompt、tools)、ツールの説明とヒントです。ハイパーパラメータの変更は、パース時と適用時の両方で拒否されます。ポリシーの適用、再測定、任意のコミットは別々のステップなので、適用そのものは監査ではありません。

  5. シードプール · ルーブリック固定prepare.py実行 · 判定: シード · ルーブリック固定監査サブプロセス · 固定タイムアウトmeasure.py

    prepare.pyはシードプールとルーブリックの固定された基準で、候補はこれを変更しません。測定モジュールを変えると、変わるのはテスト対象のシステムではなく測定です。

  6. ファイルベースのポリシーstate/policiesデータ: 選択されたポリシーポリシーごとのOVERRIDE · STRICTmeasure.py

    measure.pyが現在選択されているポリシーファイルを読み、監査環境へ渡します。

  7. ポリシーごとのOVERRIDE · STRICTmeasure.py実行 · 判定: ポリシーごとのoverrideパスcore · ポリシーローダー

    measure.pyはwrapperとポリシーごとのoverride・strictのパスを監査サブプロセスに渡し、ランタイムの対応するポリシーローダーがそれぞれを読みます。wrapper(GEODE_WRAPPER_OVERRIDE → system_prompt)はそのうちの1分岐で、環境キーが増えても変更可能な7つのサーフェスは広がりません。ファイルを編集しただけでは候補がtargetに届いた証明にならず、監査の証拠に含まれる診断で確認します。

  8. 監査サブプロセス · 固定タイムアウトmeasure.py実行 · 判定: audit subprocessPetri監査

    監査は固定のタイムアウトと予算で実行し、比較の途中で変更しません。出力がない場合は0点ではなく、診断上の欠落です。

  9. Petri監査データ: 監査の対話core · ポリシーローダー

    auditorがシードのシナリオでGEODEと対話し、judgeがその会話記録を採点します。

判定 → 保持 · 復元

同じ契約のベースラインと比較し、critical回帰と昇格ルールでKEEPを決めます。却下された変更は、記録された以前の値に復元します。

  1. Petri監査データ: 次元スコアcritical回帰 · ペナルティfitness.py

    スコアは、欠けた次元とサンプル数とともに渡されます。測定されていない次元を観測値としては読みません。

  2. baseline · provenanceledger.pyデータ: baseline · provenancecritical回帰 · ペナルティfitness.py

    比較には、記録された契約とepochが同じベースラインだけを使います。新しいGitブランチを作っても、ベースラインの状態は分離されません。

  3. critical回帰 · ペナルティfitness.pyデータ: fitness · 回帰の理由_should_promote · KEEPgate.py

    まずcritical次元の回帰と補助的なペナルティを確認し、次にマージンまたは目標次元の検定を行います。正のスカラー値だけで昇格することはありません。

  4. _should_promote · KEEPgate.pyデータ: KEEP · 次のベースラインbaseline · provenanceledger.py

    保持された候補が次のベースラインになります。ローカルで保持された候補は、リポジトリへのマージでもリリースでもありません。

  5. _reject_and_revertgate.py実行 · 判定: REJECT · 以前の値を復元ファイルベースのポリシーstate/policies

    runnerが作った候補については、そのmutation IDで記録されたポリシーの区間を復元し、復元の失敗には別途フラグを立てます。手動の変更は自動では復元されず、復元が不確かなときは次の候補に進みません。

  6. _should_promote · KEEPgate.py記録 · 観測: 結果 · 判定行results · mutation行ledger.py

    測定、判定、出所を結果の行として一度だけ書き込みます。過去の行は書き換えません。

対照 · 再測定

2026年6月の実行:変更なしのnever armとK=5のベースラインで監査のノイズを別に測り、単発監査のKEEPはreplicateで再確認しました。

  1. run-2606-broken-tool-use実行 · 判定: 3つのarm固定予算のループtrain.py

    2026年6月3–4日の実行では、never(変更なし)、random(無作為に採択)、gate(判定で採択)の3つのarmで、変動と変更の効果を切り分けました。targetはGPT-5.5、auditorとjudgeはClaude Opus 4.8でした。

  2. gen-0のベースライン · 監査5回の平均run-2606-broken-tool-useデータ: K=5平均のベースラインbaseline · provenanceledger.py

    gen-0のベースラインは、監査5回の平均でした(Petri broken_tool_use、低いほど良い、平均2.667)。

  3. never arm · 変更なしの対照run-2606-broken-tool-use実行 · 判定: 変更なしで測定監査サブプロセス · 固定タイムアウトmeasure.py

    never armは、ポリシーを一切変えずに平均3.38まで変動しました(監査10回、低いほど良い)。監査のノイズが変更の効果を上回っていたことの直接の根拠です。

  4. --replicate K · 再測定train.py実行 · 判定: --replicate K監査サブプロセス · 固定タイムアウトmeasure.py

    同じ候補を同じ条件でさらにK回測定し、たまたま良かった単発の監査を除外します。

  5. replicate · 単発KEEPの再測定run-2606-broken-tool-use実行 · 判定: 再測定 → 復元_reject_and_revertgate.py

    gateの単発監査でKEEPされた候補(1.6)は、replicateでは3.0–3.8とベースラインより悪化したため、champion 2.667に戻しました。この実行の結論は、明確な改善なしです。

すべての接続を同じ太さで表示します。フローを選ぶと、その経路だけを番号付きで強調します。

  • 実線 · リクエスト・候補・結果が流れる方向
  • 破線 · 実行・判定・認可・設定
  • 長い一点鎖線 · 記録と観測、判定とは別
  • 太い黒線 · 選んだフロー。番号は順序
  • ボックス · コードまたは記録の境界、見出しにパス
  • 内側のチップ · その境界内の構成要素
  • 破線ボックス · その境界の外
  • ループ · 測定の実行
  • 契約 · 判定
  • ポリシー · 記録
  • 変更 · 監査対象 · 実行記録

GEODEのSILドライバーの名前はautoresearchで、prepare/train/programの構成と固定予算は、Karpathyのautoresearchに倣っています。モデルの重みは変更せず、比較中は測定装置と予算を固定します。

変更できるもの
ラッパープロンプト、ツールポリシー、分解の助言、リフレクション、スキルカタログのメタデータ、エージェント契約、ツールの説明とヒントの7つのサーフェスです。評価器、予算、シード、ルーブリックは比較中は固定です。
実行記録の範囲
run-2606の値は、その実行のPetri broken_tool_useの平均です(低いほど良い)。SILの累積的な改善や汎化の根拠ではありません。