搞懂緩存機制,從 Gemma4 到 Claude Code 省 80% Token

原始來源與檔名:2026-05-26T095135+0800-搞懂缓存机制,从Gemma4到Claude Code省80%Token.md


NAPKIN | 餐巾纸

餐巾纸公式

Caching Efficiency = Prefix Match Length × (1 / Recompute Cost) × (TTL > Idle Time)

大語言模型對話的成本並非線性增長,只要保持前綴提示詞與歷史記錄不變,依賴 KV Cache 的機制就能將後續多輪對話的計算成本降至原本的十分之一。

一句话

理解 Transformer 中 KV Cache 的前綴匹配機制,就能透過避免頻繁開新對話、不隨意修改上下文設定,在 Claude Code 等工具中省下高達 80% 的 Token 花費。

餐巾纸草图

       [ System Prompt (Static) ] --> [ CLAUDE.md ] --> [ Tool Schema ]
                 |                         |                 |
                 v                         v                 v
          Global Cache (Shared)      Org Cache         Session Frozen
                 |_________________________|_________________|
                                           |
    +-----> [ Message 1 ] --> [ Message 2 ] --> [ Message 3 (New) ]
    |         (Cached)          (Cached)          (Recomputed Q)
    |
(Prefix Matching: 只要前綴不動,後方只需計算增量 KV 張量)

ROUND 1: SKELETON | 骨架掃描

“這本書在說什麼”

章節骨架

  1. 本地實驗: 發現 Gemma4 處理相同對話,首輪耗時長,次輪耗時極短(100倍加速)。
  2. 原理解密: 解釋 Transformer 中 Query(Q) 需重算,但 Key(K) 和 Value(V) 可以被快取。
  3. 快取覆蓋率: 說明在多輪對話中,生成結果被拼回 Prompt 成為輸入,形成近似線性而非二次方增長的成本。
  4. 原始碼解析: 拆解 Claude Code 如何構建 Prompt 區塊(系統提示、動態內容、工具、對話),並分析斷裂條件。
  5. Sub-agent 盲區: 指出啟動 Sub-agent 等於冷啟動,無法複用主線程快取。
  6. 省錢技巧: 總結保護快取(持續對話)與破壞快取(開新 session、切換模型、改檔)的紅綠燈行為。

ROUND 2: DISSECTION | 血肉解剖

“憑什麼這麼說”

論證鏈

本地測試發現首輪極慢/次輪極快 --> 追溯 Decoder-only 架構的 KV Cache 特性 --> 分析 API 收費與快取命中的關聯 --> 逆向 Claude Code 原始碼證實其多層快取設計與 TTL 機制 --> 推導出使用者層面的最佳實踐(不要破壞前綴)

關鍵證據

  1. 實驗數據: 本地執行 Gemma4 (8B) 首輪耗時 31 秒,次輪 0.25 秒;而 Qwen3.5 (0.8B) 耗時差異不大,證明參數越大的模型 KV 計算越昂貴,快取收益越巨大。
  2. API 計費邏輯: 沒有快取的 10 輪對話(每輪增 1K)消耗約 255K Tokens;有前綴快取(價格 1/10)則僅需約 60K 等價 Tokens,節省高達 76%。
  3. Claude Code 原始碼: 從 api.tsclaude.ts 發現其構建的結構為 [System Block 1-3(Global)] -> DYNAMIC_BOUNDARY -> [Block 4(Org)] -> [Tools] -> [Messages]。只要前面變動,後面全部失效。

隱形假設與邊界

ROUND 3: SOUL | 靈魂提取

“還能怎麼用”

跨域映射

STRUCTURE MAP | 全書結構圖

[ Phenomenon ] 本地模型次輪對話 100x 加速
      |
[ Mechanism ]  Transformer KV Cache (Decoder-only 單向注意力)
      |        Q 每次重算,K/V 存入顯存
      |
[ Structure ]  Claude Code 的多層次 Prompt 構建
      +------- Block 1-3 (Global 靜態)
      +------- Block 4 (CLAUDE.md 動態)
      +------- Tools Schema
      +------- Messages (歷史對話)
      |
[ Practical ]  最佳實踐
      +------- 綠燈:保持 Session、固定前綴
      +------- 紅燈:頻繁開新對話、中途改配置、切換模型
      +------- Hack:定時 Keep-alive 續命

搞懂緩存機制,從 Gemma4 到 Claude Code 省 80% Token (Architectural Deep Dive)

前言/背景

隨著 AI 開發工具(如 Claude Code、Cursor)的普及,開發者發現其 API Token 消耗量驚人。本文透過本地執行開源大模型(Gemma4)的效能測試,結合 Transformer 底層的注意力機制,並逆向分析 Claude Code 的 TypeScript 原始碼,深入剖析了大型語言模型 (LLM) 中的 KV Cache 機制。理解這套機制,能幫助開發者在日常使用中避免無效的快取失效,最高節省 80% 的 API 成本。

章節詳細總結

一、 實驗:KV Cache 帶來的百倍加速

作者在本地 (Apple Silicon, 16GB) 執行 Gemma4 (8B) 進行多輪對話測試。

二、 核心原理:注意力機制的 QKV 分離

大模型生成文本依賴 Transformer 注意力機制:Attention(Q, K, V) = softmax(Q · Kᵀ / √d) · V

三、 快取的累加與成本模型

四、 逆向解析:Claude Code 的精密快取工程

作者查閱了 Claude Code 的原始碼,發現 Anthropic 並非簡單地「快取全部」,而是將 Prompt 分層拼接,透過前綴匹配(Prefix-matching)來最大化命中率:

┌────────────────────────────────────────────────┐
│ system(系統提示詞,~20K tokens)                 │
│   Block 3: 靜態指令(全球用戶共享 Global Cache)  │
│   ──── DYNAMIC_BOUNDARY ────                    │
│   Block 4: 動態內容(CLAUDE.md 等 Org 級快取)    │
├─────────────────────────────────────────────────┤
│ tools(工具 schema,session 內凍結)               │
├─────────────────────────────────────────────────┤
│ messages(對話歷史,標記 cache_control)           │
└─────────────────────────────────────────────────┘

五、 快取失效的連鎖反應與 Sub-agent 盲區

快取是嚴格的前綴匹配,就像一條鏈條,只要中間有一環改變,後面的快取全部作廢。

總結與結論