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 API 費用試算依自己的用量計算

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 之間。

Anthropic 提示快取文件 · Claude Code 提示快取 · Claude Code 環境變數

如何查看 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 使用時,主控台的請求明細裡每筆請求都有快取讀取和快取寫入兩欄。

Claude Code 用量與費用

透過 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%。

對比 OpenRouter 的快取命中率 · 即時資料:Wokey 公開快取命中率 API(近 7 天)

怎麼測的

  • 資料來自 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。