提示詞快取 (Prompt Caching) 完全解析:如何達成 92% 的快取命中率
原始來源與檔名:2026-05-21T093224+0800-Prompt caching, clearly explained.md
NAPKIN | 餐巾紙
餐巾紙公式
Agent Cost = (Static Prefix * N turns) + Dynamic Tail Caching Cost = (Static Prefix * 1 turn) + (Prefix Cache Read * N turns) + Dynamic Tail
公式說明:Agent 在執行長期任務時,每一回合都會重新讀取高達數萬 Token 的系統指令與背景知識 (Context Tax)。透過 Prompt Caching (底層實作為 KV Cache),我們只需計算一次靜態前綴,後續回合讀取快取只需 10% 的費用,這能將 Agent 的運行成本降低 80% 以上。
一句話
不要每次對話都讓模型重新理解你的整個專案。把系統提示詞、工具定義與靜態文件放在 Prompt 的「最頂端」且永遠保持不變,這樣底層的 KV Cache 就能鎖定這些計算狀態,為你的 Agent 節省超過 80% 的 API 費用與延遲。
餐巾紙草圖
[ Perfect Caching Architecture ]
--- (Static Prefix / Cachable) ---
1. System Prompt & Rules
2. Tool Definitions
3. Project Context (CLAUDE.md)
---------------------------------- <- Cache Breakpoint (Hash calculated here)
--- (Dynamic Tail / Uncachable) ---
4. User Message 1
5. Tool Output 1
6. User Message 2 ...
ROUND 1: SKELETON | 骨架掃描
「這篇文章在說什麼」
- 核心問題: AI Agent 執行連續任務時面臨極高的「上下文稅 (Context Tax)」。如果一個 2 萬 Token 的系統提示詞重複執行 50 輪,就會浪費 100 萬 Token 的全額算力與費用。
- 核心答案: 利用 Prompt Caching。解析了 LLM 的 Prefill (計算密集) 與 Decode (記憶體密集) 階段,說明只要 Prompt 的前綴 (Prefix) 保持絕對靜態,伺服器就能暫存 KV Tensor,讓後續請求跳過 Prefill 階段,直接進入便宜快速的 Decode 階段。
- 論證結構: 提出痛點 (上下文稅) -> 定義 Static Prefix 與 Dynamic Tail -> 底層原理 (Transformer 的 KV Cache) -> 經濟學 (Anthropic 的定價策略) -> 實戰案例 (Claude Code 的 30 分鐘任務拆解) -> 破壞快取的致命規則 -> 開發者的實務建議。
章節骨架
- Context Tax: 重新讀取相同的系統指令是 Agent 工作流中最昂貴的浪費。
- 什麼會變,什麼不變: 區分靜態前綴 (Static Prefix) 與動態尾巴 (Dynamic Tail) 是優化的基礎。
- 底層原理 (KV Caching):
- Prefill 階段 (O(n²)):建立 Query, Key, Value 向量矩陣。
- Decode 階段 (O(n)):依賴前文的 KV Tensor 生成新 Token。快取就是儲存這些 Tensor。
- 經濟學模型: 寫入快取貴 25%,讀取快取只需基本費率的 10%。維持高命中率是唯一解。
- Claude Code 案例: 完美示範如何在一開始載入 2萬 Token,後續所有 Subagent 的循環與工具呼叫都只依賴快取讀取,最終省下 80%+ 費用。
- 破壞快取的規則: 順序改變、新增工具、更換模型,都會導致 Hash 改變,造成 Cache Miss。
ROUND 2: DISSECTION | 血肉解剖
「憑什麼這麼說」
論證鏈
Agent 的多輪對話本質上是不斷延長的字串串接 --> Transformer 模型處理字串時,前方的 Token 計算結果 (KV Tensor) 不會受後方 Token 影響 --> 因此,只要保證字串的前半段 (Prefix) 絕對不變,伺服器就可以將其計算狀態暫存起來 --> 當下一個請求進來時,比對 Hash 值,若相符則直接載入記憶體 --> 大幅降低 O(n²) 的算力消耗,轉化為使用者的 API 成本折扣與速度提升。
關鍵證據
- 1 + 2 = 3. But 2 + 1 is a cache miss: 這是全篇最反直覺也是最關鍵的警告。快取是基於字串的密碼學雜湊 (Cryptographic Hash) 建立的。這意味著即使你只是對調了兩個工具的宣告順序,或是增加了一個空格,整個 Prefix 的 Hash 就會改變,快取瞬間歸零,你必須重新支付全額的 Prefill 費用。
- KV Tensor 的單向依賴性: 作者清楚解釋了 Attention 機制中,Key 和 Value 向量只依賴前面的 Token,這是快取在數學上能夠成立的根本原因。這也是為什麼靜態內容「必須」放在最頂端的原因。
- Compaction (上下文壓縮) 的正確姿勢: 當 Context 達到上限時,不要刪改原本對話歷史 (這會破壞 Hash)。正確作法是:保持原本的 Prefix 與對話,在最後加上一句「請壓縮以上內容」,將壓縮結果作為新對話的開頭,這樣壓縮的指令本身也能享受到前綴快取的折扣。
隱形假設與邊界
- 隱形假設:
- 你使用的 LLM Provider (如 Anthropic) 在 API 層面支援並啟用了 Prompt Caching 功能,且你發送請求的頻率高於快取的存活時間 (TTL,通常為 5-60 分鐘)。
- 邊界條件:
- 如果任務是大量不相關的單次查詢 (Zero-shot query),且沒有共用的超大系統提示詞,則 Caching 的效益不高,甚至可能因為 Write 費用較高而增加成本。
ROUND 3: SOUL | 靈魂提取
「還能怎麼用」
- 知識連接: 本篇探討的 Context 邊界管理,完美解釋了《20 Claude Skills》中為什麼要把 Persona 和 Rules 寫死成模板。那些固化的模板就是為了成為高命中率的 Static Prefix。同時也呼應了《Goal Engineering》中,為何 Goal+Rider 要作為一個穩定不變的文件被頻繁讀取。
- 行動觸發: 立刻檢查你程式碼中組合 Prompt 的邏輯。確保
System Prompt、Tools[]、Reference Docs的順序永遠是鎖死的。把所有動態生成的變數 (如當前時間、使用者 ID) 全部移到 Prompt 的最尾端 (Dynamic Tail)。
從 I/O 成本到運算狀態的持久化 (Architectural Deep Dive)
前言
這篇文章用極度清晰的邏輯,揭開了 AI Infra 層面最重要的一項優化技術:KV Caching。對於架構師而言,Prompt Caching 不是一個 API 開關,而是一種約束整個 Agent 系統生命週期的架構紀律 (Architectural Discipline)。
核心架構洞察
1. 記憶體 vs 算力的經濟學套利
Anthropic 針對 Cache Read 收取 10% 費用,這反映了硬體層面的現實:
- Prefill 階段是 Compute-bound (卡在 GPU 算力矩陣相乘)。
- Decode 階段是 Memory-bound (卡在 VRAM 頻寬傳輸)。 當我們利用快取跳過 Prefill 時,我們實際上是在替 LLM 營運商節省最昂貴的 GPU 算力。這套定價模型鼓勵開發者將「架構」設計得更符合底層硬體的物理特性。
2. State Management 的重新定義 (Immutable Prefix)
在傳統 Web 開發中,我們習慣在 Middleware 動態修改 Request Context。但在 Prompt Caching 架構下,這是致命的反模式 (Anti-pattern)。
- 靜態前綴必須是不可變的 (Immutable)。
- 這要求開發者將 Prompt 視為某種 Append-only Log (只能附加的日誌)。你不能去修改前面的舊狀態,只能在尾部新增指令 (例如:加一個 tag 提醒系統) 來覆寫前面的行為。這與 Event Sourcing (事件溯源) 架構的理念完全一致。
3. Agentic Routing 與 Context Isolation
文章中 Claude Code 的案例展示了高階的 Multi-Agent 架構:
Explore Subagent探索完的龐大日誌 (Log),並沒有直接塞回給Plan Subagent。- 系統強制做了一次摘要 (Summary),只把精華塞進 Dynamic Tail。
- 如果放任 Dynamic Tail 無限增長,不僅會超出 Context Window,還會降低 Cache Hit 的邊際效益。在微服務中,我們不能把整個 DB 丟給下一個服務;在 Agent 中,我們不能把整個對話紀錄丟給下一個 Agent。 這印證了第一篇《企業級 Agent 構建指南》中提到的「傳遞結論,不傳遞過程」的黃金法則。
總結
不會利用 Prompt Caching 的開發者,是在用蠻力付費。未來的 LLM 應用架構,必然圍繞著「極致擴展的 Static Prefix (百萬 Token 級別)」與「嚴格修剪的 Dynamic Tail」來設計。這不僅是成本優化,更是解鎖長時間自主運作 Agent 的技術基石。