Fable 5 + GPT-5.6: あなたが眠っている間にリリースされるエージェントスタックの A から Z までの構築方法
これは、すべてのピースを順番に、各ピースの後にチェックポイントを設けた完全な構築ガイドです。
忘れる前に、この 12 のビルドをブックマークしてください。
はじめに
現在、一般公開されている最も高性能な 2 つのモデルを手に入れていますが、それでもあなたはそれらを手動で 1 つずつ使っているだけです。
先月、3 つの変化がありました。
- Claude Fable 5 は、複数のステージにわたって計画を立て、自身のサブエージェントを派遣し、自身の出力を検証します。入力 100 万トークンあたり $10、出力 $50。
- GPT-5.6 は 7 月 9 日にリリースされ、3 つの恒久的なティアとして提供されています。Sol は $5 と $30、Terra は Sol の半額、Luna は $1 と $6 です。OpenAI は現在、ルーティングの決定そのものを製品として販売しています。
- Fable 5 は 6 月の 19 日間、輸出規制により停止されました。可用性は、あなたに起こるものになりました。
何気なく実行すると、これらのモデルは印象的な間違ったものを生成するための高価な方法です。
システム内で実行すると、これらはレンタルできる従業員に最も近いものです。Anthropic のエンタープライズ数値によると、Claude Code は 1 人の開発者につき 1 アクティブ日あたり約 $13 です。OpenAI は Codex を月額 $100 ~ $200 としています。
このガイドでは、そのシステムを 12 のビルドで構築します。実際のファイルを順番に、それぞれ公開前にテストし、各ファイルの後にチェックポイントを設けて、次のファイルを積み上げる前にそのピースが動作することを確認できるようにします。
このガイドは、リポジトリ、ターミナル、およびいずれかの CLI にアクセスできるすべての人のためのものです。例はコード中心ですが、これはループがコードの周りで成長してきたためです。しかし、ルーター、アドバイザー、ゲートは、インボイスやレポートでも同様に機能します。
チェックを行いながら順番に読んでください。各ビルドには 10 ~ 20 分かかり、合計で約 2 時間です。最後の 30 日間は、システムがあなたなしで実行する権利を獲得するスケジュールです。
以下の 3 つの原則が、すべての設計上の決定を予測します。
- 境界でルーティングする。モデルよりも労力を優先する。 セッション途中のモデル変更は、90% のキャッシュ割引を無駄にします。同じモデルで思考の労力を上げることは、配管に追加コストはかかりません。
- 自分の宿題を採点するものは何もない。 ライター、ルーター、アドバイザー、レビューアーは異なる関係者であり、可能な限り異なる系統から来ており、最終的な投票は bash スクリプトです。
- 完了とは環境に関する事実である。 合格スイート、チェックされたタスクファイル、評決行。決してモデル自身の自己評価ではありません。
マップ、そしてなぜ通常のマップが間違っているのか
ループエンジニアリングとは、明示的な停止条件とリトライロジックを備えたエージェントワークフローです。ハーネスが作業の完了を判断し、「私は完了したか」をモデルに任せることはありません。
標準的な図は swyx の Loopcraft スタックです。5 つのループが互いにネストされ、実行がタスク内、製品内、システム内、監視内にあり、それぞれに独自の終了条件があります。これは誰かが描いた中で最高のものです。
私はそれを数週間使用しました。その後、それに基づいて構築しようとしたところ、4 箇所で破綻しました。
1) 問題 1: ループはネストしない。
ネストとは、外側のループの 1 回転が内側のループの 1 回の完全な実行に等しいことを意味します。しかし、実際にはそうではありません。システムループは製品ループが終了するのを待ちません。何もリリースされなくても、日曜日に実行されます。
トークンストリームを手動で中断しても、4 つのレイヤーを元に戻す必要はありません。これは、ハンドオフを行うシステムの上に描かれた包含の図です。
2) 問題 2: 無限として描かれたループは請求書である。
オリジナルは製品ループをそのように描いています。実際には、予算、チェックポイント、または誰かが忍耐を失った時点で終了します。
それを「設計上のものではない」と呼ぶことは、エージェントシステムからお金が漏れる正確な場所、つまり終了方法を誰も指示しなかったループを隠すことになります。
3) 問題 3: アボート(中断)がない。
すべてのレイヤーにハッピーエンドがあり、アンハッピーエンドはありません。実際のループには両方が必要です。機能した場合の終了方法と、機能しなかった場合の停止方法です。
私が見てきたすべての暴走請求書は、定義された終了と未定義のアボートを持つループでした。
4) 問題 4: 検証が欠落しており、それがすべての鍵である。
検証はレイヤー間の契約です。下位のループが上位のループに事実ではなくレポートを渡すと、上位のループは嘘の上で終了します。
その単一のギャップが、ループが停止条件を満たしてもまだ間違っている可能性がある理由です。
これが私が構築するバージョンです。
証拠のはしご
6 つの段、各段に 2 つの出口、そして 1 つのルール:制御は目標として下に流れ、証拠は事実として上に流れ、どの段もその下の段からのレポートで終了してはならない。

この形状から 5 つの法則が導き出されます。
すべての段にアボートがあるか、さもなければそれは請求書である。 ループがどのように悪い結末を迎えるかを名前を挙げられないなら、あなたはサブスクリプションを構築したことになります。これが、ralph.sh が 2 つの上限を持ち、スウォームがサイクル上限を持つ理由です。
証拠は上に流れ、制御は下に流れる。 段は、その下で生成された事実に基づいて終了し、その下で書かれた要約に基づいて終了してはなりません。
ファクトリーゲートは、この法則を SQL で実装したものです。2 人のレビューアーが緑色と言いました。それでもゲートは拒否しました。なぜなら、合格したテスト行を誰も生成していなかったからです。
評決は意見です。行は証拠です。
段ごとのコストは、1 段上がるごとに約 10 倍になります。
段 2 を逃れたバグは、段 3 で捕捉するのに 10 倍のコストがかかり、段 4 では 100 倍のコストがかかります。
これが、最善の検証を可能な限り低い段に置くという議論全体であり、それがゲートが会議ではなく bash スクリプトである理由です。
時間スケールはモデルに属し、段には属さない。
段 2 は 2024 年には数分かかりましたが、2026 年には数時間かかり、すぐに数日かかるようになるでしょう。時計ではなく、終了条件に対して設計してください。これが、古い図が最も早く時代遅れになる点です。
終了条件を持たないのは段 5 だけであり、それが人間であることの意味です。
あなたはそこに住んでいます。はしごは、1 つの文を得るために存在します:ループは停止条件を満たしても、まだ間違っている可能性があります。
テストは合格し、ゲートは緑色になり、両方のレビューアーが署名し、最後のコミットが依然として間違いである可能性があります。あなたの下のすべての段は、そのチェックをより小さくするために存在します。それらのどれも、あなたからそれを奪うことはできません。
前提条件
1claude CLI (Claude Code) with Fable 5 access2codex CLI with GPT-5.6 access # or the official plugin inside Claude Code3python3, jq, git, gh, make, cron4a repo with a test command that works today56# optional, for mixed fleets (BUILD 7):7openai/codex-plugin-cc # official: run Codex inside Claude Code8claude-model-switch # local proxy: any provider behind Claude Code9CLIProxyAPI # wrap CLI subscriptions as API endpoints
構築するもの
1your-repo/2 CLAUDE.md # BUILD 1: Claude 側の憲法3 AGENTS.md # BUILD 1: Codex 側の憲法4 .claude/5 skills/model-bench/SKILL.md # BUILD 0: 価格、API ID、フォールバック。数値が入っている唯一のファイル6 skills/model-router/SKILL.md # BUILD 47 skills/stuck-protocol/SKILL.md # BUILD 58 skills/ship-gate/SKILL.md # BUILD 29 agents/fable-expert.md # BUILD 510 agents/fresh-eyes-reviewer.md # BUILD 611 agents/sol-reviewer.md # BUILD 612 agents/scout.md # BUILD 713 loop/14 ralph.sh # BUILD 3: 鼓動15 two_lane.sh # BUILD 6: ベンダー間レビューループ16 PROMPT.md TASKS.md # BUILD 3: 作業プロトコル17 gate/18 verify.sh # BUILD 2: 決定論的な最終投票19 eval_gate.py eval/cases.jsonl # BUILD 2: ルーティング変更ゲート20 router/21 router.py # BUILD 422 advisor_loop.py # BUILD 523 ~/.codex/24 config.toml # BUILD 0: luna/terra/sol プロファイル25 prompts/effort.md # /effort タスクをスコアリングし、席を指名する26 prompts/plan-stop.md # /plan-stop 計画し、見積もり、そして停止する27 prompts/fable-advice.md # /fable-advice ベンダー間の専門家相談28 prompts/review-hostile.md # /review-hostile クリーンコンテキストでの評決29 prompts/compost.md # /compost 失敗を法則に変える、毎週30 factory/31 factory_gate.py # BUILD 8: ブラックボード + 完了ゲート32 factory.sh # BUILD 8: 概要 -> 実装 -> レビュー -> ゲート33 factory.db # BUILD 8: 決定を下す行34 swarm/35 swarm.sh # BUILD 9: 計画 -> 派遣 -> スコアリング -> 再計画36 goals.jsonl # BUILD 9: 1 行に 1 つの目標、それぞれにチェックが付いている37 system/38 verify_goals.py # BUILD 10: 毎日の再検証、永久に39 goals/ # BUILD 10: 完了したものごとに 1 ファイル40 ROUTING.md # BUILD 12: 両方のハーネスの完全なルーティングポリシー41 progress.log # すべてのビルドがここに追加される42 # オプション (BUILD 7): localhost:4000 上の claude-model-switch プロキシ、43 # CLI サブスクリプションを API エンドポイントとしてラップするための CLIProxyAPI
BUILD 0: エンジンの設定
自分自身のファイルを書く前に、これらを設定してください。以下のすべての数値は、公開週に公式の価格ページで確認されました。
ベンチ: すべての席、2026 年 7 月
システムが採用する人材リストです。
価格は 1 つのスキルファイル、.claude/skills/model-bench/SKILL.md にあり、ルーティングやコストに関する質問の前にオンデマンドでロードされます。他のファイルに数値がハードコードされることはありません。
この記事が書かれる前の 6 週間で、価格は 3 回変動しました。 記事に書かれた価格は、公開時点では間違っています。スキルファイルの価格は、1 回の編集で修正できます。

下流のすべてを決定する分割:
- Fable 5 は、ハードなソフトウェア作業をリードします。 SWE-Bench Pro で 80% 対 Sol の 64.6%、そして全体的なインテリジェンスでは Sol をわずかに上回ります。
- Sol はターミナルとエージェント作業をリードします。 Terminal-Bench 2.1 で 88.8%、そしてコーディングエージェントインデックスでトップであり、タスクあたりのコストは Fable の約 3 分の 1 です。
その分割こそが、このシステムが 2 ベンダーである理由です。Fable は判断し計画し、Sol はレビューしターミナルを駆動し、どちらも大量のタイピングは行いません。

人々が誤解する 2 つの席。
Opus 4.8 は、埃をかぶっている旧型のフラッグシップではありません。 これは Fable の下の自動フォールバックであり、複雑なエージェントコーディングの推奨デフォルトです。あなたのシステムは、計画していなくてもこれを継承します。
入門価格の Sonnet 5 は、ボード上で最高の価値です。 能力は Opus 4.8 に近く、入力価格は Fable の数分の一であり、これがこのビルド全体でデフォルトの実行エンジンである理由です。このレートは 8 月 31 日に期限切れになり、スキルファイルはすでにそれを認識しています。
そのスキルファイルは、システム内で唯一数値を含むファイルです:
1---2name: model-bench3description: 現在の価格表、API モデル ID、およびこのシステムが採用できるすべてのモデルのフォールバックチェーン。ルーティングの決定、コスト見積もり、予算に関する質問、モデル比較、またはユーザーが何かのコストを尋ねる前にロードします。4---56# モデルベンチ78価格と API 識別子の唯一の信頼できる情報源。このリポジトリ内の他の何も価格をハードコードしていないため、ラボがレートを変更した場合、このファイルを編集するだけで、他は何も編集する必要がありません。2026-07-13 確認済み。価格は変動します。予算を立てる前に再確認してください。910## Anthropic (Messages API, /v1/messages)1112努力: output_config {"effort": "low|medium|high|xhigh|max"}。アダプティブシンキングは Fable 5 では常にオンで、無効にできません。max_tokens は思考 PLUS 応答テキストを制限するため、high 以上では大きめに設定してください(64k 付近から開始)。そうしないと、モデルが思考の途中でスペースを使い果たします。1314| モデル | 100 万トークンあたりの入出力 | キャッシュ読み取り | 席 |15|---|---|---|---|16| claude-fable-5 | $10/$50 | $1.00 | 指揮者、プランナー、アドバイザー、審判。自動的に opus-4-8 にフォールバック |17| claude-opus-4-8 | $5/$25 | $0.50 | 保持ルール下の指揮者 |18| claude-sonnet-5 | $2/$10 (8 月 31 日まで、その後 $3/$15) | n/a | デフォルトのコーディング実行エンジン |19| claude-haiku-4-5 | $1/$5 | $0.10 | スカウト、サブエージェント、機械的な作業 |2021Fable、Opus 4.8、Sonnet 5 では 1M コンテキスト、ロングコンテキストで FLAT 価格。そのため、長い読み取りはここにルーティングされます。最大出力 128K。2223## OpenAI (Responses API, /v1/responses)2425| モデル | 100 万トークンあたりの入出力 | キャッシュ済み | 席 |26|---|---|---|---|27| gpt-5.6-sol | $5/$30 | $0.50 | ベンダー間レビューアー、ターミナル作業 |28| gpt-5.6-terra | $2.50/$15 | $0.25 | Codex デイリードライバー(最初に Luna とテストする) |29| gpt-5.6-luna | $1/$6 | $0.10 | 機械的な作業、静かなティック |3031しきい値を超えるロングコンテキストは、Anthropic のフラットな 1M ティアとは異なり、入力価格が約 2 倍になります。明示的なキャッシュブレークポイントを持つ最初のファミリー。書き込みコストは 1.25 倍。3233## オープンウェイト(バルクワーカー)3435| モデル | 100 万トークンあたりの入出力 | キャッシュヒット |36|---|---|---|37| deepseek-v4-flash | $0.14/$0.28 | $0.0028 (約 98% オフ) |38| deepseek-v4-pro | $0.435/$0.87 | n/a |39| kimi-k2.7-code | $0.95/$4.00 | $0.19 |4041## 積み重なる割引42 - キャッシュ読み取りは、両方のラボで新しい入力の 10 分の 1 のコスト(約 90% オフ)43 - キャッシュ書き込みは、1 回の読み取り(5m)または 2 回の読み取り(1h)で元が取れる44 - バッチ API は双方向で 50% オフ45 - 繰り返されるプレフィックスでのバッチ + キャッシュ読み取りは、約 95% オフになる46 - Anthropic の最新のトークナイザーは、同じテキストに対して約 30% 多くのトークンを生成するため、実効コストは表示価格よりも高くなります。実効ベースで予算を立ててください。4748## コストに関する質問への回答方法49 1. 入力と出力を別々に見積もる。エージェントは、書くトークン 1 つに対して約 100 トークンを読むため、入力が支配的になり、キャッシュヒット率が請求額を決定します。50 2. 基本レートではなく、繰り返されるプレフィックスにキャッシュ読み取りレートを適用します。51 3. Anthropic の数値にトークナイザー分の約 1.3 を掛けます。52 4. 範囲を提示し、前提条件を述べ、使用したこのファイルの行を言います。53 5. 数値がリポジトリの 1 日あたりの上限を超える場合は、何かを実行する前にそう言います。5455このファイルから読み取らなかった価格を提示しないでください。ここにリストされていないモデルはベンチに載っておらず、追加することはゲートを通過する必要があるルーティング変更です。
構築方法を変える 7 つの事実:
- キャッシュされた入力は、両方のラボで 90% オフです。 システムプロンプトに 1 つのタイムスタンプがあると、すべての呼び出しでそれが無効になります。安定したプレフィックス、追加専用の履歴、常に。エージェントは、書くトークン 1 つに対して約 100 トークンを読み取るため、この割引が請求額の大部分を占めます。
- キャッシュ書き込みは追加コストがかかりますが、すぐに元が取れます。 Anthropic の 5 分間の書き込みは 1.25 倍で請求され、1 回の読み取りで損益分岐点に達します。GPT-5.6 は、明示的なキャッシュブレークポイントと価格設定された書き込みを持つ OpenAI の最初のファミリーです。システムプログラマーがメモリ階層を中心にアーキテクチャを設計するように、キャッシュを中心にアーキテクチャを設計してください。
- 最新の Anthropic トークナイザーは、同じテキストに対して約 30% 多くのトークンを生成します。 実効価格は表示価格よりも高くなります。実効ベースで予算を立ててください。
- Fable 5 からの安全性拒否はエラーではありません。 呼び出しは成功し、作業は設計上、セッションの 5% 未満で Opus 4.8 に委ねられます。終了コードだけでなく、何が起こったかを読み取り、必要になる前にフォールバックチェーンを設定してください。
- 中間ティアをデフォルトにしないでください。 独立したテストでは、コストと品質のフロンティアにおいて、一部の Luna または Sol 設定が常に Terra を上回ることがわかりました。料金を支払う前に、独自のトラフィックで Terra を Luna とテストしてください。
- バッチ API は、一晩待てるものはすべて半額にし、 キャッシュと割引が積み重なります。バッチ処理での繰り返しプレフィックスは、約 95% オフで実行されます。BUILD 7 の夜間バーナーは、これを活用するために存在します。
- 可用性は運用上のリスクであり、仮説ではありません。 Fable 5 は 6 月に 19 日間ダウンしました。ここでのすべてのモデル参照にはフォールバックがあります。fable-5 は opus にフォールバックし、sol は terra にフォールバックし、すべてのフォールバックは記録されます。
2 つ目のメーター: 席は API キーではない
上記のすべての数値は、100 万トークンあたりのドルで価格設定されています。呼び出しごとに支払う場合、これは正しい通貨です。
$200 の Codex Pro シートまたは Claude Max シートでこれを実行する場合、それは間違った通貨です。
シートでは、メーターは 5 時間のウィンドウと 1 週間のウィンドウであり、一緒に評価され、1 つのリクエストが両方に対してカウントされます。
週としては余裕があっても、4 時間ロックアウトされる可能性があります。これは、1 つのメッセージが短い方のウィンドウを消費したためです。
同じドクトリン。異なる通貨。3 つの設定が、1 つのメッセージがウィンドウのどれだけを消費できるかを決定します:

高速モードは高価なモードです。なぜなら、ちょうど大きくなった数値を乗算するからです。
GPT-5.6 は、メッセージあたりの実行時間が 5.5 よりもはるかに長くなります。ほとんどの場合、これは利点です。また、バーンの予測不可能性も高めます。
- Theo は、Sol で $200,000 以上のトークンを消費したと報告しています
- 彼は、1 つの 5.6 メッセージが 5 時間のウィンドウの 15% を消費するのを見たことがあります
- 乗数では、それは 1 つのメッセージでウィンドウの 40% になります
速度は無料ではありません。速度が請求するのは、あなたがとにかく消費しようとしていたトークンです。速度のドキュメントの乗数を信頼する前に再読してください。それはモデルごとに公開されており、変動します。
Ultra はより微妙な罠です。なぜなら、インターフェースはそれを努力レベルが存在する場所にファイルし、それはそれらの 1 つではないからです。
- Max は深さです。1 つのモデル、1 つの問題、1 つの推論チェーンにより多くの時間。
- Ultra は幅です。作業は 4 つのエージェントに広がり、その後統合されます。
- 異なる軸。Ultra は「max 以上」ではありません。
真に分割できないタスクに向けられた ultra は、1 つの調査を複製する 4 つのエージェントを購入します。
Terminal-Bench 2.1 で約 3.1 ポイント、88.8 から 91.9 への価値があり、フリート全体の消費に相当します。サブ問題間の境界が実際になるまではオフにしてください。
Sol と Terra が両方とも正しいデフォルトである理由
現場のレポートでは、ほとんどすべてに Sol が実行されています。上のベンチでは、Terra が Codex のデイリードライバーとなっています。両方とも正しく、その理由はメーターです。
- レートカードによると、Sol の出力コストは Terra の 2 倍です
- シートによると、あなたはすでに支払っています
- したがって、唯一の実際の問題は、緑色に達するまでに何回のターンが必要かです
- より低い努力でのより強力なモデルは、通常、より少ないターンで済みます
レートはコストではありません。コストはレート×ターン数(緑色まで)であり、2 番目の項が変動する項です。
これが BUILD 4 の法則が別の方向から到着するものです。ダイヤルに触れる前にシートをアップグレードしてください。$200 ティアで high の Sol として読み取るシートでは、その下の low の Sol として読み取ります。どちらかを信じる前に測定してください。
今すぐ Codex ティアを設定します:
1# ~/.codex/config.toml2model = "gpt-5.6-terra" # デイリードライバー3model_reasoning_effort = "medium"4# service_tier = "fast" # コメントアウトしたままにしてください。fast モードは 2.5 倍のクレジットを請求します5 # クレジット。/fast status を実行して、すでにその状態になっていないことを確認してください67[profiles.fast] # 機械的な作業。これは「高速モード」ではありません。この8model = "gpt-5.6-luna" # プロファイルは、2.5 倍のメーターではなく、より安いモデルです9model_reasoning_effort = "low" # 2 つの異なるもの、同じ単語。1011[profiles.deep] # 計画、厄介なバグ、レビュー12model = "gpt-5.6-sol"13model_reasoning_effort = "high"
CHECK 0: 両方の CLI が認証され、現在のリポジトリでテストコマンドが 0 で終了することを確認します。
BUILD 1: 憲法
これらのモデルは法律に従い、ヒントを中心に最適化されるため、すべての行には数値、「絶対にしない」こと、またはそれをチェックするコマンドが必要です。
CLAUDE.md を作成します:
1# CLAUDE.md23## 絶対にしないこと(例外は事前に尋ねる必要があります)4- セッションの途中でモデルを切り替えないでください。ルーティングはセッションとサブエージェントの境界でのみ行われます。タスク途中の切り替えはキャッシュを無駄にします。5- 自分の差分を自分でレビューしないでください。レビューは新しいコンテキストまたは異なる系統から行われます。Devin のレビューアーがエージェント PR あたり 2 つのバグを捕捉するのは、まさにライターと何も共有しないからです。6- テストを合格させるために、テストを編集、弱体化、または削除しないでください。自動的に FAIL になります。7- 自己評価から「完了」を報告しないでください。完了 = gate/verify.sh が合格したことです。8- 4 回目のアドバイザー相談を受けないでください。3 回のミス = BLOCKED、人間の番です。9- eval_gate.py が BLOCKED したルーティングまたはプロンプトの変更をマージしないでください。10- 両方の上限(MAX_ITERS と BUDGET_USD)が設定されていない状態でループを実行しないでください。11- フロンティアモデルが稼働していると想定しないでください。フォールバック: fable-5 -> opus、sol -> terra。すべてのフォールバックを progress.log に記録してください。12- 依頼されていないサブエージェントを生成しないでください。子エージェントは親のモデルと努力を継承するため、熱心なフリートは高価なシートを継承します。1314## 派遣(最初に一致したものが優先)15| # | タスク | 席 |16|---|---|---|17| 1 | 計画 / アーキテクト / 移行 | fable-5 が計画し、sonnet が実行する |18| 2 | 抽出 / フォーマット / テスト / ドキュメント | haiku または luna |19| 3 | 60k トークンを超えるコンテキスト | Anthropic 1M フラット価格ティア |20| 4 | エージェントが書いたコードのレビュー | codex 経由の sol、ネイティブハーネス |21| 5 | 曖昧 | 難易度スコア: 0-1 は安価、2 は sonnet、3+ はフロンティア |22| 6 | それでも不明 | 安価なモデルで一度実行し、検証し、失敗したら一度エスカレーションする |2324## 完了25- すべてのタスクは、作業開始前に機械的にチェック可能な done_when を持ちます。26- 新しいコンテキストのレビューアーは、仕様と差分を判断し、それ以外は何も判断しません。27- gate/verify.sh が最終投票を保持します。1 つのアイテムに対する 2 回の作成者/チェッカーの不一致 -> 停止し、人間用にキューに入れます。
リポジトリルートに AGENTS.md を作成します。同じ法律を Codex の方言で記述します。100 行程度に抑え、目次として機能させ、百科事典にはしないでください:
1# AGENTS.md23## コマンド4| 目的 | コマンド |5|---|---|6| テスト | make test (このコマンドが完了の定義です) |7| リント | make lint |89## セッションプロトコル101. 最初に progress.log と TASKS.md を読む。2. チェックされていないタスクを 1 つ。113. 実装し、完全なスイートを実行し、緑色の場合のみコミットし、説明的なメッセージを付ける。124. タスクにチェックを入れ、1 行を progress.log に追加し、停止する。13テストが完了を定義します。テストを弱体化、スキップ、または削除しないでください。間違ったテスト = タスクを BLOCKED とマークし、理由を述べてください。1415## モデルポリシー16デフォルト: terra、medium 努力。機械的: プロファイル fast (luna, low)。17計画と厄介なバグ: プロファイル deep (sol, high)。18モデルよりも努力を優先。プロファイルはセッション開始時に選択され、タスク途中では変更されません。19高速モード OFF (2.5 倍クレジット)。Ultra OFF。どちらも努力レベルではありません。20私が依頼した場合にのみサブエージェントを生成してください。子エージェントはこのセッションのモデルと推論レベルを継承するため、high 努力での熱心な生成は、high 努力のフリート全体になります。2122## 行き詰まり23シグナル: 同じエラーが 2 回。2 回の進捗なしのステップ。2 つの異なる修正後も生き残るテスト。その後 /fable-advice。最大 3 回の相談、その後 BLOCKED。2425## レビュー26/review-hostile を新しいセッションで、マージの前に、または Claude 側からのベンダー間レーンを使用してください。自分のレビューされていない作業を決してマージしないでください。
1 つのドクトリンは両側に存在しなければなりません。そうしないと、緩い習慣を持つハーネスが、ツールを切り替えるたびに勝ってしまいます。
CHECK 1: すべての行について、モデルが 80% 準拠して成功を主張できるかどうかを自問してください。はいの場合は、数値または「絶対にしない」ことを使用して書き直してください。wc -l CLAUDE.md が 60 未満であることを確認します。
BUILD 2: ゲート
他のすべてが存在する前に、bash スクリプトが最終投票を保持しなければなりません。なぜなら、後のすべてのビルドがそれを前提としているからです。
スタック用の gate/verify.sh を作成します:
1#!/usr/bin/env bash2set -e3npm run typecheck --if-present4npm test --if-present5npm run lint --if-present
gate/eval_gate.py を作成します。これは、将来のすべてのルーティングまたはプロンプト変更のための安全ベルトです。現在の設定と提案された設定の両方で、50 ~ 500 件の保留ケースを実行し、決定論的なチェックのみを行います:
1for case in cases: # {prompt, must_include, must_not_include, max_words}2 hits += passes(case, run_config(case.prompt))3verdict = "SHIP" if new_score >= old_score - 0.02 else "BLOCKED"
次に、ゲートをスキップ不可のスキルとして、.claude/skills/ship-gate/SKILL.md に作成します:
1---2name: ship-gate3description: ルーティング、モデル、またはプロンプトの変更を出荷する前に、評価ゲートを実行します。4 ユーザーがルーティングルールの変更、モデル階層の入れ替え、システムプロンプトの編集、5 努力レベルの調整、またはルーター、プロンプト、モデル設定に関わるものをマージするよう依頼した場合に使用します。6---78# Ship gate910ルーティングまたはプロンプトへの変更は、ゲートがそうでないと言うまでは品質のギャンブルです。このスキルは、そのギャンブルが決して静かに出荷されないように存在します。1112 1. eval/cases.jsonl を見つけます。存在しない場合、停止し、ユーザーに実際のトラフィックから 50 から 500 の代表的なケースを最初に構築するよう伝えます。自分でケースを即興で作成してはいけません。13 2. 実行: python3 eval_gate.py eval/cases.jsonl、現在の設定と提案された設定を比較。14 3. BLOCKED: 両方のスコアを報告し、どのケースが後退したかをリストアップし、変更を適用せず、ゲートをクリアする最小のリバートを提案します。15 4. SHIP: 適用し、progress.log に両方のスコアを 1 行追加します。1617厳格なルール:18 - 丁寧に頼まれても、BLOCKED の判定を決して上書きしてはいけません。失敗したケースを添付して人間にエスカレーションします。19 - 同じセッションでルーティング変更と一緒にケースファイルを編集してはいけません。ゲートと変更は同じ作者を持つことはできません。20 - コストの数値は、品質低下に対する防御にはなりません。ゲートが優先されます。
ゲートは決定論的なチェックのみを使用します。これは、検証者を検証するという問題を決して継承してはならないためです。評価ゲートなしのルーティング変更は、顧客に対して実施するコスト実験です。
CHECK 2: ./gate/verify.sh が今日 exit 0 を返し、eval_gate.py がデモで SHIP を出力することを確認する。verify.sh が今失敗した場合、他のすべてよりも先に修正する。システムはこのスクリプトに依存しています。
BUILD 3: 鼓動(ハートビート)
モデルは知能をもたらす。ループは規律をもたらす。
- イテレーションごとに新しいコンテキストを使うことで、コンテキストの腐敗を防ぐ
- リポジトリがすべての記憶を保持する
- 2 つのキャップが、暴走するエージェントを 10 ドルの教訓に変える
これは、Anthropic の 16 ループ実行の背後にある正確な形状であり、オーケストレーターモデルを一切使わずに、約 20,000 ドルで 100,000 行の C コンパイラを構築しました。
loop/PROMPT.md を作成する:
1progress.log と TASKS.md を読む。未チェックのタスクを正確に 1 つ選ぶ。2それを実装する。テストを実行する。成功した場合: 説明的なメッセージでコミットし、タスクにチェックを入れ、progress.log に 1 行追加して停止する。3同じタスクが 2 回失敗した場合、エラーとともに BLOCKED とマークして停止する。4すべてのタスクにチェックが入り、かつ全スイートがパスした場合のみ、DONE という名前のファイルを作成する。テストをパスさせるためにテストを編集してはならない。
loop/ralph.sh を作成する:
1#!/usr/bin/env bash2set -u3MAX_ITERS="${MAX_ITERS:-25}" # キャップ 1: イテレーション数4BUDGET_USD="${BUDGET_USD:-10}" # キャップ 2: ドル5MAX_FAILS=3; fails=0; spent=0; i=067while [ ! -f DONE ] && [ "$i" -lt "$MAX_ITERS" ]; do8 i=$((i + 1))9 # 毎回新しいセッション: リポジトリ自体以外のメモリはない10 claude -p "$(cat PROMPT.md)" --max-turns 30 \11 --output-format json > out.json 2> err.log \12 && fails=0 || fails=$((fails + 1))13 [ "$fails" -ge "$MAX_FAILS" ] && exit 2 # 回路遮断器14 cost=$(jq -r '.total_cost_usd // 0' out.json)15 spent=$(awk -v a="$spent" -v b="$cost" 'BEGIN{printf "%.4f", a+b}')16 awk -v s="$spent" -v c="$BUDGET_USD" 'BEGIN{exit !(s>c)}' && exit 3 # キャップ17 sleep 218done19[ -f DONE ] && echo "done in $i ticks, \$$spent" || echo "cap hit, \$$spent"
claude の行を codex exec に置き換えれば、同じループで GPT-5.6 を駆動できます。
終了コードは意図的です: 0 は完了または静か、2 は回路遮断器、3 は予算。 BUILD 12 のすべてのアラームはこれらをキーにしています。
コストの行はセッション自身の JSON コストレポートを読み取るため、キャップは見積もりではなく、ハーネスによって実際の支出に対して強制されます。
そのプロンプトの停止を数えてみてください。すべての分岐は 1 つで終わり、それは癖ではなく設計です。
この世代は、前の世代よりもメッセージあたりの実行時間がはるかに長くなります。ほとんどは贈り物ですが、時には請求書になります。なぜなら、続けることを促す必要がなくなったモデルは、あなたが確認したいと思ったポイントを 4 ステップ超えてタスクを実行し続ける可能性があるからです。
ループは構造的にそれを解決します: ティックあたり 1 タスク、最後にハードストップ。
インタラクティブに使用する場合は、それを声に出して言わなければなりません。2 つのプロンプトで作業が完了します:
- 「計画を書いて、その後停止して、何も構築する前に私に見せてください」
- 計画が良ければ: 「構築して、テストして、PR を開いて、最初のラウンドのレビューコメントを処理して、その後停止してください」
長時間実行されるモデルは、誰も端がどこにあるかを教えていない場合にのみ危険です。
長いタスクはコンテキストが失敗するように失敗するため、イテレーションは短く保たれ、環境が記憶を行います。Fable 5 と Codex モデルは現在、実行中に独自のコンテキストを圧縮するため、巧妙なメモリ配管を追加することは避けてください。適切な量は四半期ごとに減少します。
CHECK 3: TASKS.md に 2 つの小さな実際のタスク、BUDGET_USD=2 で 1 回手動実行のティック。1 つのコミット、1 つのチェックされたタスク、1 つのログ行、およびループが 2 番目のタスクを開始せずに終了することを確認します。
BUILD 4: その仕事に値するルーター(モデル、次に努力)
2026 年の最も厳格なルーティングベンチマークである LLMRouterBench は、多くのルーター(商用のものを含む)が、最良の単一モデルを選ぶことを確実に打ち負かせないことを発見しました。したがって、ルーターは自社のトラフィックで無実が証明されるまで有罪と見なされます。
コードの前に、決定ルール。次の両方が真の場合にのみルーターを追加します:
- 安価層とフロンティア層が、自社のトラフィックで約 5 倍の能力対ドルのギャップを示している
- BUILD 2 の評価セットがそれを監視するために存在している
1 つの適切に選択されたモデルが、それらの評価でルーターを打ち負かす場合、ルーターを削除し、シンプルさを維持してください。
基準をクリアしたら、router/router.py は最も安価な決定から順に 3 つのレイヤーを実行します。層は価格ではなく席に名前を付けていることに注意してください。レートは実行時にベンチスキルから取得されるため、価格変更がルーターに影響することはありません。
1TIERS = { # 席(シート)、数値ではない2 "cheap": "gpt-5.6-luna", # または claude-haiku-4-53 "mid": "claude-sonnet-5",4 "frontier": "claude-fable-5", # または gpt-5.6-sol5}6PRICES = load_bench(".claude/skills/model-bench/SKILL.md") # 唯一の真実源78RULES = [9 (kind in {"extract", "format", "summarize"}, "cheap"),10 (kind in {"plan", "architect", "migrate"}, "frontier"),11 (context_length > 60_000, "mid"),12]13tier = layer1_rules(task) or layer2_classifier(task)14if tier: return call(TIERS[tier], task)15return cascade(task) # まず安価で実行、検証、失敗時に 1 回だけエスカレーション
中間層は、読み取れるマーカー(理由、デバッグ、競合、デッドロック、リファクタリング、セキュリティ、さらにプロンプト内のコード、以前の失敗した試行、および複数のサブシステムに触れること)に基づいて難易度をスコアリングします。
0 または 1 点は安価層へ。2 点は中間層へ。3 点以上はフロンティア層へ。カスケードの検証器は決定論的であり、正確に 1 回エスカレーションします。
同じ決定をハーネスに配線して、呼び出されなくても発動するようにします。.claude/skills/model-router/SKILL.md。スキルはルールを再述せず、それを読み取ることに注意してください。これはベンチが価格に使用するのと同じ単一真実源のトリックです:
1---2name: model-router3description: 各タスクを開始する前に、適切な席と努力レベルにルーティングする。4 セッション開始時、サブエージェントを生成する前、ユーザーがどのモデルを使うべきか尋ねたとき、5 またはタスクが計画と実行を混在させるときに使用する。6---78# Model router910ROUTING.md を読み、それを適用する。ポリシーを即興で作ってはならず、ここで言い直してもならない。11このファイルは腐敗しやすく、ポリシーファイルは評価ゲートの下にあるものである。1213このスキルがそのファイルに加えて強制する 3 つのこと:1415 1. 境界でのみルーティングする。セッション開始時とサブエージェント生成時。タスク途中での切り替えは16 キャッシュを無効にし、コンテキストをキャッシュレートの 10 倍で再請求する。17 2. セッション終了時に、安価層の割合を progress.log に追加する。節約はほとんどのトラフィックが18 安価層に移って初めて複利効果を発揮するため、その数値が注目すべき指標である。19 3. ROUTING.md への変更はすべて、ship-gate スキルを通じて出荷される。例外はない。
決定の順序はコストを反映しています: 最初に無料のチェック、次にスコアリングされた推測、最後に有料の実験。
お金はトラフィック分割であり、巧妙さではない。
- 作業の 70 パーセントを 10 分の 1 の価格の層に送ると、請求額は約 3 分の 2 減少する
- 本番環境のレポートは 40 から 85 パーセントの節約に集中しており、その差はほぼ完全に分割によるものである
- 節約はほとんどのトラフィックが安価層に移って初めて複利効果を発揮する
そのため、progress.log の安価層の割合が、このシステムが監視を強制する唯一の数値です。
努力は 2 番目のダイヤル
努力は 1 レベル下のルーティングです: どのモデルが実行されるかではなく、モデルがどれだけ長く考えるかに適用される同じスキルです。
すべてのツールは、ダイヤルを異なるデフォルトに埋めています。Claude Code では高。Codex では中。ほとんどのアプリでは非表示。そのため、人々はすべてに 1 つの設定を残し、過剰に支払うか、考え不足になります。

デフォルトを高にし、最大を最後の手段として扱い、誇示してはいけません。
- Anthropic 自身の努力に関するドキュメントは、最適点を高に置き、最大は考え過ぎに陥る可能性があると警告している
- 26 のコーディングタスクに関するある公開ベンチマークでは、高は低の品質を約 3 倍にした
- 同じベンチマークでは、xhigh は 2 倍以上のコストがかかり、その利益がめったに元を取れないことがわかった
モデルはダイヤルと同じくらい重要です。低い努力の Fable 5 は、xhigh で実行される古いモデルにしばしば勝つため、高い設定よりも優れたモデルに手を伸ばしてください。
この梯子のより高い段と間違えられる 2 つの設定があります。どちらも梯子にはありません。
- 最大は深さです。 1 つのモデル、1 つの問題、より多くの時間。
- ウルトラは幅です。 1 つのタスクが 4 つの並列エージェントに広げられ、その後合成されます。
異なる軸。ウルトラは「最大以上のもの」ではなく、真に分割しないタスクに向けると、4 つのエージェントが 1 つの調査を重複させることになります。
梯子はバージョン間で移植できません。 同じ言葉が、新しいモデルでは古いモデルとは異なる思考量を購入します。
使い慣れたタスクを新しい席に移す場合、信頼している設定の 1 段下から始めてください。出力が要求する場合のみ上昇します。
1 つの罠は、特にスウォームに属します。
サブエージェントは親のモデルと親の努力を継承します。最大努力の指揮官から生成された群れは最大努力の群れであり、1 メッセージでウィンドウを空にします。
それらを独自のフロントマターで固定し、その際にどのハーネスにいるかを把握してください。固定は、それを読み取る生成元と同じくらいしか有効ではないからです。
- Claude 側。 以下のフロントマターが制御です。
- Codex 側。 5.6 は子を親自身のモデルと推論レベルで生成し、熱心に生成します。親のダイヤルが群れのダイヤルです。
Codex 側では、唯一の実際の制御はセッションを開いたときの設定と、AGENTS.md の「要求されない限り生成しない」という行です。どちらかを信頼する前に、どちらを持っているか確認してください:
1name: scout2model: haiku3effort: low # サブエージェントは親を継承する。最大努力の群れは4 # 1 メッセージでウィンドウを空にする。彼らを固定せよ。
ツールごとに設定します: Claude Code と Codex TUI の /effort、codex -e high のようなフラグ、config の 1 行、または API の effort フィールド。
モデルルーティングは誰が考えるかを決定します。努力ルーティングはどれだけ長く考えるかを決定し、2 番目のダイヤルは設定の他の何も変わらずキャッシュが温かいままであるため、回すのがより安価です。ループが分岐する場所に努力を費やしてください。他のすべての場所では、それは税金です。
毎週 1 つの数値を追跡します:
1grep '^route' progress.log | awk -F'\t' \2 '{r++; if($3!="frontier")c++} END{printf "安価層の割合: %.0f%%\n", c/r*100}'
ROUTING.md、両方のハーネスが読み取るポリシー
上記のすべてが、リポジトリルートの 1 つのファイルに凝縮されています。
1# ROUTING.md23ルーティングは 4 つの決定からなり、その順序が重要である:4 1. WHERE: どのハーネスが作業を実行するか5 2. WHEN: どの境界で決定が行われるか6 3. WHO: どのモデルが席に座るか7 4. HOW HARD: そのモデルがどの努力レベルで実行されるか8ほとんどのチームは 3 についてのみ議論する。お金は 2 と 4 にある。910## 1. WHERE: モデルより先にハーネス11ハーネス内で事後訓練されたモデルは、他の場所では分布外となる。12測定された差: 同じ重みで、ネイティブ 20.2% 対 外国 7.7%。1314| 作業 | ハーネス | 理由 |15|---|---|---|16| コードを書く | モデルのネイティブハーネス | ライターは分布外で劣化する |17| コードをレビューする | レビュアーのネイティブハーネス | 弱いレビューはないより悪い |18| 読む、偵察する | どこでも | 読み取りは安価で検証可能 |19| 機械的な変換 | どこでも | チェックが決定論的なら、ハーネスはほとんど重要でない |2021法則: リーダーとレビュアーのレーンは自由に再マッピングする。ライターレーンは、自身の評価セットがそうでないと示すまで、ハーネスネイティブのままとする。そのオーバーライドは測定値でなければならず、好みではない。2223## 2. WHEN: 境界でルーティングし、内部では決して行わない24セッション途中での切り替えはプロンプトキャッシュを破棄する。キャッシュされた入力は新しい入力の 10 分の 1 のコストなので、不要な切り替えはコンテキスト全体を 10 倍の価格で再請求し、何も得られない。2526法的な境界、ルーティング決定が行われてもよい唯一の場所:27 - セッション開始時28 - サブエージェント生成時29 - 群れ内の新しい目標30 - 他の系統へのレビューハンドオフ31 - 障害またはセーフガードによって発動されたフォールバック3233他のすべての場所では違法。ターンごとのルーティングはなし。タスク途中での適応的切り替えはなし。カスケードは正確に 1 回のエスカレーションを得て、新しい境界を開く。3435法則: 境界が開いたときに席を選び、次の境界までそこに留まる。3637## 3. WHO: 決定手順(最初に一致したものが勝ち、結果をログに記録する)3839レイヤー 1、ルール。無料。常に最初に確認する。4041| シグナル | 席 |42|---|---|43| 抽出 / フォーマット / 要約 / 分類 / テスト | Haiku または Luna、努力低 |44| 計画 / 設計 / 移行 / 根本原因 | Fable が計画、Sonnet が実行 |45| 60k トークン以上のコンテキスト | Anthropic 1M ティア(定額) |46| エージェントが書いたコードのレビュー | 他の系統、ネイティブハーネス |47| 目標が独立した部分に分割される | 群れ: Fable が書き、スコアリングする |4849レイヤー 2、スコア。各 1 点:50 - なぜ / デバッグ / 競合 / デッドロック / リファクタリング / セキュリティ / 最適化 を含む51 - 複数のサブシステムに触れる52 - 以前の試行がすでに失敗している53 - 変更が不可逆的、またはユーザー向けである54 0-1 -> 安価層、低努力。2 -> Sonnet、中程度。3+ -> フロンティア、高。5556レイヤー 3、カスケード。安価で実行し、決定論的に検証し、正確に 1 回エスカレーションする。57決して 2 回ではない。2 回目の失敗は仕様の問題であり、より大きなモデルが仕様を修正することはない。5859席とフォールバックは .claude/skills/model-bench/SKILL.md に存在する。ここに価格はない。6061## 4. HOW HARD: 努力ルーティング62努力は 1 レベル下のルーティングである。このファイルで最も安価なダイヤル: 他は何も変わらず、キャッシュは温かいまま。6364| 努力 | 使用場面 |65|---|---|66| 低 | タイポ、名前変更、ソート、抽出、すべてのサブエージェントのデフォルト |67| 中 | 明確な仕様からのルーチンコード、要約、標準的な文章 |68| 高 | 分解、移行、厄介なバグ、すべての指揮官作業(デフォルト) |69| 最大 | 高がすでに解決できなかった問題のみ |70| ウルトラ | この梯子にはない。幅であり深さではない: 4 つのエージェントを並列実行。デフォルトでオフ |7172 1. デフォルトは高。最適点はそこにある; 最大は思考過多に陥る。73 2. より良いモデルは高いダイヤルに勝る。設定よりも席をアップグレードせよ。74 3. サブエージェントは親のモデルと努力を継承する。最大努力の指揮官から生成された群れは最大で実行され、1 メッセージでウィンドウを空にする。すべてのサブエージェントを自身のフロントマターで固定せよ: effort: low。生成元が固定を無視する場合、親のダイヤルが群れのダイヤルとなる。どちらを持っているか確認せよ。75 4. 最大は深さ。ウルトラは幅。サブ問題が真に独立している場合のみウルトラを使用し、決してデフォルトにせず、ハーネスが過剰生成している間は使用しない。76 5. 梯子はバージョン間で移植できない。新しいモデルでは、古いモデルで信頼していた設定の 1 段下から始める。77 6. 高速モードも努力レベルではない。消費していたトークンに対して 2.5 倍のクレジットでレイテンシを購入する。オフ。7879ダイヤルは 4 つの場所に存在する: Claude Code と Codex TUI の /effort、codex -e high、config の model_reasoning_effort、API の effort フィールド。Claude Code はデフォルトで高、Codex はデフォルトで中、ほとんどのアプリは完全に隠しており、それがチームが誤ってすべてを 1 つのレベルで実行する理由である。8081## 5. フォールバック: フロンティアはダウンしていると想定する82フロンティアの可用性は保証されておらず、セーフガードがセッションの 5% 未満で、エラーなしにミッドランで Opus 4.8 にコールを再ルーティングする可能性がある。83 - すべての席には名前付きのフォールバックがある。例外なし。84 - すべてのフォールバックはログに記録される。沈黙の再ルーティングはバグである。選択していないモデルからの出力を読んでいる可能性があるため。85 - 選択しなかったモデルからの出力で決して反復してはならない。8687## 6. これが機能したかどうかを決定する数値88ブレンドコストはトラフィック分割であり、他には何もない。70% が安価層であれば、請求額は約 3 分の 2 削減される。10% では小銭の節約に過ぎない。ルーターの精度はルーターの巧妙さよりもはるかに価値がある。8990BUILD 4 のワンライナーで追跡する。50% 未満では、節約は複利効果を発揮し始めていない。ここで他の何かに触れる前に、分割を修正せよ。9192## 7. このファイルのゲート93法則: このファイルへの変更は、50 から 500 のホールドアウトケースで eval_gate.py がパスすることなく出荷されてはならない。BLOCKED の判定は最終的であり、セッション内で上書きできない。ゲートと変更は同じ作者を持つことはできない。9495## 8. このファイルを削除するタイミング96単一の適切に選択されたモデルが、評価セットでこのスタック全体を打ち負かす場合、ルーターを削除し、シンプルさを維持せよ。2026 年の最も厳格なルーティングベンチマークは、多くのルーター(商用のものを含む)が、最良の単一モデルを選ぶことを確実に打ち負かせないことを発見した。97最初に測定せよ。次にルーティングせよ。喜んで削除せよ。
CHECK 4: router.py がオフラインで実行され、決定、理由、および分割を出力する。あなたのメモには 5 倍のギャップ測定値、またはルーターがまだ正当化されていないことを示す日付付きのメモが含まれている。
BUILD 5: アドバイザー反転
古典的なパターンは、スマートモデルを指揮権に置き、フロンティアトークンをバルク実行に燃やす。それを反転させる。
Anthropic のアドバイザー結果: Opus クラスのアドバイザーを持つ Haiku は、難しいブラウジングベンチマークでスコアを 2 倍以上にし、41.2 対 19.7 単独で、中間層よりもタスクあたりのコストが 85% 低かった。
実行はバルクである。アドバイスはグラムである。
ハーネスは、ドライバーがスタックしたときを決定し、ドライバーは決して決定しない。.claude/skills/stuck-protocol/SKILL.md:
1---2name: stuck-protocol3description: 進行が停滞したときに、fable-expert アドバイザーにエスカレーションする。4 同じエラーが 2 回表示された場合、エラーが続く間に連続する 2 つのステップでファイルが変更されなかった場合、5 2 つの異なる修正試行後にテストが失敗した場合、またはユーザーがエージェントが循環していると言った場合に使用する。6---78# Stuck protocol (アドバイザー反転)910あなたは安価なドライバーであり、それは機能である: 実行はバルクであり、アドバイスはグラムである。11しかし、小さなモデルは過信しやすいので、自分が大丈夫だと判断することはできない。12代わりに決定論的なシグナルを確認する。1314スタックシグナル(いずれか 1 つでプロトコルが発動する):15 1. 連続する 2 つのステップで同じエラー文字列。16 2. エラーが続く間に、連続する 2 つのステップでファイルがゼロ変更。17 3. 2 つの真に異なる修正試行後、同じテストが失敗。1819手順:20 1. このセッションでの相談回数をカウントする。3 回で停止: タスクを BLOCKED とマークし、エラーを添付し、21 人間向けに要約し、次に進む。決して 4 回目の相談はしない。22 2. ブリーフを作成する。それ以外は何も含めない:23 GOAL: 1 行24 ATTEMPT x2: 最後の 2 回の試行、それぞれ 200 文字以内25 ERROR: 正確なエラー、300 文字以内26 3. ブリーフを持って fable-expert を生成する。コードではなくガイダンスを返す。27 4. 次のステップで、自分自身の何かを行う前に、ガイダンスを適用する。28 5. progress.log に 1 行追加する: 相談 #N、何を言ったか、機能したかどうか。2930ハードルール:31 - エキスパートに作業を依頼してはならない。返信に完全な実装が含まれている場合、アイデアを取り入れ、コードは破棄する。32 - ブリーフに自分の推論履歴を詰め込んではならない。エキスパートの価値はクリーンなコンテキストであり、長いブリーフはそれを毒する。33 - ガイダンスが失敗した場合、それは次の相談に向けた 2 回の試行のうちの 1 回としてカウントされる。3 回の失敗した相談は、タスクがこのセッションの給与等級を超えていることを意味し、そう言うことが正しい出力である。
エキスパート席、.claude/agents/fable-expert.md:
1---2name: fable-expert3description: スタックした瞬間のためのフロンティアアドバイザー。stuck-protocol からコンパクトなブリーフを受け取り、4 600 トークン未満のガイダンスを返し、決して自分自身で作業を行わない。5model: claude-fable-5 # 保持ルールが問題になる場合は opus に切り替える6effort: high7tools: Read, Grep, Glob # 読み取りは可能、編集は決してしない8---910あなたはエキスパートコンサルタントであり、請負業者ではない。より安価なモデルが運転しており、壁にぶつかっている。11あなたの価値はグラム単位の判断力と、クリーンなコンテキストである: ドライバーがどのようにここにたどり着いたかについて何も知らない。それがまさにあなたの読みがより鋭い理由である。1213あなたはブリーフを受け取る: GOAL、最後の 2 回の ATTEMPT、そして ERROR。ブリーフが特定のファイルを指定している場合、それらを読んでもよい。何も編集してはならない。1415 1. ブリーフに必要なものがない場合、不足しているものを指定する 1 行で返信する。穴の周りで推測してはならない。16 2. 処方する前に診断する: 実際に何が間違っているかについて 1 〜 2 文。17 3. その後、この形式で返信し、それ以降は何も続けない:18 GUIDANCE:19 1. (最も可能性の高い修正: 何を試すべきか、そしてなぜ機能するはずか)20 2. (1 が失敗した場合のフォールバック)21 3. (真に異なる 3 番目のパスがある場合のみ)22 CONFIDENCE: high | medium | low23 4. 600 トークン未満。10 行を超えるコードブロックはなし。アイデアを与え、実装を与えてはならない。24 返信に完全な解決策が含まれている場合、あなたは役割に失敗したことになる。25 5. タスク自体が誤って構想されている場合、項目 1 でそう述べ、人間に何を伝えるべきかを推奨する。2627オペレーターノート: あなたの組織が Mythos クラスの保持ルールを受け入れられない場合、モデル行を opus に変更する。28役割は同じように機能する; アドバイザーの結果は最初に Opus クラスのアドバイザーで証明された。
そして、Codex セッション用に同じレーンを逆にしたもの、~/.codex/prompts/fable-advice.md:
1claude --model claude-fable-5 -p "あなたはエキスパートアドバイザーです。2 より安価なモデルが運転しており、スタックしています。ブリーフ: <目標、2 回の試行、3 エラー>。返信: GUIDANCE: 最大 3 つの番号付き項目、600 トークン未満。4 作業を行わないでください。"
小さなモデルは過信しやすいため、ハーネスは尋ねる代わりに動作を監視します。
ブリーフは小さく保たれます。なぜなら、エキスパートの価値はクリーンなコンテキストであり、長いブリーフはそれを毒するからです。
各相談は数百トークンのガイダンスを実行します。 それが経済が崩壊する理由です: 実行の数百万は $1 層に乗り、判断は $50 百万でグラム単位で到着します。
Cognition が最初に失敗を発表しました。上限はアドバイザーではなくドライバーによって設定され、パターンはドライバーが 1 世代改善した後にのみ報われました。
未解決の問題は、ドライバーが自分がスタックしていることに気づくことです。そのため、上記のシグナルは行動的であり、ハーネスに存在します。
CHECK 5: advisor_loop.py がそのアサーションをパスする: ドライバーが同じ方法で 2 回失敗し、1 回の相談が発動し、タスクが完了し、相談が上限内に留まる。
BUILD 6: 2 レーンベンチ
何も自分の宿題を採点しないというのは法則であり、このビルドはそれをベンダー間で強制します。
同じ重みが外国のハーネスでは大幅に低下する。 2026 年の 1 つの測定では、ネイティブ 20.2% 対 サードパーティ 7.7% を示しました。
したがって、各レビュアーは自身のホームで実行されます。Claude は Claude Code でレビューします。Sol は Codex CLI を通じてレビューします。
社内の審査員、.claude/agents/fresh-eyes-reviewer.md:
1---2name: fresh-eyes-reviewer3description: クリーンコンテキストのコードレビュワー。エージェントによる変更後に呼び出します。ライターとの履歴は共有せず、差分を読み取り、編集は行いません。4model: haiku # 負荷が大きい差分の場合は opus に切り替え5effort: medium6tools: Read, Grep, Glob, Bash7---89この変更がどのように書かれたのか、あなたは記憶にありません。それがポイントです。作成者の推論を尋ねないでください。要約を信頼しないでください。証拠のみを信じてください。1011 1. git diff HEAD~1(または指定された範囲)を実行し、すべてのハンクを読んでください。12 2. 変更された各ファイルの全文を、ハンクだけでなく完全に読んでください。バグは変更の周辺の変更されていない行に潜んでいます。13 3. README または CLAUDE.md に記載されているテストスイートを実行してください。14 4. エージェントの3つの典型的な失敗を探してください:15 怠惰:部分的な実装、TODO、1つのケースだけの対応16 自己採点:テストの弱体化、アサーションの削除、スイートのスキップ17 範囲逸脱:記載されたタスクの範囲外の変更18 5. 判定結果を正確に次の形式で出力してください:19 VERDICT: PASS または FAIL20 BUGS: 番号付き、それぞれに file:line と 1文の理由21 RISK: この変更が触れる最もリスクの高いものについての1文2223厳格なルール:ファイルを編集してはいけません。作成者のタスクを再実行してはいけません。バグリストが空で VERDICT: FAIL は無効です。テストが実行できない場合は、理由を付けて自動的に FAIL となります。
1---2name: sol-reviewer3description: クロスベンダーレビュワー。最新のコミットを Codex CLI を通じて GPT-5.6 Sol に送信し、Sol のネイティブハーネスで実行。判定結果をそのまま中継します。4model: haiku # パイプラインのみ。レビュワーは Sol です。5effort: low6tools: Bash, Read7---89あなたはパイプラインであり、レビュワーではありません。同一ファミリーのモデルは盲点を共有します。このレーンは、Sol が Claude の盲点を共有しないために存在します。1011 1. CLI を確認してください:codex --version。存在しない場合は、VERDICT: FAIL と理由「codex CLI がインストールされていません」、さらにセットアップパス(または公式プラグイン:/plugin marketplace add openai/codex-plugin-cc, /plugin install, /codex:review)を出力してください。12 2. 高負荷で、Sol 自身のハーネスでレビューを実行してください:1314 codex --profile deep exec "最新のコミット(git show HEAD)を、作成者に会ったことのない敵対的なシニアエンジニアとしてレビューしてください。変更されたすべてのファイルを、ハンクだけでなく完全に読んでください。探すもの:部分的な実装、弱体化または削除されたテスト、タスクの範囲外の変更。最後に正確に 'VERDICT: PASS' または 'VERDICT: FAIL' と、番号付きの所見(それぞれ file:line と 1文の理由)を付けてください。"1516 3. 完全な出力を .review_sol_<short-hash>.md に保存してください。17 4. 上位に中継してください:最初に VERDICT 行、次に所見を VERBATIM で。所見を要約したり、安心させたり、Sol と議論したりしないでください。判定が FAIL の場合、親が何を修正するか決定します。あなたは何も決定しません。1819厳格なルール:ファイルを編集してはいけません。作成者のタスクを再実行してはいけません。自分のレビューを代用してはいけません。codex が実行中にエラーになった場合は、静かに再試行を複数回行うのではなく、stderr を添付して FAIL として報告してください。
1claude -p "実装: $TASK. テストを実行。グリーンになったらコミット。"2review=$(codex exec "HEAD をレビュー ... VERDICT: PASS または FAIL と所見。")3grep -q "VERDICT: PASS" <<< "$review" && exit 04claude -p "別のモデルファミリーのレビュワーが以下の問題を見つけました。5 すべて修正し、テストを再実行し、コミット: $review"
Claude Code 内では、スクリプト全体をスキップできます。
OpenAI は Claude Code 用の公式 Codex プラグインをリリースしており、2026 年 3 月から稼働し、9 週間以内に約 2 万の GitHub スターを獲得しました。これは、クロスベンダーレビューが主流になったことを市場が示しているということです。 一度インストール:
1/plugin marketplace add openai/codex-plugin-cc2/plugin install codex@openai-codex3/codex:setup
Claude セッション内での 3 つの操作:
- /codex:review 標準的なパス用
- adversarial mode(敵対モード)は、設計上の決定を意図的に攻撃します
- background handoff(バックグラウンドハンドオフ)で Codex へ
負荷のかかるものには adversarial を使用してください。端末操作が多い作業(Sol が最も得意とする分野)には handoff を使用してください。
現在、多くのビルダーが BUILD 7 のプロキシを介して Claude Code 内で GPT-5.6 Sol を実行しており、日常業務では Codex よりも Sol を好んでいます。
これはテーゼを実証しています:重みをレンタルし、ハーネスを所有せよ。
問題はネイティブハーネスの法則です。Claude Code 内の Sol は自宅の外で動作するからです。自身の評価セットで確認してください。評価で外部ハーネスが勝ると言うなら、あなたの評価がベンチマークより優先されます。
レビュワーに価値がある 3 つの特性:
- クリーンコンテキスト。 作成者の履歴を一切持たずに到着します。
- 異なる系統。 作成者の盲点を共有しません。
- ネイティブハーネス。 フルパワーで判断します。
軟化した判定は壊れた検証者です。そのため中継はそのまま行われます。3 度目の FAIL は、4 度目の試行ではなく人間にページングされます。
CHECK 6: two_lane.sh を実行するか、最新のコミットに対して /codex:review を実行してください。VERDICT が .review ファイルに保存され、FAIL はライターレーンに戻されます。
BUILD 7: オプションのファンアウト(条件が発生したときにインストール)
スカウトスウォーム。調査やコードベースの考古学に 1 日に 30 分以上費やしている場合にインストールします。3 つを並行して別々のスライスに起動:
1---2name: scout3description: 調査ファンアウト用の安価な並行リーダー。コードベース調査、依存関係監査、ログ考古学、ドキュメント調査のために複数同時に起動します。原則として読み取り専用。読み取りはファンアウトし、書き込みはシングルスレッドのまま。4model: haiku5effort: low # 継承ガード(BUILD 4):最大努力を継承したスウォームは6 # 1 メッセージでウィンドウを空にします7tools: Read, Grep, Glob, Bash8---910あなたは並行して実行される可能性のある複数のリーダーのうちの 1 つです。自分のスライスを調査し、小さく鋭く報告してください。最終メッセージだけが親に返るため、400 語以内に収め、すべての単語が価値を持つようにしてください。1112 1. 自分で割り当てを 1 つのスライスに絞り込んでください(1 つのディレクトリ、1 つのサブシステム、1 つの質問)。そして、何に絞り込んだかを述べてください。13 2. 読み取りのみ:Read, Grep, Glob、および読み取り専用シェル(ls, git log, git show, rg)。編集、インストール、削除は絶対に行わないでください。タスクで書き込みが必要な場合は、報告するだけで、実行しないでください。14 3. まず幅優先、次に最もホットな 2 ~ 3 か所を深掘りしてください。1516報告形式は以下のみ、それ以外は不要:17 FINDINGS: 最大 10 個の箇条書き、それぞれが証拠(file:line、コミットハッシュ、または URL)付きの 1 つの事実18 GAPS: 判断できなかったこととその理由。親がまだ暗い領域を知るため19 HOTSPOT: 最も深掘りする価値のある 1 つのファイルまたは関数、その理由を 1 行2021編集しないでください、実装を提案しないでください、水増ししないでください。300 語の有用な単語を返すスカウトは、3,000 語の混ざった単語を返すスカウトよりも優れています。なぜなら、あなたが発したすべてが親のコンテキストウィンドウに収まり、その分親が支払っているからです。
読み取りはファンアウトします。並行リーダーは効果を倍増させるからです。語数制限があるのは、すべてのレポートが親が支払うコンテキストウィンドウに収まるためです。
書き込みは決してファンアウトしません。 2026 年の等予算調査では、トークン数を一定に保った場合、単一エージェントが推論においてマルチエージェント設定に匹敵することがわかりました。このレーンは読み取り専用です。
一晩バーナー。TASKS.md に 10 以上の小さな検証可能な項目がある場合にインストールします。overnight-burner スキルはファイルをセットアップし、両方の上限を確認し、テストコマンドが実行可能であることを確認してから、ralph.sh を起動します。朝のインターフェース: git log、progress.log、チェックマーク。
計画分割。計画トークンがセッションの請求書の大部分を占める場合にインストールします。Claude Code の 1 つの設定で、計画には Opus クラスのモデル、実行には Sonnet を使用します。計画はグラム単位で最先端で行い、実行はバルクで行います。
トリオベンチ。厄介な変更に 3 つの視点が必要な場合にインストールします。2 つの役割が読み取り、1 つが書き込みを行い、4 番目のペインはトラップです。パイプラインはその下にあります。
混在フリートのためのパイプライン
2 つのオープンソースコンポーネントにより、2 ベンダー構成を任意ベンダー構成に変えます。サードプロバイダーが必要な条件が発生した場合のみインストールしてください。
claude-model-switch(オープンソース、Rust、localhost:4000 で実行)。Claude Code と Anthropic または OpenAI 互換エンドポイント間のローカルプロキシ。
- Claude Code の 3 つの内部階層(haiku、sonnet、opus)をプロバイダーが提供する任意のモデルに再マッピング
- 設定の再読み込みにより、再起動せずにプロバイダーを切り替え
- スラッシュコマンド付きの Claude Code プラグインとして提供
1claude-model-switch init # Claude Code をプロキシに向ける2claude-model-switch add openrouter sk-or-xxx3claude-model-switch add glm \4 --haiku glm-4.5-air --sonnet glm-4.7 --opus glm-55claude-model-switch use glm # セッションごと、タスク中は不可6claude-model-switch orchestrate start --preset trio # プランナー/コーダー/レビュワー
trio プリセットは BUILD 7 のベンチを物理的にしたものです:3 つの tmux ペイン、各役割が異なるプロバイダー、それぞれアドレス可能(orchestrate send coder "implement milestone 1")、プロバイダーが低下した場合のセッション途中の役割再割り当て可能。
CLIProxyAPI(オープンソース)。同じトリックを逆向きに行います。
ChatGPT Codex、Claude Code、Gemini、Grok の OAuth ログインを、OpenAI、Claude、Gemini 互換の API エンドポイントとしてラップします。
翻訳:あなたがすでに支払っているサブスクリプションシートが、[ralph.sh](https://ralph.sh/) や two_lane.sh のようなスクリプトのルーティング可能な API ターゲットになります、別途 API キーは不要です。コミュニティフォークは Factory や Amp に拡張されており、ccs のようなラッパーはマルチアカウント切り替えを追加します。
両方を支配する法則は、BUILD 6 のデータから:再マッピングされたモデルは外部ハーネスで実行される。
リーダーとレビュワーのレーンは自由に再マッピングしてください。それらは安価で検証可能です。
コードを書くレーンは、自身の評価セットがそうでないと証明するまで、ハーネスにネイティブなモデルに保ってください。
CHECK 7: インストールされたすべてのファンアウトには、そのトリガー条件が横に書かれています。これらを推測でインストールすることは、スタックが肥大化する原因です。
BUILD 8: The Factory(完了がデータベース上の事実になる)
これまでのすべては、その瞬間の作業を証明します。ゲート、判定、評価セットはすべて実行中に発動します。
複数のエージェントが複数のセッションにわたってプロジェクトに触れるようになると、実行後も残る証明が必要になります:誰が何を、どの順序で作業したか、そして最後のレビューサイクルがクリアされたかどうか。

このパターンは pi-factory デモ (github.com/xpriment626/pi-factory) から来ています。負荷のかかるアイデアは 1 文です。
スレッドはトレースです。行は証拠です。ゲートは行を読み取ります。
progress.log は日記です。黒板は元帳です。SQLite が元帳である理由は、全員が話をやめた後でもクエリ可能だからです。
factory/factory_gate.py を作成します。これには 4 つのテーブル(tickets、briefs、evidence、verdicts)、各エージェントが作業中に呼び出す record コマンド、および完了ゲートが含まれます。ゲートの失敗条件は作業自体にマッピングされます:
1checks = [2 (tickets == 0, "チケットが記録されていません。"),3 (done != tickets, "すべてのチケットが完了していません。"),4 (first_brief is None, "アーキテクチャブリーフが記録されていません。"),5 (first_brief > first_code, "実装の証拠がブリーフより先にあります。"),6 (code_ev == 0, "実装者のコード証拠が記録されていません。"),7 (build_ok == 0, "ビルドコマンド成功の証拠がありません。"),8 (test_ok == 0, "テストコマンド成功の証拠がありません。"),9 (latest("architect") != "green", "最新のアーキテクト判定がグリーンではありません。"),10 (latest("reviewer") != "green", "最新のレビュワー判定がグリーンではありません。"),11]
そのリストは教義全体をエンコードしています。
- 順序が強制されます。 ブリーフが最初のコード証拠より後にあるのは違反です。これにより、計画より先にビルドするという習慣ではなく、チェック可能な事実になります。
- 両方の審査員席が同じ最新サイクルでグリーンでなければなりません。 古い承認が新しい差分を引き継ぐことはできません。
- 合格テスト行がゼロでの完了は不可能です。 トランスクリプトがどれほど自信満々に聞こえても。
factory/factory.sh を作成します。これは、すでに構築した席を実行順序に配線し、すべてのステップ間で行を記録します:
1G ticket "kanban board" "columns render, drag persists" # プランナーの行2G brief "$BRIEF" # コードの前に3../loop/ralph.sh && G evidence code pass "loop completed" # BUILD 3 が動作4npm test && G evidence test pass "npm test green"5G verdict 1 architect green "layout matches brief" # Claude 席6G verdict 1 reviewer green "tests pass, scope clean" # Sol 席(codex 経由)7python3 factory_gate.py gate factory.db # 行が決定する
新しいものは何も採用されません。
Fable はチケットを切り、ブリーフを書き、読み取り専用です。BUILD 3 のループが実装します。Claude と Sol はそれぞれ自身のハーネスから判定を返します。サイクルは最大 3 回繰り返され、両方がグリーンになるまで続きます。
ファクトリーは、すでに雇用している従業員のための組織図です。
モックアップではなく実際の実行。2 番目のゲート呼び出しが、このビルド全体の論拠です:
1$ factory_gate.py record demo.db ticket "kanban-board" "columns render, drag persists"23$ factory_gate.py gate demo.db4GATE: REFUSED5 - すべてのチケットが完了していません。6 - アーキテクチャブリーフが記録されていません。7 - 実装者のコード証拠が記録されていません。8 - ビルドコマンド成功の証拠がありません。9 - テストコマンド成功の証拠がありません。10 - レビューサイクルが記録されていません。11 exit: 11213... エージェントが作業します。すべてのステップが行を書き込みます ...1415$ factory_gate.py record demo.db brief "Stack: node+sqlite. /tasks CRUD."16$ factory_gate.py record demo.db evidence code pass "src/board.js written"17$ factory_gate.py record demo.db evidence build pass "npm run build exit 0"18$ factory_gate.py record demo.db done "kanban-board"19$ factory_gate.py record demo.db verdict 1 architect green "layout matches brief"20$ factory_gate.py record demo.db verdict 1 reviewer green "scope clean"2122$ factory_gate.py gate demo.db23GATE: REFUSED24 - テストコマンド成功の証拠がありません。25 exit: 12627$ factory_gate.py record demo.db evidence test pass "npm test 33/33"2829$ factory_gate.py gate demo.db30GATE: COMPLETE (1/1 tickets, cycle 1 green x2)31 exit: 0
両方のレビュワーがグリーンと言いました。アーキテクトはレイアウトがブリーフと一致することを確認しました。レビュワーはスコープがクリーンであることを確認しました。
それでもゲートは拒否しました。理由は 1 行:テストコマンド成功の証拠がありません。誰もテストを実行していなかったのです。
判定は意見です。2 つの意見でも事実にはなりません。 1 つの evidence test pass 行が追加されると、同じゲートが COMPLETE を返し、exit 0 で終了します。
モデルは自分の作業を説得力を持って主張しますが、トランスクリプトは主張を捉えるのであって、真実を捉えるのではありません。行は議論できません。
ゲートが拒否するときは、不足している正確な成果物を指定します。これにより、「実行が失敗した」が「合格テスト行を生成する」というタスクに変わります。謎ではなく、タスクです。
インストール条件:1 日あたり複数のライターセッション、数日間にわたるレビューサイクル、または後で何が起こったかを証明する必要がある場合。1 つの夜間ループを持つ単一リポジトリの場合、BUILD 3 で十分であり、これは肥大化です。
CHECK 8: スクリーンショットを再現してください。テスト行以外のすべてを記録し、ゲートは正確に 1 つの理由で拒否する必要があります。行を追加すると COMPLETE を返します。それなしで合格するゲートはトランスクリプトリーダーです。
BUILD 9: The Swarm(Fable が計画し、フリートが実行し、Fable が採点する)
1 人のドライバーと 1 人のアドバイザーで 1 つのタスクをカバーします。4 つの独立した部分に分割できる目標には、4 人のワーカーが必要です。
しかし、フリートが方向性を維持するには、1 つのモデルがすべての目標を計画し、すべての結果を採点することが必要です。これがこのビルドが存在する唯一の理由であり、スウォームが通常それなしで失敗する理由です。
Rung 3 を文字通りに実現します。Fable が目標を書き、フリートがそれを実行し、Fable が各結果を自身のチェックに対して採点し、次のサイクルでは失敗したものだけを再計画します。
そのアボートはサイクル上限です。上限に達したときに未達の目標が残っている場合、それは人間に渡される仕様の問題であり、4 サイクル目を実行する理由ではありません。
swarm/swarm.sh を作成します。3 つの設定が教義を伝えます:
1FLEET=4 # 書き込みは衝突しない:各ワーカーに1つのワークツリー2WORKER_MODEL=claude-sonnet-5 # 純粋な実行には haiku / luna / kimi も可3WORKER_EFFORT=low # 決して指揮者の努力を継承してはいけない4CONDUCTOR=claude-fable-5 # または、保持ルールが問題なら opus-4-8
これらの 3 行は明示的です。なぜならデフォルトはそうではないからです。
継承されたフリートは、指揮者のモデルと指揮者の努力の両方を引き継ぎます。高努力の Fable が 4 つの高努力の Fable を起動して機械的な作業を行うのは、最も安価なことを行う最も高価な方法です。
設定してください。決してデフォルトに任せないでください。
クロスハーネスのファンアウトは合法であり、ROUTING.md の第一法則に対する例外のように見えますが、そうではありません。
- codex exec にシェルアウトする Fable 指揮者は、Sol を Codex 内でネイティブに実行します。それは法則に従っているのであって、曲げているわけではありません。
- 法則を破るのは、Claude 側のサブエージェントが GPT モデル文字列を着用すること、またはその逆です。
ハーネスはワーカーとともに移動し、指揮者とはともに移動しません。
指揮者は目標を書き、コードは決して書きません。各目標には独自のチェックコマンドが含まれているため、完了は事実のままです:
1{"id":"strip-legacy-auth","spec":"routes/ から v1 認証パスを削除","check":"npm test -- tests/auth"}2{"id":"migrate-sessions","spec":"セッションストアを新しいアダプターに移行","check":"npm test -- tests/session"}
次に、ディスパッチ、採点、再計画:
1# ディスパッチ:目標ごとに1つの git ワークツリー、FLEET まで並行2claude --model "$WORKER_MODEL" --effort "$WORKER_EFFORT" -p "この仕様を正確に実行してください。3 範囲を拡大しないでください。テストを実行してください。グリーンになった場合のみコミットしてください。"45# 採点:指揮者は各目標を自身のチェックコマンドに対して採点します。6# ワーカーの自信は証拠ではありません。終了コードが証拠です。7bash -c "$chk" && echo "$id" >> passed.txt || misses=$((misses+1))89# 再計画:次のサイクルは passed.txt を読み取り、失敗したものだけを再計画します
席ごとに:
- Sonnet 5 コーディング実行用
- Haiku または Luna 純粋な機械的作業用
- Kimi のようなオープンウェイトワーカー 作業が反復的で重みが無料の場合
- Sol 端末操作が多い作業の場合
- Opus 4.8 ワーカー席では、サブエージェントが推論する必要がある場合のみ
Fable は、安価なモデルではできない 2 つの作業、つまり目標を書くことと採点するために予約してください。
フリートはコスト戦略であり、決してインテリジェンス戦略ではありません。
マルチエージェント実行は、同等の作業に対して 3 ~ 10 倍のトークンを消費し、2026 年の等予算調査では、トークン数を一定に保った場合、単一エージェントが推論でそれらに匹敵することがわかりました。
スウォームがその価値を発揮するのは、目標が独立しており、ほとんどが機械的な場合のみです。書き込みはワークツリーごとにシングルスレッドのままで、マージは直列に行われ、人間が最後のコミットを行います。
CHECK 9: 3 方向に分割される目標でスウォームを実行してください。壊れた目標は results.tsv で FAIL として返され、サイクル 2 で再計画され、完了とは決して宣言されない必要があります。
BUILD 10: Rung 4(一度合格したものは監視されないままにしない)
これまでのすべては、作成中の作業を検証します。これまでのところ、6 週間後に完成した作業が正しくなくなることに気づくものはありません。一度検証した目標は、タイムスタンプ付きの仮定です。
Rung 4 には 2 つの半分があり、そのアボートは終了と同じくらい重要です:今週どの提案もゲートを通過しなければ、システムは変更されず、それは成功です。
半分の 1、常設目標。完成したすべてのものは、不変条件と述語を持ち、毎日、永遠に再検証されるものに昇格します。完成したものごとに 1 つのファイルを goals/ に作成します:
1predicate: npm test -- tests/auth 2>&1 | tail -1 | grep -q passing2born: 2026-07-133status: satisfied4last-pass: 2026-07-135on-violation: 起こしてください。自動修正はしないでください。
次に、system/verify_goals.py がすべてを実行し、いずれかの不変条件が壊れた場合に exit 1 で終了し、目標、最後に保持された日付、設定したポリシーを指定します:
1held = subprocess.run(["bash","-c",predicate], timeout=60).returncode == 02g["status"] = "satisfied" if held else "VIOLATED"3# タイムアウトは違反であり、合格ではありません:高価な述語は壊れた述語です
述語ルールは意図的に厳格です:シェルコマンド、exit 0 は不変条件が保持されていることを意味し、安価で読み取り専用です。
形容詞は禁止です。シェルでチェックできないものは、モデルでもチェックできません。
非コード目標も同様に機能します。test -s reports/$(date +%Y-%m)-review.md は、月次レポートの適切な常設目標です。
半分の 2、堆肥化。週に 1 回、システムがすでに生成した排気を読み取ります:BLOCKED タスク、失敗したゲート実行、拒否されたファクトリーゲート、リバートされた PR、違反した目標。
次に、最大 3 つの変更を提案します。憲法の新しい法則。同じ方法で失敗し続けるスキルの修正。または、不足していた常設目標。
提案のみ。あなたが署名します。
1claude --model claude-fable-5 --effort high --allowedTools "Read,Grep,Glob" \2 -p "今週の排気を読み取ってください:progress.log の BLOCKED 行、GATE REFUSED3 エントリ、VIOLATED 目標、マージされずにクローズされた PR。最大 3 つの提案を抽出してください:4 新しい法則(インシデントを引用)、スキル修正(同じ失敗の繰り返し)、または5 不足していた常設目標。提案のみ、何も編集しないでください。クリーンな週は有効な回答です、6 そう言って停止してください。"
このラングは、評価と審査員がシステムが改善したと言ったときにのみ閉じます。つまり、システムは改善するために自身の失敗の記憶を必要とします。
堆肥化実行は、スクリプトを制度に変えるものです。
常設目標は、完了を安全にするものです。センチネルが検出し、通常のパイプラインが修正し、何も静かに腐敗することはありません。
CHECK 10: verify_goals.py のデモで、壊れた不変条件をその最終合格日とともに指定し、健全なものはそのままにしておく必要があります。次に、最後に完了したものに対して 1 つの実際の常設目標を書いてください。
BUILD 11: Rung 5(あなたの席、そしてそれが決して空にならない理由)
Rung 5 にはあなたの名前が付いています。感傷的な理由ではなく、機械的な理由です。
ループは停止条件に達しても、間違っている可能性があります。 テストは合格し、ゲートはグリーンになり、両方のレビュワーが署名し、最後のコミットが依然として間違いである可能性があります。
この下のすべてのビルドは、そのリスクを減らすために存在します。どれもそれを完全に排除するものではありません。
あなたの常任の義務、すべて安価:
- コーヒーを飲みながらキューを読む:BLOCKED タスク、GATE REFUSED 行、VIOLATED 目標、安価層のシェア。10 分。
- マージ前の最後のコミットを確認する。すべての差分ではなく、最後のもの、システムが最も自信を持っていたものを。
- 3 つの堆肥化提案に署名するか拒否する。それが憲法に法則が入る唯一の方法です。
3 つのプレイは、オンデマンドではなく定期的に実行されます。なぜなら、それらは実際に費用がかかり、差分ではなく方向性で報われるからです。
プレイ 1、プロジェクトフィードバックループ、毎月。
Fable を、すでに出荷したものに向けて、読み取り専用で、詳細な改善計画を書かせます。その後、その計画の実行を Opus 4.8 または Sol に任せます。
高価なモデルは、複利効果のある部分、つまり何を変更するかについての判断を行い、決してそうでない部分、つまりタイピングは行いません。
1claude --model claude-fable-5 --effort high --allowedTools "Read,Grep,Glob" \2 -p "このプロジェクトをエンドツーエンドでレビューしてください。レバレッジでランク付けされた改善計画を書いてください:3 何が脆弱か、何が過剰に構築されているか、何が欠けているか、何を削除すべきか。コードは書かないでください。4 受け入れ基準付きのタスクを出力してください。" \5 > plans/$(date +%F)-improvement.md
Play two, the behavior analysis, monthly.
両方のハーネスでのセッションとプロジェクト履歴をフィードし、どのように構築し、どこで行き詰まるかをマッピングするよう依頼します。
これはシステム内で唯一、あなた自身を対象としたレポートです。通常、最も変化するレポートです。
Play three, the second-brain audit, quarterly. ノート、ドキュメント、バックログを指し示し、あなた自身の思考が次に何を構築する価値があり、何を削除する価値があるかを尋ねます。出力を提案として、まさに堆肥のように扱います。
以下の段階は実行を最適化しますが、実行は今や安価な部分です。方向性こそが希少なインプットであり、方向性こそがフロンティアモデルに支払う価値があるものです。判断をグラム単位で購入し、実行をトン単位で購入し、最後の署名は自分で保持します。
CHECK 11: 自分のリポジトリで play one を実行してください。計画が、すでに脆弱だと認識していたもの以外を挙げていない場合、コンテキストファイルが薄すぎるということです。これは BUILD 1 の問題です。
BUILD 12: Ops
エージェントはチャット呼び出しの 10 ~ 100 倍のトークンを消費し、インプットが約 100 対 1 で支配的です。
BUILD 0 の 4 つのレバー(分割、キャッシュ、バッチ、圧縮)を積み重ねると、チームは最適化前のベースラインから 70 ~ 90 パーセントの削減を報告しています。
参考までに: $13 per developer per active day が Claude Code のエンタープライズ平均であり、90 パーセントのユーザーは $30 未満に留まっています。
新しいサブシステムではなく、1 つの規律: タスククラスは、20 回のログ記録された実行で 95 パーセントの合格率に達した後にのみ自動マージでき、90 パーセントを下回ると、警告とともに自動マージ権限が取り消されます。
1awk -F'\t' '$2=="fix-lint"{r++; if($3=="pass")p++}2 END{printf "%d runs, %.0f%%\n", r, (r?p/r*100:0)}' progress.log
週間支出。これは ralph.sh が既にログ記録している 1 ティックあたりのコストから算出されます:
1grep '^cost' progress.log | awk -F'\t' \2 -v d="$(date -d '7 days ago' +%F)" \3 '$2>=d{s+=$3} END{printf "week: $%.2f\n", s}'
cron を設定する前に代謝率を計算してください。1 日あたりのコストは、ティック数 × 平均ティックコストです。
静かな「何もしない」ティックを処理するシートが、請求額を決定します。 安価なティアではセント単位、フロンティアモデルで高負荷の場合、同一の「何もすることはありません」という回答に対してドル単位になります。
制限内で実行する
これらのモデルはトークンを高速に消費します。そして、どのように実行するかによって、壁にぶつかるまでに 1 日の作業のうちどれだけを完了できるかが決まります。
まず、どの壁かを知ってください。
- API キーの場合、 壁は請求額です。progress.log が既に監視しています。
- サブスクリプションシートの場合、 壁は 5 時間のウィンドウと週間のウィンドウを合わせて判断されます。どちらも上記のログには一切表示されません。
実際に使用しているメーターを監視してください: Codex 設定の使用状況パネル、Claude 側の /usage、または画面の隅に配置した ccusage や codexbar のようなモニターです。
一度も読んだことのない制限は、時計に残り 4 時間、実行するものが何もない状態で、その制限にぶつかることで初めて発見するものです。
6 つのレバーを、最も安価なものから順に示します。ほとんどは、トークンが消費される段階 0 ~ 2 で作用します:
- CLAUDE.md と AGENTS.md を必要最小限に絞り込んでください。 有効にしているすべてのスキルとツールに加えて、すべてのシングルプロンプトがそれらを読み取ります。使用していないものはオフにしてください。未使用の MCP サーバーは、すべてのメッセージに課される税金です。
- 最上位の能力が必要ない場合は、effort を下げてください。 デフォルトは medium または high にしてください。max はそれを必要とする問題のために取っておきます。そして、その設定をしている間は fast モードがオフになっていることを確認してください。fast モードは選択した effort を乗算するためです。
- モデルに明確な停止ポイントを与えてください。 これらのモデルは設計上、長時間実行されます。計画を完了してから実行前にチェックインさせるようにしてください。これが plan モードの本来の役割です。
- サブエージェントは低い effort に保ってください。 サブエージェントは親のモデルとそのダイヤルの両方を継承します。max 設定の群れは、1 メッセージでウィンドウを空にします。簡単な修正方法は、両方の憲法に「要求がない限り spawn しない」というルールを追加することです。
- 高価なモデルを大量処理から遠ざけてください。 Fable が低トークンの指揮官として上部に座るか、アドバイザーとして待機するかにかかわらず、決定ポイントでのみその価値を発揮し、決して 1000 行目をタイプしている間ではありません。
- 1 メッセージのコストを読み、その数値に対して上記 5 つのレバーを調整してください。 これが、他の 5 つのうちどれが問題かを教えてくれる唯一のレバーです。
これらのレバーを組み合わせることで、制限に達する前に最高のモデルをどれだけ長く実行できるかが決まります。
第 2 週が始まるときの cron:
1# task loop: the daily tick, both caps set20 7 * * 1-5 cd /path/to/repo/loop && BUDGET_USD=5 ./ralph.sh >> ../progress.log 2>&134# system loop: nothing that passed once goes unwatched530 7 * * * cd /path/to/repo && python3 system/verify_goals.py goals/ >> progress.log 2>&167# system loop: failures become laws, once a week, proposals only80 9 * * 1 cd /path/to/repo && codex --profile deep exec \9 "$(cat ~/.codex/prompts/compost.md)" >> proposals/$(date +\%F).md 2>&1
Runbook(運用手順書)。各アラームとその対処法:

30 日間のスケジュール。卒業段階を飛ばさないでください。それぞれが次の段階を解放します。

コマンドデッキ
ここにあるすべてのループは、キーストロークから到達可能です。スラッシュコマンドは、Codex 側では ~/.codex/prompts/ に配置され、ファイル名がコマンド名になります。Claude 側では .claude/skills/ に配置されます。CLI クリップは、cron や CI が実行するヘッドレスバージョンです。
Codex スラッシュコマンド

/plan-stop と /effort は最も早く元が取れます。 どちらも数百トークンを消費して、数十万トークンの消費を防ぎます。
これらのモデルは長時間実行されるため、必要なチェックポイントは支出の前にあります。/plan-stop は、計画、完了条件コマンド、影響範囲、コスト、そして人間に尋ねるであろう 1 つの質問を返します。その後停止します。
両方のファイルを ~/.codex/prompts/ に配置します。ここでファイル名がコマンド名になります。
effort.md は /effort になります。これはルーティングダイヤルを明示化したものです:
1# /effort - 消費する前に effort レベルを選択する23まだタスクに回答しないでください。まずルーティングしてください。45スコアリングしてください。各項目 1 点:6 - why、debug、race、deadlock、refactor、security concern、optimize のいずれかを含む7 - 複数のサブシステムに触れる8 - 以前の試行が既に失敗している9 - 変更が不可逆的である、またはユーザーの前に展開される1011次にマッピング:1213| スコア | Effort | シート |14|---|---|---|15| 0-1 | low | codex -e low、またはプロファイル fast (Luna)。フロンティアシートは絶対に使用しない。 |16| 2 | medium | Terra を medium で使用するのが標準シート。 |17| 3+ | high | 実際の作業のデフォルトであり、スイートスポットがここにある。 |1819high が既に試行され、失敗した場合のみ: max を推奨し、追加の思考によって何が得られるかを明確に述べてください。あなたが反論しているベースレートは、コストが約 2 倍になるのに対し、その利益が通常は元を取れないというものです。2021アップグレードを推奨する前に、2 つの注意点:22 1. 低い effort のより良いモデルは、通常、max の弱いモデルよりも優れています。ダイヤルを変える前にシートを変更してください。23 2. このタスクがサブエージェントを spawn する場合、それらの effort を明示的に指定してください (特に証明がない限り low)。サブエージェントは親を継承し、max 設定の艦隊は 1 メッセージでコンテキストウィンドウを空にします。2425正確に出力:26 EFFORT: low | medium | high | max27 SEAT: <model>28 WHY: <1 行、スコアリングしたポイントを挙げる>29 SUBAGENTS: <固定する effort、または none>30その後停止してください。人間はあなたが指定したレベルでタスクを実行します。
実際の回答は次のようになります。これは数十万トークンを節約するために数百トークンを消費します:
1EFFORT: high2SEAT: gpt-5.6-sol3WHY: contains "why", touches auth and sessions, prior attempt failed4SUBAGENTS: low
plan-stop.md は /plan-stop になります。支出前のチェックポイントです:
1# /plan-stop - 作業を計画し、その後停止する23これらのモデルは長時間実行されます。計画が正しい場合はそれが利点であり、計画が正しくない場合は間違いを犯すための高価な方法です。このコマンドは、支出前のチェックポイントを購入します。45タスクを計画してください。1 つのファイルも編集しないでください。ビルドを実行しないでください。開始しないでください。67以下の項目を作成:8 GOAL: <1 行>9 ASSUMPTIONS: <当然のことと見なしていること; これらが間違っている場合、計画も間違っている>10 STEPS: <番号付き、各ステップが 1 コミット分の作業>11 DONE_WHEN: <各ステップが完了したことを証明する正確なシェルコマンド>12 BLAST RADIUS: <触れるファイルとシステム; auth、payments、migrations、prod config を明示的に挙げる>13 COST: <おおよそのトークン数またはドル数、および各ステップを実行するシート>14 UNKNOWNS: <ちょうど 1 つだけ質問できるとしたら人間に尋ねること>1516その後停止し、待機してください。1718計画中のルール:19 - 曖昧な点は UNKNOWNS に含めてください。推測して先に進むことで解決しないでください。実行中に生き残った推測は、質問の 100 倍のコストがかかります。20 - 計画に資格情報、エンドポイント、またはこのリポジトリに文書化されていない規約が必要な場合、停止してその旨を述べてください。絶対に invent しないでください。21 - いずれかの DONE_WHEN がシェルコマンドでない場合、そのステップをシェルコマンドになるまで書き直してください。シェルがチェックできないなら、レビュアーもチェックできません。22 - 影響範囲が AGENTS.md の never-list に触れる場合、その旨を先頭に述べ、人間へのキューイングを推奨してください。2324あなたはここでは差分ではなく、計画に対して報酬を得ています。本当の未知数を含む短く正直な計画は、間違ったことを静かに仮定した自信に満ちた計画よりも優れています。
fable-advice.md と review-hostile.md は、/fable-advice と /review-hostile になります。どちらも、既に作成したファイルの Codex 側のミラーです: BUILD 5 のアドバイザーブリーフと BUILD 6 の敵対的レビューア契約。同じルール、同じ制限で、ベンダーラインを越えて反対方向を指しています。
compost.md は /compost になります。段階 4 の週次制度構築者です:
1# /compost - 今週の失敗を来週の法則に変える23今週の排他的出力をすべて読み、それ以外は読みません:4 - progress.log の BLOCKED 行 (3 回のアドバイザー相談に打ち勝ったタスク)5 - GATE: REFUSED エントリ (完了を証明できなかった実行)6 - VIOLATED standing goals (完了したはずのものが成り立たなくなった)7 - circuit-breaker と budget の終了 (コード 2 と 3)8 - ループが開封し、マージされずに閉じられた PR (人間が黙って同意しなかった)9 - 合格率が 90 パーセントを下回ったタスククラス1011最大 3 つの提案を抽出してください。3 つはハードリミットであり、目標ではありません。クリーンな週は有効な所見であり、そう言うことは作業をでっち上げるよりも有用です。1213各提案は、以下のいずれか 1 つです:14 1. CLAUDE.md または AGENTS.md の新しい LAW。防止できたであろうインシデントを引用してください。1 件のインシデントしかない法則は偶然です。2 件目を待ってください。15 2. 同じ障害が同じ場所で繰り返される場合の SKILL FIX。スキル、パターン、およびそれを壊す最小の編集を挙げてください。16 3. 何かが静かに腐敗した場合に欠落していた STANDING GOAL。述語をシェルコマンドとして記述してください。そうでなければ提案しないでください。1718出力:19 WEEK: <日付>20 EXHAUST: <カウント: blocked, refused, violated, reverted>21 PROPOSAL n: <law | skill fix | standing goal>22 EVIDENCE: <インシデント、引用>23 CHANGE: <追加する正確なテキストまたは述語>24 COST OF NOT DOING IT: <1 行>25 VERDICT: <1 つだけできるとしたら、最初に何をするか>2627ハードルール:28 - 提案のみ行ってください。CLAUDE.md、AGENTS.md、任意のスキル、または任意のゴールファイルを編集しないでください。人間が署名するか、または実行されません。29 - ゲートを緩和したり、予算を引き上げたり、never を緩和したりする法則を提案しないでください。それらはシステムがより快適に失敗することを許可するよう求めているものです。30 - 排他的出力が空の場合: 「clean week」と述べて停止してください。実行を正当化するために作業を探しに行かないでください。
CLI クリップ
これらをスクラッチファイルに保存してください。これらは、端末から到達可能なシステム全体です:
1# the daily tick, capped in both dimensions2BUDGET_USD=5 MAX_ITERS=20 ./loop/ralph.sh34# plan first, spend later (the single highest-leverage habit here)5codex -e high exec "$(cat ~/.codex/prompts/plan-stop.md)67TASK: migrate the session store off the legacy adapter"89# cross-vendor review of the last commit, in Sol's native harness10codex --profile deep exec "$(cat ~/.codex/prompts/review-hostile.md)"1112# the mirrored lane: Codex stuck, Claude advises13claude --model claude-fable-5 --effort high -p "$(cat ~/.codex/prompts/fable-advice.md)"1415# the goal loop: Fable plans, the fleet runs, Fable scores16CYCLES=3 FLEET=4 WORKER_EFFORT=low ./swarm/swarm.sh "split the auth migration"1718# the system loop: nothing that passed once goes unwatched19python3 system/verify_goals.py goals/ # exit 1 names what rotted20python3 gate/eval_gate.py eval/cases.jsonl # exit 1 blocks the routing change2122# rung 3, the factory: rows decide, not transcripts23./factory/factory.sh "build the kanban and notes app per PRD.md"24python3 factory/factory_gate.py gate factory.db2526# the weekly institution-building run27codex --profile deep exec "$(cat ~/.codex/prompts/compost.md)"2829# the one number that says whether any of this worked30grep '^route' progress.log | awk -F'\t' \31 '{n++; if($3!="frontier") c++} END{printf "cheap share: %.0f%%\n", c/n*100}'
完全なポリシーは、BUILD 4 の ROUTING.md にあり、両方のハーネスが読み取ります。
ルール (これを印刷してください)
- ヒントではなく法則: 数値、never、またはそれをチェックするコマンド。
- モデルはレンタルです。ループはあなたのものです。あなたは段階 5 に生きています。
- 中止機能のないループは請求書です。すべてのループに 2 つの上限: 反復回数とドル。
- エビデンスは上に流れ、制御は下に流れます。いかなる段階も、その下からの報告に基づいて閉じることはありません。
- ループは停止しても間違っている可能性があります。マージする前の最後のコミットをチェックしてください。
- 境界でルーティングしてください。モデルより先に effort。キャッシュは切り替えに反対します。
- デフォルトは high。max は深さ、ultra は幅、fast モードは 2.5 倍の税金、サブエージェントは親のシートとダイヤルの両方を継承します。
- ルーターは、あなたの評価で最高の単一モデルを打ち負かすまで有罪です。
- 節約はトラフィック分割です。レートカードではなく、cheap share を監視してください。
- 実行はバルク、アドバイスはグラムです。相談は 3 回までに制限してください。
- 誰も自分の宿題を採点しません。新しいコンテキスト、他の系統、ネイティブハーネス。
- スレッドはトレースです。行はエビデンスです。ゲートは行を読み取ります。
- テストを通すためにテストを編集しないでください。BLOCKED ゲートを越えてマージしないでください。
- 一度だけ検証する目標は、タイムスタンプ付きの仮定です。
- 一度に 1 つの卒業。毎月、何かを削除してください。
結びに
今から 30 日後、チェックを実行した場合:
- ループが、決定論的ゲートの背後で、退屈な作業を無人で出荷する
- 安価なドライバーが、行き詰まったときのみフロンティアエキスパートに電話する
- 意味のあるすべての差分が、それを書かなかったモデルによって判断される
- progress.log の 1 つの数値が、経済性が複利で成長しているかどうかを示す
モデルは決して難しい部分ではありませんでした。あなたが見ていないときでも正直さを保つシステムを構築することが難しい部分であり、それが段階 5 にまだあなたの名前が刻まれている理由です。
今夜、それを証明する 20 分から始めてください。BUILD 2 の verify.sh。BUILD 3 の手動実行 1 回。最後のコミットに対する別の系統からの 1 回のレビュー。
ライターとコンテキストを共有しないレビュアーが、完了したと思っていた作業に実際のバグを発見した最初の瞬間、残りの部分について説得される必要はなくなります。
今夜ゲートを構築してください。最初の実行で何を捕捉したか返信してください。
免責事項
著者の研究ノートと検証済み情報源に基づき、Claude による草稿作成と事実確認の支援を受けて執筆されました。すべての価格とモデルの動作は、公開週の公式価格およびドキュメントページと照合して確認されています。これらは変更されるため、予算編成の前に確認してください。
この記事は、前述の段落で述べた著者のノートに基づき、Claude Opus 4.7 を使用して編集されました。
その他の修正を追加したい場合は、コメント欄に追加してください。





