Claude Codeのモデル選択で消耗するな——Jev Model Routerの全貌と、Haikuで組む「自作プロンプトルーティング・スキル」の設計解剖
毎回「ここはSonnetか、Haikuか、Effortをどうするか」と人間が悩む思考停止をやめる。20万円以上のコスト削減を叩き出したModの内部設計と、Anthropic公式Triageパターン・Bedrockインテリジェントルーティングから導く自作スキルの完全解剖。
人間が「モデル選び」に悩む時代の終わり
Claude Codeを本格的に開発フローへ組み込んでいるエンジニアほど、ある奇妙な疲弊を経験しているはずです。
「このリクエストはちょっとした型定義の確認だから、安いモデルで済ませたい」
「でも、次の指示は全体アーキテクチャの変更だから、一番強いSonnetかOpusじゃないと事故る」
「推論の深さ(Effort)はLowにするべきか?それともHighでじっくり考えさせるべきか?」
「今のタスクはメインの会話を汚さず、サブエージェントに投げるべきか?」
コーディングを速くするためにAIを導入したはずなのに、プロンプトを入力する直前に毎回「どのモデルのどのモードで叩くか」を人間が算段している。これこそが、現在の生成AI開発における最大の認知リソースの浪費です。
この摩擦を一撃で解消するアプローチとして海外コミュニティ(Dani Avila氏ら)で急速に注目を集めているのが、「Jev Model Router」を組み込んだClaude Codeの自律振り分けです。導入したチームからは「月間で20万円以上のAPIコストが自然と消え去った」という報告が相次いでいます。
Jev Model Routerは何を自動化しているのか
Jevは単なるチャットボットではありません。入力された状態と指示を型安全に検証し、最適なルーティング結果やスコアを返す特化型の「ディシジョン・エンジン(判定レイヤー)」です。
Claude CodeにこのModを組み込むと、開発者が投げたリクエストごとにJevが事前介入し、以下の3つの要素を瞬時に自律決定します。
1. どのメインモデルを使うか
リクエストが単純な構文チェックや設定ファイルの閲覧であれば軽量・高速なモデルを、複数ファイルにまたがるリファクタや複雑なロジック設計であればフラッグシップモデルを動的にアサインします。
2. どのサブエージェントモデルに任せるか
巨大なリポジトリ全体のgrep探索、ログ解析、テストスイートの実行といった「コンテキストを汚しやすく、かつ高価な推論が不要な作業」を見極め、メインセッションとは切り離された軽量サブエージェントへタスクを自動オフロードします。
3. 推論深度(Effort / Thinking Budget)の最適化
思考モデル(Thinking Model)の予算を無駄に全開にするのではなく、回答の複雑度予測に基づいて「Low」「Medium」「High」をリクエスト単位で割り当てます。
接続プロバイダとしては、型安全なAIオーケストレーションを提供する@typesafeai APIや、企業レベルのキャッシングとフェイルオーバーを担う@vercel AI Gateway経由での利用がサポートされています。
【最重要】なぜメインモデルの切り替えは「セッション開始時」なのか?
Jev Model Routerの設計において、現場のAIエンジニアが最も感銘を受けるポイントがあります。それは「メインモデルの切り替えをセッション開始時を中心に行う」という厳格な制約です。
一見すると「毎回のリクエストごとにメインモデルを一番安いモデルと高いモデルで行き来させた方が得なのでは?」と思いがちです。しかし、それをやると現行のLLMアーキテクチャでは逆に大赤字になります。
しかし、セッションの途中でモデルを別モデルへ切り替えると、プレフィックスKVキャッシュは完全に無効化(Cache Miss)されます。その瞬間に、これまで蓄積された巨大なコンテキスト全体が通常料金で全量再計算され、コストとレイテンシが爆発するのです。
この落とし穴を回避するため、Jevは「メインモデルはセッション開始時にタスク全体の重さを見極めて固定し、途中で発生する単発の調査・テストは独立したサブエージェントへ振る」という2段構えのキャッシュ保護構造を採用しています。
「Haikuで自作できるのか?」——Anthropic公式動向とスキルの世界
ここで鋭いエンジニアなら当然の疑問を抱くはずです。
「外部のルーティングサービスを導入しなくても、超高速・超格安なClaude 3.5 Haikuを使って、Claude Codeの『スキル』や『サブエージェント』として自前でプロンプトルーティングを組めるのではないか?」
結論から言えば、完全に可能です。それどころか、Anthropic公式自身がその設計を強く推奨しています。
1. Anthropic公式論文『Building Effective Agents』での位置づけ
Anthropicの研究チーム(Erik Schluntz氏、Barry Zhang氏)が公開したエージェント設計の規範ドキュメントにおいて、エージェントワークフローの最重要構成要素の筆頭に挙げられているのが「Routing(ルーティング)」パターンです。公式に「すべてのクエリを巨大モデルに流す必要はない。簡単な分類や下流へのタスク分離には小型高速モデル(Haiku)をトリアージ役として配置し、複雑な推論が必要な枝のみをSonnetへ送る」二層アーキテクチャが推奨されています。
2. Anthropic Cookbookにおける公式実装
公式Cookbook(anthropics/anthropic-cookbook)には、Haikuを用いてタスク難易度スコア(1〜5)や編集規模をXMLタグ・JSONで瞬時に判定させるPrompt Routing / Classificationパターンのコードが公開されています。判定所要時間はわずか50〜100ミリ秒、判定費用はほぼゼロです。
3. Amazon Bedrockの「Intelligent Prompt Routing」
AWSとAnthropicが提供するフルマネージド機能。プロンプト複雑度を動的判定して自動でClaude 3.5 HaikuとClaude 3.5 Sonnetを振り分け、応答精度を維持したまま最大30%〜40%のコスト削減を実証しています。
実践:Claude Codeで組む「Haikuプロンプトルーター・スキル」の設計
自前でClaude Code環境にこのルーティング思想を組み込みたい場合、Claude Codeのカスタムエージェント設定(.claude/agents/)やカスタムスキル(.claude/skills/)を使って、外部ツールなしで構築できます。
ステップ1:3段階のタスク難易度(Tiers)を定義する
Haikuに判定させる基準はシンプルであるほど高速かつ正確に機能します。以下の3大階層(Tiers)で分類するのが最も実戦的です。
挙動:メインモデルを動かさず、独立した軽量エージェントへオフロードしてメインの会話履歴(KVキャッシュ)を1トークンも消費させない。
挙動:メインセッションのSonnet 3.5をそのまま継続して実行。
挙動:思考バジェット(Thinking Effort)を最大化して実行。
ステップ2:トリアージ役エージェントの定義ファイル
プロジェクト直下の .claude/agents/triage-router.json に、高速判定に特化したHaikuエージェントを配置します。スマホでも縮小されずに読めるよう、大きなフォントサイズ(16px)と整形インデントで記述しています。
{
"name": "triage-router",
"description": "リクエストの難易度を50msで判定し、モデルとEffortを振り分ける高速分類器",
"model": "claude-3-5-haiku-20241022",
"temperature": 0,
"system_prompt": "あなたはコードタスクの難易度判定エキスパートです。
ユーザーからの指示内容を分析し、必ず以下のJSONスキーマのみを出力してください。
{
"task_tier": "light" | "standard" | "deep",
"target_worker": "haiku_subagent" | "main_session" | "opus_specialist",
"effort_level": "low" | "medium" | "high",
"reason": "判定理由を20文字以内で簡潔に記述"
}"
}
ステップ3:SKILL.md 形式でスキル化する場合
Claude CodeのSkills機能(.claude/skills/haiku-router/SKILL.md)として配置する場合の定義仕様です。自然言語のルールとして記述できるため、チーム内での共有や保守が極めて容易になります。
---
name: haiku-router
description: リクエストの複雑度を事前判定し、最適なサブエージェントと推論深度を決定する
---
# Haiku Routing Rules
ユーザーからタスクを受け取った際、作業を開始する前に以下の基準で実行系を選択する:
1. **Light(Haiku サブエージェントへ委譲)**:
- 変更ファイルが1つ以下、またはgrep等の調査タスク
- テストスイートの実行確認
- メインの会話履歴(KVキャッシュ)を消費せず独立して実行する
2. **Standard(メインセッションでそのまま実行)**:
- 2〜4ファイルの機能改修やコンポーネント作成
- 通常のSonnet 3.5推論を適用(Effort: Medium)
3. **Deep(推論深度を最大化)**:
- アーキテクチャの設計判断、複雑な状態遷移のデバッグ
- EffortをHighに設定して実行
ステップ4:セッションキャッシュを汚さないディスパッチルール
判定結果が task_tier: 'light' であれば、メインセッションでSonnetを動かすのではなく、Claude Codeのサブエージェント呼び出し機能を使ってHaikuにその場で処理させます。例えば「この関数のユニットテストだけ書いて実行して結果を報告して」という指示であれば、メインの会話履歴を一切汚さず、Haikuサブエージェントが裏でファイル作成・テスト実行・結果集約を行い、最終サマリーだけをメインセッションに返します。これによってメインモデルの高価なコンテキストトークン消費を完全にゼロに抑えられます。
3大ルーティング方式の徹底比較
| 方式 | 主なメリット | キャッシュ保護 | 導入難易度 |
|---|---|---|---|
| Jev Model Router | Claude Code直接統合。Effortやサブエージェント選定まで全自動。 | 極めて高い | 1コマンド(Mod) |
| 自作Haikuスキル | 追加課金ゼロ。自社の開発ルールや社内基準を自由に定義可能。 | 設計次第(完全分離) | 中程度(設定のみ) |
| Bedrock Routing | AWSマネージド。単一エンドポイントで全自動振り分け。 | AWS側が最適化 | 低〜中(AWS設定) |
Jev Model Routerの導入コマンド
Jev Model Routerを試したい場合、claude-code-templates のMod機能を使えば、1コマンドでローカル環境へ導入できます。
# Claude Codeの関数フック(function hooks)を有効化した上でModを導入
npx claude-code-templates@latest --mod productivity/jev-model-router
CLAUDE_CODE_ENABLE_FUNCTION_HOOKS=1 が設定されていることを確認してください。バックエンドには @typesafeai または @vercel AI Gateway のAPIキーを設定します。
結論:これからの差別化は「モデル」ではなく「ルーティング」にある
最先端のLLMは次々と登場しますが、すべてのタスクに最強モデルをフルパワーでぶつけるのは、近所のコンビニに大型ダンプカーで買い物に行くようなものです。
軽い処理は超高速なHaikuに数ミリ秒でさばかせ、重厚な設計タスクにだけSonnetやOpusの推論パワーを集中させる。そしてその判断を人間がやるのではなく、エージェント自身がプロンプトキャッシュを傷つけないように自律調整する。
このルーティングの洗練度こそが、今後のAI駆動型開発において「開発スピード」と「運用コスト」を両立させる最大の分水嶺になります。Jev Model Routerを導入するにせよ、自前のHaikuスキルを組むにせよ、まずは手元のClaude Codeで「モデル選びの手間」を捨て去る実験を始めてみてください。