Claude Code 快取命中率實測
依 2026-11-03 這一週的實測,Claude Code 使用 Claude 模型時,連續對話的快取命中率中位數是 98.1%(343 位使用者),全部請求則是 94.6%。沒命中的部分主要來自:快取過期(37%)、連續對話中的新內容(23%)、新對話(17%)。
資料週:2026-11-03 – 2026-11-09(UTC)
重點結論
- 正常值: 98.1%, 343 位使用者連續對話的中位數,中間一半在 96.9%–98.8%
- 全部請求: 94.6%, 含換帳號、過期、新對話等全部未命中
- 最大的未命中原因: 快取過期, 占未命中的 37%
- 各形態之間: 相差 1.7 個點, 命令列、桌面應用程式、桌面端本機代理
各用戶端的快取命中率多少算正常
資料週:2026-11-03 – 2026-11-09(UTC)
- 連續對話命中率(使用者中位數): 98.1%
- 中間一半使用者: 96.9%–98.8%
- 達標使用者: 343 (一週至少 20 個連續輪次)
- 全部請求的命中率: 94.6%
Claude Code 各形態的命中率
同一用戶端的命令列、IDE 擴充功能和桌面應用程式送出的請求幾乎相同,命中率也應該接近。
- 命令列: 98.2% (147)
- 桌面應用程式: 98.4% (114)
- 桌面端本機代理: 98.0% (78)
- VS Code 擴充功能: 97.8% (50)
- Agent SDK(CLI): 96.7% (43)
- Agent SDK(TypeScript): 97.8% (16)
- t3-code: 97.9% (5)
Claude Code 各版本的命中率
某個版本改動了請求前綴時,它的命中率會明顯低於其他版本;這張表在出問題的那一週就看得出來。
- 2.1.321: 97.6% (5)
- 2.1.319: 98.4% (77)
- 2.1.318: 98.3% (92)
- 2.1.317: 97.9% (133)
- 2.1.316: 98.4% (44)
- 2.1.314: 98.5% (25)
- 2.1.312: 98.0% (20)
- 2.1.311: 98.4% (13)
- 2.1.310: 97.4% (14)
- 2.1.309: 98.3% (98)
- 2.1.308: 98.0% (30)
- 2.1.302: 96.4% (7)
- 2.1.299: 97.6% (6)
- 2.1.296: 98.0% (8)
- 2.1.295: 97.6% (14)
- 2.1.292: 99.0% (5)
- 2.1.284: 97.0% (6)
- 2.1.280: 98.2% (11)
每週中位數
- 2026-09-29: 96.8% (120 位使用者)
- 2026-10-06: 97.8% (220 位使用者)
- 2026-10-13: 98.0% (256 位使用者)
- 2026-10-20: 98.0% (250 位使用者)
- 2026-10-27: 98.0% (259 位使用者)
- 2026-11-03: 98.1% (343 位使用者)
為什麼 Claude Code 快取命中率低:未命中原因拆解
本週全部輸入裡有 5.4% 沒有從快取讀取。以下按原因拆開,每一類都列出可以做的事。
- 間隔超過 5 分鐘,快取已過期: 占未命中的 37%, 約占全部輸入 2.0%
- 快取預設保留 5 分鐘,每次命中都會免費續期。如果你常常停下來超過 5 分鐘,可以設定 CLAUDE_CODE_PROMPT_CACHE_TTL=1h(v2.1.242 起支援),代價是快取寫入從輸入價的 1.25 倍變成 2 倍。
- 連續對話中的新增內容與前綴變化: 占未命中的 23%, 約占全部輸入 1.2%
- 每一輪新增的內容只能寫入、不能讀取。連接或移除 MCP 伺服器、啟用帶有 MCP 伺服器的外掛,都會改變工具定義,整個快取隨之失效。
- 新對話,或閒置超過 1 小時: 占未命中的 17%, 約占全部輸入 0.9%
- 新對話的第一筆請求,或閒置 1 小時後的請求,都只能重新寫入快取。
- 換了模型: 占未命中的 12%, 約占全部輸入 0.6%
- 每個模型有獨立快取。用 /model 切換後,下一筆請求會把整段歷史當作未命中重新讀入,即使內容完全相同也一樣。
- 平行請求(上一筆還沒結束): 占未命中的 10%, 約占全部輸入 0.5%
- 子代理和平行工具呼叫會在上一筆請求結束前送出下一筆。Claude Code 的 fork 會讀取父工作階段的快取;一般子代理有自己的系統提示和工具,各自建立快取。
- 被路由到另一個上游帳號或端點: 占未命中的 2%, 約占全部輸入 0.1%
- 提示快取存放在處理請求的那個上游帳號裡。Relay 或多帳號閘道把同一對話的下一筆請求送到另一個帳號時,整段上下文都要重新寫入。直接連線官方不會出現這一項。
命中率差幾個點,帳單差好幾倍
以 Claude Opus 5.5 官方價格計算,未命中部分按 5 分鐘快取寫入計,每百萬輸入 token 的實際成本:
- 本週中位數 98.1%: $0.29 (×1.0)
- 90%: $0.68 (×2.3)
- 80%: $1.16 (×4.0)
- 50%: $2.60 (×9.0)
Claude Code 快取多久失效(TTL)、怎麼收費
- 預設保留 5 分鐘,每次命中都會免費續期。
- 可改為 1 小時:設定 CLAUDE_CODE_PROMPT_CACHE_TTL=1h(v2.1.242 起;子代理用 CLAUDE_CODE_SUBAGENT_PROMPT_CACHE_TTL),舊版用 ENABLE_PROMPT_CACHING_1H=1。
- 快取寫入按輸入價的 1.25 倍(5 分鐘)或 2 倍(1 小時)計費;讀取一般是 0.1 倍,Opus 5.5 和 Sonnet 5.5 是 0.05 倍。
- 短於最小長度的提示不會被快取,也不會報錯:依模型在 512 到 4,096 token 之間。
如何查看 Claude Code 的快取命中率
- 在 Claude Code 裡執行 /usage:Session 區塊的 Prompt cache (main) 一行列出請求數、從快取讀取的輸入占比、未命中次數,以及快取目前是否仍有效。
- 狀態列腳本可以讀取 prompt_cache 欄位;OpenTelemetry 匯出器會依使用者和工作階段回報快取讀取與建立的 token。
- 自己算:cache_read_input_tokens ÷(input_tokens + cache_read_input_tokens + cache_creation_input_tokens)。
- 透過 Wokey 使用時,主控台的請求明細裡每筆請求都有快取讀取和快取寫入兩欄。
透過 Relay 使用時,命中率為什麼較低
- 換帳號:快取屬於上游帳號,下一筆被送到另一個帳號就要整段重寫。這是 Relay 最常見的原因,直接連線官方不會有。
- 協定轉換:Anthropic 格式和 OpenAI 格式互相轉換時,可能改動前綴或丟掉 cache_control 斷點。
- 舊版 Claude Code(v2.1.181 之前)透過自訂 Base URL 時,系統提示開頭的署名區塊每次都帶不同的 token,依請求內容做快取的閘道會全部打不中;請升級,或設定 CLAUDE_CODE_ATTRIBUTION_HEADER=0。
- 自我測試:連續送出兩筆前綴相同、超過最小快取長度的請求,第二筆的快取讀取應接近前綴長度。
Wokey 會盡量把同一對話的後續請求送往同一上游帳號。2026-10-04 至 2026-10-10,Wokey 一般使用者在 Claude Opus 5.5 上全部請求的命中率為 92.8%,同期 OpenRouter 整體為 87.8%。
怎麼測的
- 資料來自 Wokey 閘道上真實使用者的請求,每週一 05:00 UTC 統計上一週(週一至週日)。
- 用戶端依請求的 User-Agent 辨識。SDK、HTTP 函式庫和下游 Relay 送來的請求看不出真實用戶端,不列入;企業客戶也不列入。
- 連續輪次:和同一對話的上一筆請求同模型、同上游帳號,且在其結束後 5 分鐘內送出。每位使用者的命中率 = 連續輪次的快取讀取 ÷ 輸入(輸入含快取讀寫),取一週至少 20 個連續輪次的使用者的中位數。
- 每格至少 5 位達標使用者才發布;和上週相比變化超過 3 個百分點時,先人工核對再發布。
- 已知偏差:只涵蓋 Wokey 使用者;不同使用者的使用習慣差別很大;全部請求的命中率包含閘道自身的路由損失(見「被路由到另一個上游帳號」一項)。
常見問題
Claude Code 的快取命中率多少算正常?
本週 343 位使用者的連續對話命中率中位數是 98.1%,中間一半使用者在 96.9%–98.8%;把所有請求都算上是 94.6%。
為什麼我的 Claude Code 快取命中率低?
本週沒命中的部分主要來自:快取過期(37%)、連續對話中的新內容(23%)、新對話(17%)。頁面上依原因列出了對應的做法。
快取命中率低會更快用完 Claude 訂閱額度嗎?
會。依我們對 Claude 訂閱額度的實測,快取讀取幾乎不占額度,快取寫入則和未快取的輸入占用差不多。同一段上下文命中時幾乎不花額度,沒命中就要整段重新計入。各方案額度見 Claude 用量限制實測頁(/claude-usage-limits)。
cache read tokens(快取讀取 token)是什麼?
從快取讀出的那部分輸入,在 API 回應裡是 cache_read_input_tokens。長對話裡它通常占輸入的九成以上,按輸入價的 0.1 倍計費(Opus 5.5、Sonnet 5.5 是 0.05 倍);cache_creation_input_tokens 則是這次新寫入快取的部分。
改用 1 小時快取划算嗎?
大多數情況下不划算。依 Wokey 上一天的真實 Claude 流量回算,全部改用 1 小時快取後總花費淨增約 15–25%:寫入價從輸入價的 1.25 倍升到 2 倍,多付的寫入費超過了少過期省下的錢。只有經常停頓 5 到 60 分鐘、上下文又很長的用法才可能划算。
Claude Code 的快取能保留多久?
預設 5 分鐘,每次命中免費續期。設定 CLAUDE_CODE_PROMPT_CACHE_TTL=1h(v2.1.242 起)可改為 1 小時,快取寫入價從輸入價的 1.25 倍變為 2 倍。
換模型或用子代理會讓快取失效嗎?
會。每個模型有獨立快取,/model 切換後下一筆請求會整段重讀;一般子代理有自己的系統提示和工具,各自建立快取,只有 fork 會重複使用父工作階段的快取。
為什麼快取建立(cache creation)這麼貴?
快取寫入按輸入價的 1.25 倍(5 分鐘)或 2 倍(1 小時)收費。長對話的第一筆請求、換帳號或過期之後的請求要把整段上下文寫入一次,費用會明顯高於平常的輪次。
透過 Relay 使用 Claude Code 有快取嗎?
有,前提是 Relay 透傳 cache_control,並把同一對話固定在同一個上游帳號上。v2.1.181 之前的版本透過自訂 Base URL 時,要升級或設定 CLAUDE_CODE_ATTRIBUTION_HEADER=0。