Claude Code セッションの価値とトークン効率を最大化する方法

プロンプトキャッシュによるトークンコストの削減

Claude Code は、繰り返しの入力トークンのコストを削減するために、プロンプトキャッシュを使用しています。リクエストが以前のリクエストと同じトークンで開始される場合、サーバーは状態をキャッシュから読み込むため、そのトークンのコストは標準入力価格の 0.1 倍になります。ただし、キャッシュに新しいトークンを書き込むコストは、通常の入力価格の最大 2 倍になります。

キャッシュミスを避ける

キャッシュはリクエストの先頭から順にキーが設定されるため、リクエストのプレフィックスに変更があると、その後のすべてのキャッシュが無効化されます。会話中に以下の操作を避けることで、高コストなフルコンテキスト再プリフィルを防ぐことができます:

  • モデルの切り替え (/model): 各モデルは独自の別々のキャッシュを保持しています。
  • 努力レベルの変更 (/effort): 努力レベルはキャッシュキーの一部であり、変更するとキャッシュが無効化されます。
  • ファストモードの切り替え: ファストモードを有効にするとキャッシュキーが変更されます。セッション開始時に有効にしておくべきです。
  • /compact の使用: これは会話を短い要約に置き換えるため、以前の会話履歴がキャッシュと一致しなくなります。
  • 時間ベースの有効期限: サブスクリプションユーザーは 1 時間、API キーユーザーは 5 分後にキャッシュが期限切れになります(ENABLE_PROMPT_CACHING_1H=1 が設定されている場合は除く)。

コストを最小限に抑えるため、モデルや努力レベルの変更はセッション開始時または /clear コマンドの直後に実行してください。不要なターンを削除する場合、/rewind/compact よりもコスト効率が良いです。/rewind は会話の末尾のみを切り離すため、前のキャッシュ済み履歴はそのまま残ります。

戦略的なコンテキスト管理

セッションに読み込まれたファイルやコマンドの出力は、以降のすべてのターンでコンテキストに残り、各リクエストのトークン負荷を増加させます。コンテキストに何が入るかを管理することは、パフォーマンスの維持とコスト削減に不可欠です。

入力とツール結果の最適化

  • @メンションの使用: ファイルをメンションする(例:@utils.test.ts)と、そのファイルが最初のリクエストに添付され、別途 Read ツール呼び出しとそれに続くターンを省略できます。
  • 静的コマンドフラグ: コマンドの出力は会話に追加されます。コンテキストが肥大化するのを防ぐため、CLAUDE.md に一般的なコマンドに静的フラグを追加してください(例:Vitest で --reporter=dot を使用)。
  • 起動時のコンテキストを制限: 新しいセッションで /context を使用して不要に読み込まれている項目を特定してください。ワークフロー固有の指示は CLAUDE.md から、必要時にのみ読み込まれるスキルに移動し、使わない MCP サーバーは /mcp で無効化してください。

セッション長の管理

長いセッションは、複数の短いセッションよりも指数的に高コストです。各ターンで前の履歴全体を再処理するためです。タスクを切り替える際は /clear を、タスクの初期部分が完了したら /compact を使用してください。1M コンテキストモデルを利用している場合は、/autocompact 200k を使用して自動コンパクションの安全装置を再有効化できます(Claude Code v2.1.221+ で利用可能)。

ノイズの多いタスクにサブエージェントを活用する

サブエージェントは、別々のコンテキストウィンドウでタスクを実行する方法を提供します。サブエージェントには独自のシステムプロンプトとツールがありますが、メインセッションの会話履歴を継承しません。返されるのは最終的な回答のみで、中間のターンやツール出力はすべて破棄されます。

サブエージェントは、大きなログファイルの解析など、中間出力がメインセッションのコンテキストを肥大化させる「ノイズの多い」タスクに最適です。ユーザーは明示的にサブエージェントを要求する(例:「このログをサブエージェントで処理して」)か、ハイクやソネットのような低コストモデルを使用する特定のサブエージェント定義を設定することで、さらにコストを最適化できます。

コミュニティの知見と代替ワークフロー

Hacker News のユーザーは、公式ガイドラインを補完するための追加戦略を提案しています:

  • /handoff ワークフロー: 一部のユーザーは、/handoff スキルを使ってポータブルなコンテキストドキュメントを作成することを好んでいます。これにより、/continue [file] で新しいセッションを開始でき、キャッシュとコンテキストをリセットしつつ、重要なプロジェクト記憶を保持できます。
  • 検証ループ: 高効率なユーザーは、エージェントにテストを書かせ、カバーされたコードを削除してテストが「赤」(失敗)になることを確認し、その後コードを復元してテストが「緑」(成功)になることを検証することで、人間のレビュー前にテストが意味のあるものであることを保証していると報告しています。
  • 手動最適化への懸念: 一部のコミュニティメンバーは、/clear/compact などのコマンドでキャッシュやコンテキストを手動で管理する必要があることは、形式言語への後退であり、AI がこれらの最適化を自律的に行うべきだと主張しています。

"/handoff/compact/clear よりもずっと有用です。コンテキストが1つのセッションに束縛されるのではなく、ポータブルな形で保存されるからです... 私は20メッセージごとにこれを実行する方が、長時間のセッションを実行するよりも良い結果を得ています。"

"努力レベルを変更するとキャッシュが無効化されます... 努力レベルは、<end of thought> トークンの確率を変えるだけのデコード専用のものにできないでしょうか?"

高コスト領域の要約

優先度 分野 最適化アクション
最高 セッション長 /clear/compact を頻繁に使用
コンテキストの肥大化 @メンションと静的コマンドフラグの使用
キャッシュミス セッション開始時に /model/effort を設定
起動時のロード /context を確認し、使わない MCP サーバーを無効化

Sources

関連