← ブログに戻る
LLMでトークンを節約する方法:Claude Code実践ガイド

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-claudemarkolofsenのアプローチ。グラフとしてマークルツリーを使用。基本アイデア:ほぼ無料の中国製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フック — ファイル保存のたびにprettierblackを実行。モデルがコードのフォーマットにトークンを使う必要がない — ロジックを書き、フォーマットはフックが処理。

破壊的コマンドの防止。 Bashに対するPreToolUseフックで、rm -rfDROP 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倍
全コンテキストの代わりにグラフ/RAG3〜5倍
単純タスクでreasoningを無効化1.5〜2倍
サブエージェントに--bareモード毎回の起動で1.5〜2倍
プラン承認付きフレームワーク間接的 — やり直しの削減

いくらでも使い込める — 月額$200のアカウント10個でも限界ではない。でも、それは効率性の指標ではない。目標は、品質を犠牲にせずにコストを少なくとも10分の1に減らすこと。