LLMでトークンを節約する方法:Claude Code実践ガイド
LLMでトークンを節約する方法:Claude Code実践ガイド
月額$200のサブスクを10個使い切るのは難しくない。問題は、それを意味のある使い方ができているかどうかだ。以下に、私がClaude Codeでの日常的な作業で実践しているトークン節約のアプローチをまとめた。
1. 課金の仕組み
Claude Codeは入力トークンと出力トークンそれぞれに課金される。入力とはコンテキストに含まれるすべて:システムプロンプト、チャット履歴、ファイル、スクリーンショット。出力とはモデルが生成する内容。
チャットでの各メッセージは、蓄積されたコンテキスト全体を入力に追加する。1MコンテキストのOpusを使っている場合、各メッセージは毎回その100万トークン全体を送信しているのと同じ料金がかかる。出力もコンテキストを圧迫する — 回答のたびに蓄積されていく。
結論: 会話が短いほど安い。コンテキストが小さいほど安い。モデルの「思考」が少ないほど安い。
2. サブエージェントは必須
メインプロセス(リーダー)自体は何も作業すべきではない。その役割は調整と委任。すべての作業は小さなコンテキストを持つサブエージェントが実行する。
なぜ:
- リーダープロセスのコンテキストは100〜200Kの範囲に収まり、増加しない
- サブエージェントが作業を終えると、コンテキストはクリアされる
- 数十のエージェントを並列実行できる
設定方法:
メインプロセス (Opus, 200K コンテキスト)
├── エージェント1 (Haiku, 短いコンテキスト) — スクリプト処理
├── エージェント2 (Sonnet, 短いコンテキスト) — テスト作成
└── エージェント3 (Haiku, 短いコンテキスト) — リファクタリング
大量タスク(例:8000のスクリプトを処理)の場合 — スクリプト1つにつきサブエージェント1つ、Haikuモデル。1つのチャットですべてを処理するより圧倒的に安い。
3. コンテキストとハルシネーション — 非線形の関係
100KコンテキストのOpusは、1MコンテキストのOpusより正確に動作する。1Mコンテキストではハルシネーションが非線形に増加する。つまり、大きなコンテキストは高コストで品質も低下する。
教訓:コンテキストはコンパクトに保つべし。500Kのチャット1つより、100Kのチャット5つの方が良い。
4. スキルが解決策
スキル(skills)は、必要に応じて読み込まれる事前設定済みプロンプトで、常にコンテキストに常駐しない。多くのフレームワークは、作業の最初のステップとしてスキルを準備・ダウンロードする。
MCPサーバー(常にコンテキストに説明をロードする)とは異なり、スキルは必要な時だけアクティブになる。Opus 4.5以前はMCPで多くのトークンが消費されていた — 現在は問題が解決されたが、「MCPをスキルとコマンドに置き換える」アプローチは、節約の観点から依然として有効。
Caveman
Caveman は Claude Code(および他エージェント)向けのオープンソーススキル/プラグインで、技術的正確性は保ちつつ「caveman speak」で超短い返答を促す — §1の「会話が短いほど安い」を実装した例だ。リポジトリのベンチマークでは平均で 出力 トークンが約 65% 削減という結果。別途 caveman-compress でメモリファイルの散文を圧縮し 入力 も削れる。
5. 中国製モデルと安価なサブスク
Alibaba Cloudや中国のサブスクリプションは、価格/トークン比で圧倒的に有利。約$30のサブスクで、Anthropicの$200プランと同等のトークン量が得られる。
実践:
- モデルプロバイダーを切り替えられるClaudeラッパーを使用
- グローバル環境変数は変更せず、ラッパー起動時に必要なものだけ渡す
- Geminiも同様に安価なサブスクがあり、同じように活用できる
「異なるプロバイダーのモデルをClaudeに直接統合する」完成品はないが、ラッパーでニーズの80%はカバーできる。その一つがClother — グローバル設定を変更せずに、異なるモデルプロバイダーでClaude Codeを実行できる。
6. ナレッジグラフとRAG:トークンを10分の1に
LightRAG
LightRAGは、ナレッジグラフとLLMを組み合わせるアプローチ。コンテキスト全体を読み込む代わりに、構造化された関連情報の抽出により、トークン消費を最大10分の1に削減できる。
a8e
ivansglazunovの開発 — 作者は隠者モードで作業しており、ほとんど公開していないため、プロジェクトを実際に見るのは難しい。司書RAGとして機能:入力されるデータをすべてデータベースに投げ込む。ナレッジグラフとLLMを組み合わせ、より正確で安価なコンテキスト抽出を目指す。この動画で説明されている技術に似たアプローチ。
cmdop-claude
cmdop-claude — markolofsenのアプローチ。グラフとしてマークルツリーを使用。基本アイデア:ほぼ無料の中国製LLMをバックグラウンドで動かし、.claudeフォルダを整理 — メインモデル用のコンテキストを準備する。
7. エージェント管理フレームワーク
Superpowers
Claude Code用の人気フレームワークで、完成されたスキル、パターン、パイプラインを提供。
AI Factory
ai-factory — AIエージェント管理の興味深いフレームワーク。aif-handoffと組み合わせると、カンバンボードとフィルター付きのフロントエンドが得られる。
重要なアイデア:人間が最初のタスクを設定し、AIがそれを分解するが、完成したプランの人間による承認なしには作業は開始されない。これがトークンを節約し(やり直しが不要)、コントロールも提供する。
8. 実践的なティップス
High effortとreasoningは無効化してコストを削減できる。すべてのタスクがモデルの「深い思考」を必要とするわけではない。
スキルをMCPの代わりに。 Opus 4.5以前は、MCPをスキルに置き換えることで大きな節約になった。現在は差が縮まったが、大量タスクでは依然として有効。
サブエージェントのモデル管理。 サブエージェントが使用するモデルを指定できる。ルーティンタスクにはHaiku、複雑なタスクにはSonnetまたはOpus。
--bareモード — クリーンな起動。 フラグ--bareは、フック、LSP、プラグイン同期、自動メモリ、バックグラウンドプリロードなしでClaude Codeを起動する。そして重要なのは、CLAUDE.mdの自動検出なし。これらはすべて通常、システムプロンプトにロードされ、最初のメッセージの前にトークンを消費する。bareモードではコンテキストが最小限でスタートし、必要なデータは--system-prompt、--append-system-prompt、--add-dir、または--mcp-configで的確に渡せる。余分な事前プロンプトが純粋な無駄になる大量サブエージェント実行に最適。
9. フック — 自動的な節約
フック(hooks)は、Claude Code内のイベントで発火するスクリプト。.claude/settings.jsonで設定し、トークン節約のルーチンを自動化できる。
フックの種類
- PreToolUse — ツール呼び出しの前に発火。入力データのフィルタリングや変更に使用。
- PostToolUse — 呼び出し後に発火。自動フォーマットや後処理に便利。
- PreCompact — コンテキスト圧縮の前に発火。重要な情報の保存に使用。
- Stop — エージェントが作業を終了した時に発火。完了の確認に使用。
- SessionStart — セッション開始時に発火。コンテキストのプリロードに便利。
役立つフックの例
テスト出力のフィルタリング。 Anthropicの公式例 — Bashに対するPreToolUseフックで、長いテスト出力を切り詰め、失敗したテストとサマリーだけを残す。500行のログの代わりに10行がコンテキストに入る — トークンの直接的な節約。
{
"hooks": {
"PreToolUse": [{
"matcher": "Bash",
"command": "あなたのフィルタリングスクリプト.sh"
}]
}
}
保存後の自動フォーマット。 Write/Editに対するPostToolUseフック — ファイル保存のたびにprettierやblackを実行。モデルがコードのフォーマットにトークンを使う必要がない — ロジックを書き、フォーマットはフックが処理。
破壊的コマンドの防止。 Bashに対するPreToolUseフックで、rm -rfやDROP TABLEなどのコマンドをブロック。直接的なトークン節約にはならないが、高コストなエラーとやり直しを防ぐ。
コンパクト前のコンテキスト保存。 PreCompactフック — コンテキスト圧縮前に重要な決定と状態をファイルに保存し、コンパクト後も失われないようにする。
フックにできないこと
Nメッセージごとの自動コンパクトはフックで設定できない — これはClaude Codeの組み込み機能。ただしPreCompactフックを使って、圧縮時に何を保存するかを制御できる。
10. スクリーンショット — 隠れたトークン消費者
ドキュメントによるとClaudeは画像を解像度で圧縮する。実際には、圧縮はほとんど見られない。4Kモニターでは1枚のスクリーンショットが高額。
解決策:送信前にスクリーンショットを幅約400pxに縮小する。テキストは読みやすく、トークン消費は大幅に減少。
macOS向けに私が作った Open Screenshot がある — 解像度が圧縮された形式でスクリーンショットを直接撮影でき、手動でリサイズする必要がない。ぜひ使ってみてください!
節約チェックリスト
| アプローチ | 節約効果 |
|---|---|
| 短いコンテキストのサブエージェント | 長いセッションで2〜5倍 |
| ルーティンに中国製モデル | 価格で5〜10倍($30 vs $200) |
| 常駐MCPの代わりにスキル | 1.5〜2倍 |
| 出力フィルタリングのフック | テスト/ログタスクで1.5〜3倍 |
| コンパクトなスクリーンショット | ビジュアルタスクで1.5〜2倍 |
| 全コンテキストの代わりにグラフ/RAG | 3〜5倍 |
| 単純タスクでreasoningを無効化 | 1.5〜2倍 |
サブエージェントに--bareモード | 毎回の起動で1.5〜2倍 |
| プラン承認付きフレームワーク | 間接的 — やり直しの削減 |
いくらでも使い込める — 月額$200のアカウント10個でも限界ではない。でも、それは効率性の指標ではない。目標は、品質を犠牲にせずにコストを少なくとも10分の1に減らすこと。