1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Claude Code のプロンプトキャッシュを理解してコスト10倍削減する方法

1
Posted at

結論から言う

Claude Code のコストが高い原因の大半は、キャッシュヒット率の低さにある。キャッシュがヒットすれば同じトークンが1/10の価格になる。ミスすれば10〜20倍のコストがかかる。Anthropic のエンジニアリングブログ「Lessons from building Claude Code: Prompt Caching is Everything」で公開された内容をもとに、実践的な対策をまとめる。


仕組み:プレフィックスマッチング

Claude Code がモデルに送るリクエストは、常に以下の順序で構成される。

システムプロンプト + ツール定義 → プロジェクトドキュメント (CLAUDE.md) → セッションコンテキスト → メッセージ

API はこのシーケンスを先頭から順にキャッシュする。次のリクエスト時に先頭部分が一致していれば、前回の計算結果を再利用する。これがキャッシュヒット。

重要な原則:プレフィックスの1バイトでも変わると、そこ以降のキャッシュはすべて無効化される。

Anthropic の設計思想は「変化頻度が低いものほど前に置く」。システムプロンプトとツール定義はほぼ変わらないので先頭に。CLAUDE.md は時々変わるので中間に。メッセージは毎ターン変わるので末尾に。この構造により、新しいターンは末尾への追記だけで済み、それ以前のキャッシュは維持される。


キャッシュを破壊する4つの操作

1. 会話中のモデル切り替え(最大の影響)

Opus で作業中に /model で Haiku に切り替えて簡単なタスクを処理し、また Opus に戻す——よくある節約のつもりの操作。

実態:キャッシュはモデルに紐づいている。 1回の切り替えで積み上げたキャッシュがすべてゼロになる。再構築コストは、Opus にそのまま答えさせた場合のコストを上回ることが多い。

Anthropic 内部の対処法:メイン会話は1つのモデルで通す。別モデルが必要な場合はサブエージェントを使い、独立したコンテキストとキャッシュで処理させる。

2. セッション中のツール設定変更

MCP ツールの追加・削除・パラメータ変更はすべてキャッシュを破壊する。ツール定義はキャッシュされたプレフィックスの一部だからだ。

Claude Code が未使用のツール定義を残し続けるのはこのため。余分なトークンコストより、キャッシュ無効化のコストの方がはるかに大きい。

Plan Mode も同じ理由で、プランニングモード移行時に実行ツールを削除するのではなく EnterPlanMode/ExitPlanMode という特殊ツールを追加する。ツールセットを変えないことでキャッシュを維持する。

MCP ツールが多い場合、Claude Code は遅延ロードを使う:最初はツール名と1行の説明だけのスタブを読み込み、実際に呼び出しが必要になった時点でフルスキーマを取得する。

3. 頻繁な新規セッション起動

claude を起動するたびにキャッシュはゼロから始まる。「2〜3回質問して終了、また起動」という習慣ではキャッシュの恩恵を受けられない。

4. アカウントの切り替え

キャッシュはアカウントごとに分離されている。複数アカウントをローテーションすると、切り替えのたびにキャッシュがリセットされる。


コスト削減の実践

会話を長く続ける

会話が長くなるほどキャッシュが厚くなり、後半のメッセージが安くなる。不必要に新規セッションを開かない。

コンテキストウィンドウの溢れを心配する必要はない。Claude Code にはCache-Safe Forkingという自動圧縮機能がある。圧縮リクエスト自体が同じシステムプロンプトとツール定義を再利用するため、キャッシュチェーンが維持される。長い会話はコストが上がるのではなく、むしろ下がる。

--resume で前のセッションを継続する

claude --resume

前回のセッションを復元し、キャッシュチェーンを引き継ぐ。再構築コストがかからない。Claude Code で最も見落とされているコスト削減の習慣の一つ。

モデルを途中で切り替えない

別モデルが必要なら、そのタスク専用の別会話を開く。メインセッションのキャッシュチェーンを守ることの方が、安いモデルへの切り替えで得られる節約より価値がある。

MCP ツールはセッション開始前に設定する

セッション中の追加・削除は避ける。


クイックリファレンス

操作 キャッシュへの影響 コストへの影響
会話中のモデル切り替え 完全無効化 最大20倍
MCP ツールの追加・削除 完全無効化 10〜20倍
新規セッション起動 ゼロから開始 最初のターンはフル価格
アカウント切り替え 完全無効化 10〜20倍
長い継続会話 蓄積される 後半ほど安くなる
--resume 使用 チェーン継続 ほぼ無料

補足:なぜ Anthropic はこれを公開したか

Claude Code のサブスクリプションはメッセージ数ではなくトークン消費量で課金される。キャッシュヒット率が高いユーザーは同じクォータでより多くの作業をこなせる。ヒット率が低いユーザーは数倍の速さでクォータを消費する。

Anthropic がこのブログを書いた理由は明確だ:「クォータが足りないのではなく、使い方が非効率なのだ」というメッセージ。

一つ興味深い実装の詳細がある。Claude Code はシステムプロンプトを変更して状態情報(現在時刻、ファイル変更など)を更新することをしない。代わりに <system-reminder> タグをメッセージ内に挿入する。プロンプトを変更するとキャッシュが壊れるからだ。プロンプトを不変のインフラとして扱い、メッセージを流動的な情報レイヤーとして使う設計になっている。


参考


著者:Jessie(EvoLink)— EvoLink は Claude Desktop 向けのゲートウェイ統合を提供しています: https://docs.evolink.ai/en/integration-guide/claude-desktop

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?