Spotify Portal AiKA モードが安価なモデルの委任で Claude Code のトークン使用量を 90% 削減

重要なポイント

Spotify の Portal AiKA モードにより、Claude Code は大規模なファイルの読み込みやボイラープレートの生成を安価なモデル(Gemini 2.5 Flash)に委任できるようになり、同じワークフローを維持しつつ Claude のトークン使用量を約 90 % 削減しました。


AI支援開発におけるトークンコストの重要性

  • 入力トークン(ソースファイルの読み込み)は出力トークンよりもはるかに頻繁に発生するため、AIコーディングエージェントのコストの大部分を占めます。
  • Gartner は、2028年までにAIコーディングのトークン支出が平均的な開発者給与を上回ると予測しており、多くのチームでは1人あたり月額200~500ドル、一部では2,000ドル以上を支出しているとされています。
  • 機能を損なわずにトークン消費を削減することは、したがって重要なコスト削減策です。

核心的なアイデア:AiKA モードによるモデルルーティング

  • AiKA モード は、一時的なランタイム(AWS Lambda に類似)上で実行される宣言型エージェントであり、Portal CLI や API から呼び出せます。
  • モードは以下の要素をバンドルします:
    • システムプロンプト(指示)
    • 選択されたモデル(Portal に設定された任意のモデル)
    • 温度などのランタイムパラメータ
    • オプションで MCP ツール
  • モードは パブリック(会社全体で共有可能)または プライベート(チーム専用)であり、インフラストラクチャや API キーの管理を必要としません。

トークン節約に使われた2つの具体的なモード

1. bulk-reader

  • 目的 – 複数の大規模ファイルの内容を要約し、Claude が各ファイルを直接読まずとも質問に答えることができるようにすること。
  • 重要な指示 – 構造化された箇条書きのみ出力。散文やマークダウンの囲みは不要。
  • モデル – Gemini 2.5 Flash(任意のモデルに交換可能)。
name: bulk-reader
description: コード分析用のバッチファイルリーダー - Claude Code からの I/O を委任
instructions: |
  あなたは正確なコード分析者です。提供されたファイルを読み、質問に簡潔に答えます。
  構造化された箇条書きのみ出力。挨拶や散文、序論は不要。
  各箇条書きは、正確な名前、型、または行番号から始めてください。
  詳細はネストされた箇条書きで記述。呼び出し元が尋ねていないものはスキップ。
visibility: public
model: gemini-2.5-flash
resourceLimits:
  temperature: 0.2
tags:
  - coding
  - delegation

2. code-writer

  • 目的 – 既存のプロジェクトのパターンに従ったボイラープレートコード(テスト、設定スタブ、型スタブ)を生成すること。
  • 重要な指示コードのみ を出力。マークダウンの囲みで囲わない。
  • モデル – Gemini 2.5 Flash(交換可能)。
name: code-writer
description: ボイラープレートコードジェネレーター - Claude Code からの出力重視作業を委任
instructions: |
  仕様と参照ファイルに基づいてコードファイルを生成します。既存のパターン、慣習、命名、スタイルを正確に再現してください。説明やマークダウンの囲みは出力しないでください(要求された場合を除く)。
  仕様が曖昧な場合は、参照コードのパターンに合致する合理的な選択をします。
visibility: public
model: gemini-2.5-flash
resourceLimits:
  temperature: 0.2
tags:
  - coding
  - delegation

ルーティングの強制方法:shunt プラグイン

  1. ツール使用前のフックshunt は Claude Code に2つの PreToolUse フックを登録します。
    • check-file-size は、行数の設定可能な閾値(デフォルト350行)を超えるファイルの Read 呼び出しをブロックします。フックは Claude に /bulk-reader スキルに移行するよう指示します。
    • check-bash-read は、大規模ファイルに対する catheadtaillessmore をブロックしますが、ターゲットのパイプライン(例:cat file | grep)は許可します。
  2. シェルラッパー – 2つの Bash スクリプト(bulk-readcode-write)が Portal CLI を呼び出し、引数を渡し、エラーを処理し、トークン使用量を報告します。
    • bulk-read --question "..." --paths src/Service.java src/Handler.java
    • code-write --spec "Write tests for UserService" --reference tests/OrderTest.java --target tests/UserTest.java
  3. スキルファイル – Markdown 形式のスキル定義が、フックが読み込みをブロックした際に Claude がどの CLI 構文を呼び出すかを正確に教えてくれます。
    • スキルの説明はオプションですが、フックがすでに高コストの読み込みを防いでいるため、必須ではありません。

測定されたトークン節約効果

  • シナリオ – Java モノレポ、4つの典型的なコーディングタスク(バッチファイルクエリ、テスト生成、設定スタブ作成、型スタブ作成)
  • 結果 – 直接的な Claude の読み込みは、バッチリーダーの要約に比べて約10倍の入力トークンを消費しました。バッチリードの平均的なトークン削減率は 約 90 % でした。
  • code-writer – Claude は参照ファイルの入力トークンと出力トークンの両方を消費していたため、節約量は定量的に測るのが難しいです。shunt を使用すると、生成されたコードは Claude のコンテキストに入らず、出力トークンを完全に排除できます。

制限とトレードオフ

  • 編集の委任不可 – 要約には信頼できる行番号が含まれないため、正確な編集には依然として元のファイルを Claude が読み込む必要があります。
  • 推論の委任不可 – 複雑なバグの特定やアーキテクチャ決定は Claude が引き続き担当。安価なモデルは微細な問題(例:スレッドセーフのバグ)を見逃す可能性があります。
  • レイテンシ – 各委任は 10~30 秒のラウンドトリップ(Claude → Portal → ワーカーモデル → Claude)を追加します。Portal は呼び出しを30秒で制限しているため、非常に大きな生成は分割が必要となり、小さな読み込みには不向きです。
  • コスト会計 – トークン節約は Claude の使用量のみ測定されていますが、安価なモデル自体もトークンコストを発生させます。ただし、1回あたりのコストは大幅に低いです。

AiKA モードの再利用性と拡張性

  • 再利用可能 – 同じ bulk-readercode-writer モードは、Portal CLI を呼び出せる任意のプロジェクトやツールから呼び出せます。
  • 共有可能 – モードは AiKA カタログでパブリック。Spotify のエンジニアであれば、新しいモードを作成せずに利用可能です。
  • 組み合わせ可能doc-writerreviewertranslator などの新しいモードは、わずかなクリックで同じテンプレートから構築できます。
  • ルーティングの分離shunt プラグインは いつ 委任するかを決定し、モードは どのように 応答するかを決定します。ワーカーモデルの交換、プロンプトの調整、MCP ツールの追加は、モードの編集のみで可能で、プラグインの変更は不要です。

自分で始める方法

  1. プラグインのインストール
    claude plugin marketplace add spotify/portal-ai-plugins
    claude plugin install portal@portal
    claude plugin install shunt@portal
    
  2. Portal CLI の設定 – Claude Code セッション内で /portal:setup を実行し、Portal インスタンスに認証します。
  3. モードの使用 – 複数のファイルにまたがる質問を Claude に尋ねます。shunt フックが自動的に大規模な読み込みを bulk-reader に、ボイラープレート生成を code-writer にリダイレクトします。
  4. 必要に応じてカスタマイズ – Portal 内でパブリックモードをフォークし、モデルや指示を調整。フォークしたモードは自動的に優先されます。

コミュニティの反応(選択された HN コメント)

"トークン使用量が削減されるのは、読込/コード生成タスクに異なるトークン予算を持つ別のサービスを使っているためです。"jnwatson

"サイズに基づくルーティングは、コードの複雑さについて何も教えてくれません。出力トークンは入力トークンよりもはるかに高価です。"ricardobeat

"このアプローチは、grep やボイラープレート用に安価なモデルに委任するというだけです。根本的に新しいものではなく、単に設定レイヤーにすぎません。"tolugenius

"1回の委任あたり10~30秒のレイテンシは、小さなタスクでは致命的です。"krzys


最後に

Portal の AiKA モードにより、高コストなモデルルーティングが単純な宣言型設定に変化しました。バッチ I/O と予測可能なコード生成を安価なモデルに委任することで、Spotify のエンジニアは Claude Code の入力消費に対して 約 90 % のトークン節約を達成しました。開発者の体験はそのまま維持されています。追加のレイテンシや編集・深い推論の委任ができないというトレードオフは予測可能であり、このソリューションは、最先端のコーディングエージェントを使用するあらゆる組織にとって実用的なコスト制御パターンです。

Sources

関連

  • プロジェクト
  • Dispatch
  • プロジェクト
  • プロジェクト
  • Dispatch