Claude Codeのトークンの9割は推論でなく読み書きだった
Claude Codeが処理するトークンの約9割は高度な推論ではなく、ファイルの読み込みやコードの生成に使われています。Spotifyのエンジニア、ディミトリ・マズマノフ氏がこの点に着目した手法をSpotify Engineeringのブログで公開しました。
1つのメソッドについて答えるために5つのファイルを読む処理や、既存の20個のテストに合わせて新しいテストを書く処理がその典型です。マズマノフ氏はこうした作業のすべてを高性能モデルに任せる必要はないと考えました。
そこで「読む仕事」と「書く仕事」を軽いAIモデルに振り分けるbulk-readerとcode-writerの2つのモードを用意しました。作業用モデルにはGemini 2.5 Flashを使っています。ほかのモデルに置き換えることもできます。

350行を超えたら止める shuntが自動で振り分ける
bulk-readerはClaudeの代わりに大きなファイルを読みます。ファイルそのものをClaudeのコンテキストに入れず、必要な情報だけを短くまとめてClaudeに返す仕組みです。数千行のコードではなく要約だけがClaudeに渡ります。
code-writerは逆にコードの「出力」を切り離す役割です。テストコードや設定ファイルのひな型を既存パターンに合わせて書かせます。参考ファイルの指定が必須のため、プロジェクトの命名規則に合ったコードになります。
この振り分けを強制するのがshuntというClaude Codeプラグインです。PreToolUseフックでClaudeのツール実行を監視し、350行を超えるファイルを開こうとするとブロックしてbulk-readerへ回します。読むべき箇所を指定する場合やgrepで絞り込む場合はそのまま通します。

Claude Codeのフックを使えば同じ仕組みは再現できる
マズマノフ氏はSpotifyの開発者向けプラットフォームPortal by Spotify上でこの仕組みを構築しました。当初はCLAUDE.mdに振り分けルールを書いていましたが、Claudeが指示を守らないことがあり安定しませんでした。
shuntプラグインに切り替えたことで、Claudeがルールを無視しても物理的にブロックされるようになりました。shuntのソースコードはGitHubで公開されています。
Claude Code単体でもPreToolUseフックを設定すれば、350行のしきい値でファイル読み込みを止める部分は再現できます。bulk-readerの部分はMCPサーバーや外部スクリプトで軽量モデルを呼ぶ仕組みを別に用意する必要があります。
2つの振り分けモードの中身
| モード | 何をするか | Claudeへの戻し方 |
|---|---|---|
| bulk-reader | 大きなファイルを代わりに読む | 必要な部分だけ要約して返す |
| code-writer | 定型コードを代わりに書く | ファイルへ直接書き込む |
90%の削減に代償もある 軽いAIは安全性を見落とした
マズマノフ氏がJavaのモノレポで4種類のシナリオを検証した結果、bulk-readerを使ったケースではClaude側のトークン消費を平均約90%削減できました。
ただし何でも別モデルに任せればよいわけではありません。検証では軽量な作業用モデルが表面的なコードパターンは見つけたものの、スレッドセーフティーに関わる問題を見逃した場合もありました。
Claude Codeの費用を抑えたいなら、まず自分のプロジェクトで350行を超えるファイルの読み込みがどれだけあるかを確かめるのが第一歩です。Anthropicもキャッシュの値下げでコストを下げており、あわせて使えば効果はさらに広がります。
- shunt
- Claude Codeのツール実行直前に処理をチェックし、大きなファイルの読み込みを別のAIモデルへ自動で振り分けるプラグイン
企業のAI導入を支援する立場からみると、この手法の核心は「推論に高いモデルを使い、入出力は安いモデルで済ませる」という分業の考え方です。Claude Codeを業務で使っているチームなら、まずトークン消費の内訳を可視化して350行のしきい値を試すのが現実的な第一歩です。ただしスレッドセーフティーのように文脈を横断する判断は軽いモデルでは見落とすため、何をClaudeに残すかの線引きが肝心になりそうです。
- shuntプラグインは無料で使えるか
- shuntのソースコードはGitHubで公開されており無料で使えます。ただしSpotifyのPortal by Spotify上で動く前提で作られているため、そのまま使うにはPortalの環境が必要です。Claude Code単体で同じ効果を得るにはPreToolUseフックで350行以上のファイル読み込みをブロックし、別のスクリプトで軽量モデルを呼ぶ仕組みを自分で組む必要があります。
- Gemini以外のモデルでも同じことができるか
- マズマノフ氏によるとGemini 2.5 Flashでなければならないわけではなく、別のモデルに置き換えることもできます。コストと品質のバランスを見てプロジェクトに合ったモデルを選ぶ形です。ただし検証では軽量モデルがスレッドセーフティーの問題を見逃したケースもあり、推論が必要な作業まで任せるのは避けたほうがよいとしています。
この記事の出典
補助資料
- [1]GIGAZINEこの記事の元にした報道
出典の最終確認日:2026年9月13日
