1週間で3億トークン節約、AnthropicエンジニアのClaude Codeキャッシュガイド

原文タイトル:How Anthropic Engineers Actually Save Tokens
原文作者:Nate Herk
編訳:Peggy、BlockBeats

編者の一言:多くの人がClaude Codeを使うとき、最も直感的に感じるのはTokenの消費が早く、長い会話ではすぐに上限に達してしまうことだ。しかし、Anthropicのエンジニアの視点から見ると、実際にコストに影響を与えるのは、あなたがどれだけコードを書いたかではなく、システムが既に処理したコンテキストを継続的に再利用できているかどうかだ。

この記事の核心は、キャッシュ機構を活用してTokenを節約する方法だ。著者は一週間で3億以上のTokenをキャッシュで再利用し、1日のキャッシュ量は9100万に達した。キャッシュされたTokenのコストは通常の入力Tokenの10%しかかからないため、9100万のキャッシュTokenは実質的に900万の普通Tokenとほぼ同じ料金になる。長時間の会話が「耐久性」を持つのは、モデルの無料稼働ではなく、多くの重複したコンテキストが成功裏に再利用されているからだ。

Prompt cachingの鍵は「キャッシュを打ち切らないこと」だ。Claude Codeはシステムプロンプト、ツール定義、CLAUDE.md、プロジェクトルール、過去の対話履歴を層ごとにキャッシュしている。後続のリクエストの前置きが一致していれば、Claudeはキャッシュを直接読み込み、全体のコンテキストを再処理しない。Anthropic内部でもprompt cacheの再利用率を監視しており、それはユーザーのクォータに影響するだけでなく、モデルサービスのコストや運用効率にも直結している。

一般ユーザーはすべての底層の詳細を理解する必要はなく、いくつかの重要な習慣を身につけるだけで良い:会話が1時間以上空かないようにする;タスク切り替え時にセッションの引き継ぎを行う;モデルの頻繁な切り替えを避ける;大きなドキュメントはProjectsに入れ、何度も貼り付けるのを避ける。

この文章は、Tokenを節約するテクニックというよりも、エンジニアの思考に近いClaude Codeの使い方を提案している。コンテキストを資産管理とみなし、キャッシュの持続的な再利用を促進し、長い会話での重複計算を減らすことを目的としている。

以下は原文の内容だ。

今週、私は3億Tokenを節約し、1日あたり9100万Tokenをキャッシュで再利用した。一週間で合計3億を超えた。

私は設定を一切変更していない。これはPrompt cachingがバックグラウンドで正常に働いている証拠だ。

しかし、キャッシュとは何か、それを「打ち切らない」方法を理解したことで、同じクォータ内でも会話をより長く続けられるようになった。そこで、Claude Codeのprompt cachingの80/20入門ガイドを整理した。APIの詳細には触れない。

TL;DR

キャッシュされたTokenのコストは、普通の入力Tokenの10%に過ぎない。9100万のキャッシュTokenは、実質的に約900万Token分の料金に相当する。

Claude Codeのサブスクリプション版のキャッシュTTLは1時間;APIのデフォルトは5分;サブエージェントは常に5分。

キャッシュは三層に分かれる:システム層、プロジェクト層、対話層。

会話中にモデルを切り替えるとキャッシュが破壊される。たとえば「opus plan」モードの有効化も同様だ。

キャッシュの料金計算はどうなる?

キャッシュされた各Tokenのコストは、普通の入力Tokenの10%だ。

だから、ダッシュボードに「ある日、9100万Tokenがキャッシュにヒットした」と表示されても、実際の請求は約900万Token分に過ぎない。これが長時間Claude Codeを使うと会話がほぼ「無料」で延長できると感じられる理由だ。

ダッシュボードの注目すべき二つの数字は次の通り:

Cache create:内容を書き込む際に一度だけ発生するコスト。次の対話で役立つ。
Cache read:Claudeがキャッシュから再利用したToken数。たとえばCLAUDE.mdやツール定義、過去のメッセージなど。再処理よりも10倍安いコストだ。

もしCache readの数字が高いなら、キャッシュを効果的に利用している証拠だ。逆に低い場合は、同じコンテキストに対して何度も料金を払っていることになる。

AnthropicのThariqは次のように言う:「私たちはprompt cacheのヒット率を実際に監視しており、ヒット率が低下するとアラートを出し、最悪SEVレベルの事故を宣言することもある。」

彼はまた、非常に良いX(旧Twitter)記事も書いている。キャッシュのヒット率が高いとき、次の4つのことが同時に起こる:Claude Codeの体感速度が向上し、Anthropicのサービスコストが下がり、あなたのサブスクリプションの耐久性が増し、長時間のコーディング会話も現実的になる。

しかし、ヒット率が低いと、皆が損をする。

したがって、双方のインセンティブは一致している:Anthropicはあなたのキャッシュヒット率を高めたいし、あなたも高めたい。実際に会話の遅れを招くのは、見た目には些細に見えるが、静かにキャッシュをリセットしてしまう小さな習慣だ。

キャッシュはどうやって会話ごとに増えるのか?

キャッシュは「前方一致」(prefix matching)に依存している。

深く技術的な詳細に踏み込む必要はない。ただ一つ理解してほしいのは:ある位置までの内容と既にキャッシュされている内容が完全に一致すれば、Claudeはその部分のTokenを再利用できるということだ。

新規の会話はおおよそこう展開される:

Claude Codeのドキュメントによると、新しい会話は次のように進行する:

第一ラウンド:キャッシュは何もない状態。システムプロンプト、プロジェクトのコンテキスト(例:CLAUDE.md、メモリー、ルール)、最初のメッセージが再処理され、キャッシュに書き込まれる。

第二ラウンド:最初の会話の内容はすべてキャッシュ済み。Claudeは新しい返信と次のメッセージだけを処理すれば良い。このラウンドのコストは大きく低減する。

第三ラウンド:同様に。過去の会話はキャッシュに残っており、最新のやりとりだけ再処理が必要。

キャッシュは三層に分かれる:

ThariqのX記事より:

システム層(System layer):基本指令、ツール定義(read、write、bash、grep、glob)や出力スタイルを含む。この層はグローバルキャッシュ。

プロジェクト層(Project layer):CLAUDE.md、メモリー、プロジェクトルールを含む。この層はプロジェクトごとにキャッシュ。

対話層(Conversation):返信やメッセージ。各ラウンドごとに増加していく。

会話中にシステム層やプロジェクト層の内容が変わった場合、すべての内容を最初から再キャッシュしなければならない。これが最も「高価」な操作だ。想像してみてほしい:16回目のメッセージまでやりとりした後に、突然システムプロンプトを変更したり、1時間中断した場合、最初のメッセージからのすべてのTokenが再処理される。

1時間と5分の混乱

これは最も誤解を招きやすい部分だ。

Claude Codeサブスクリプション版:デフォルトのTTLは1時間。

Claude API:デフォルトのTTLは5分。より高コストを払えば1時間に延長可能。
どのプランでもサブエージェントは常に5分。

Claude.aiのウェブチャット:公式には明記されていない。おそらくサブスクリプション版と同じだが、確認は取れていない。

数ヶ月前、多くの人がClaudeのクォータ消費が早すぎると不満を漏らした。当時、AnthropicがこっそりTTLを1時間から5分に下げたのではと誤解されたが、実際はそうではなく、Claude CodeのTTLは依然として1時間だ。

問題は、Claude CodeとAPIのドキュメントが別々に存在し、これらが本来全く異なるものであるため、多くの混乱を招いていることだ。

大量にサブエージェントのワークフローを動かす場合やAPIを直接使う場合は、5分の数字が重要だ。しかし、95%のClaude Codeユーザーにとっては、実際に気にすべきは1時間のウィンドウだけだ。

95%のユーザーに役立つ三つの習慣

以下は、私が日常的に役立つと考えるポイントだ。

長時間放置しない

1時間以上空けると、以前の内容はほぼキャッシュから消えている。次のメッセージではキャッシュが再構築される。この場合、すでに「冷めた」旧会話を無理に復元するよりも、新たに明確な引き継ぎを行い、新会話を始めたほうがコストも低く済む。

タスク切り替え時は、直接再スタート

/compactや/clearはキャッシュを破壊するため、これらのコマンドを使うタイミングで本当にリセットするのが良い。

私は「セッション引き継ぎスキル」を作り、/compactの代わりに使っている。これにより、何を終え、何が未解決か、重要なファイルは何か、次に何から始めるべきかを要約し、その後/clearを実行してこの要約を貼り付ける。そうすれば、何も中断せずに続行できる。

compactコマンドは時に遅いこともあるが、この引き継ぎスキルは通常1分以内に完了する。

Claudeのチャットでは、大きなドキュメントはProjectsに入れるのがベスト

Claude.aiのキャッシュ機構について詳細な公式説明はないが、Projectsは普通の対話スレッドと異なる最適化を採用しているようだ。したがって、大きなドキュメントを貼り付ける場合は、直接対話に貼るのではなく、Projectsに入れるのが望ましい。

キャッシュを静かに破壊する操作は何か?

いくつかの操作は、明示的な通知なしにキャッシュを全てリセットしてしまう。

モデルの切り替え:キャッシュは前方一致に依存しているため、モデルを切り替えると次回のリクエストはキャッシュが一切ヒットせず、全履歴を再読込する必要がある。

「Opus plan」モード:この設定は計画段階でOpusを使い、実行段階でSonnetを使う。以前の動画でも推奨したが、これはモデル切り替えと同じ意味を持つ。つまり、planの切り替えはキャッシュの再構築を意味し、長期的には会話のクォータ延長に寄与するが、その仕組みを理解しておく必要がある。

会話途中でCLAUDE.mdを編集しても良いが、その変更は即座には反映されず、次回の再起動まで待つ必要がある。したがって、現在動作中のキャッシュには影響しない。

私の無料Tokenダッシュボード

前述のスクリーンショットは、Tokenダッシュボードの例だ。

https://github.com/nateherkai/token-dashboard

これはシンプルなGitHubリポジトリだ。リンクをClaude Codeに渡すと、ローカルのlocalhost上で展開され、過去の会話記録を読み込み、空白からの集計ではなく、日々のinput、output、cache create、cache readのデータを確認できる。

ただし注意点として、このダッシュボードはローカルデバイス上のTokenデータを集計しているため、デスクトップとノートPC間で数字が一致しないこともある。各デバイスごとに独立した統計ビューを持つ。

まとめ

Prompt cachingは奥深いテーマだ。Thariqの解説はここよりも詳しいので、全体像を知りたい場合は読む価値がある。

しかし、すべての詳細を理解しなくても、最大の80/20の効果は得られる。ポイントは:キャッシュされたTokenは普通のTokenの10分の1のコスト、Claude CodeのTTLは1時間、モデル切り替えはキャッシュを破壊、タスク間の明確な引き継ぎは、古い会話を「過期」させてから再利用するよりもコスト効率が良い。

[原文リンク]

律動BlockBeatsの求人情報はこちら

律動BlockBeats公式コミュニティに参加しよう:

Telegram登録グループ:https://t.me/theblockbeats

Telegram交流グループ:https://t.me/BlockBeats_App

Twitter公式アカウント:https://twitter.com/BlockBeatsAsia

原文表示
このページには第三者のコンテンツが含まれている場合があり、情報提供のみを目的としております(表明・保証をするものではありません)。Gateによる見解の支持や、金融・専門的な助言とみなされるべきものではありません。詳細については免責事項をご覧ください。
  • 報酬
  • 8
  • 2
  • 共有
コメント
コメントを追加
コメントを追加
RouterWhisperer
· 2時間前
キャッシュの再利用こそコスト削減の核心であり、3億トークンを一週間で処理するのはあまりにも誇張です
原文表示返信0
YieldGoblin
· 11時間前
BlockBeatsの編集品質は常に高水準で、この役立つ情報
原文表示返信0
GateUser-047cb6fc
· 11時間前
省Token=省钱,这波操作学起来
返信0
Mint-ColoredSlippage
· 11時間前
トークンが高いのではなく、使い方が馬鹿なだけだ、キャッシュは美味しくないのか?
原文表示返信0
TheWindOnTheBridgeIsTooStrong.
· 12時間前
Anthropic自身の内部経験に基づく内容で、参考価値が非常に高い
原文表示返信0
0xSecondThought
· 12時間前
やっと理解した、なぜ私のClaude Codeの請求書がそんなにひどいのか
原文表示返信0
MetalKeyInsomnia
· 12時間前
長い会話の妨害者がついに見つかった
原文表示返信0
SoftRugDetective
· 12時間前
システムがコンテキストを再利用する、これこそがLLM版のRedisではないか
原文表示返信0
  • ピン留め