觀點 · 資訊分享

Claude Code 2.1.251 讓你看見快取有沒有命中:換模型前還能先攔一下,避免悄悄多花錢

Claude Code 在 8 月 28 日釋出 2.1.251,/cost 多了一行提示快取統計,也新增換模型前後的 hook。同一版還補了 5 項跟檔案路徑、權限有關的安全修正。

發布
2026-08-29
篇幅
約 4 分鐘 · 1,769 字
結構
7 節 + 4 題常見問題
標籤
#Claude Code#Prompt Caching#Hooks#AI 開發工具
Claude Code 2.1.251 讓你看見快取有沒有命中:換模型前還能先攔一下,避免悄悄多花錢

一句話看懂:Claude Code 2.1.251 在 /cost 裡多了一行「提示快取統計」,還新增換模型前後的 hook,讓你知道錢是不是被快取失效悄悄燒掉。

Claude Code 2.1.251 重點資訊圖卡:/cost 會告訴你快取有沒有被浪費,換模型前還能先攔截

先用白話講:提示快取是什麼?

你每天請家教改作文,每次見面都得先把「作文要符合哪些規定」重講一遍,很花時間。如果家教把規定抄在筆記本上,隔天只要翻筆記本就好,省時間也省鐘點費。

提示快取(Prompt Cache)就是 AI 的這本筆記本。Claude Code 每回合都要把整段對話(你的需求、讀過的檔案、工具清單)送給模型,已經處理過的部分如果還在筆記本裡,就只要付比較低的讀取價;筆記本被丟掉,就得整段重算、重新寫入,價格明顯變貴。

問題是,筆記本有沒有被丟掉,以前你很難知道。

發生什麼事

Claude Code 在 8 月 28 日釋出 2.1.251,這個版本有三個跟「成本可視化」有關的新功能:

  • /cost 多一行快取統計:主對話收到第一次回應後,會顯示請求次數、有多少輸入來自快取、失誤幾次,以及快取現在是熱的還是冷的
  • 換模型的 hook:新增 PreModelSwitch 與 PostModelSwitch 兩種事件,換模型前可以阻擋或要求確認,換完後可以記錄
  • 恢復舊對話時的提示:SessionStart hook 會拿到對話閒置了多久、快取可能已經過期、預估重新寫入快取要多少美元

官方文件裡的範例大概長這樣:「14 個請求、91% 的輸入來自快取、2 次失誤、快取還是熱的」。一看就知道有沒有在浪費。

這跟你的錢包有什麼關係?

情況 快取 對成本的影響
一路連續工作 熱的 大部分輸入用讀取價
離開太久再回來 冷了 整段重新寫入
中途換模型 用不上 整段重送給新模型

換模型是最容易踩的坑:看到「這題換個更強的模型試試」就切過去,結果整段對話得重新處理。PreModelSwitch 就是在這一步幫你多一道關卡。

給開發者的技術細節

PreModelSwitch 支援以模型名稱比對,用結束碼 2 表示攔下:

{
  "hooks": {
    "PreModelSwitch": [
      {
        "matcher": "claude-opus-4-6",
        "hooks": [{ "type": "command", "command": "./block-model.sh" }]
      }
    ]
  }
}
  • 官方文件寫明,/model、模型選單、設定頁、開啟快速模式造成的換模型都會觸發;自動回退模型、恢復對話時還原模型則只會觸發 PostModelSwitch
  • 狀態列腳本也能讀到 prompt_cache 物件,自己做儀表板
  • 同一版修了 5 項檔案路徑與權限相關的問題,例如檔案工具在權限檢查通過後,符號連結被調包仍可能讀寫核准範圍外的位置;外掛指令路徑超出外掛資料夾現在會被拒絕;專案設定檔不能再開啟詳細追蹤或原始 API 內容記錄

我的看法

接案時我最常遇到的狀況,就是一個任務做到一半被叫去處理別的事,回來繼續聊,這時快取多半已經冷了。以前只能憑感覺說「今天好像特別貴」,現在 /cost 會直接告訴你冷了幾次,才有辦法調整習慣,例如長任務先收尾再離開、少在對話中途切換模型。

換模型攔截 hook 我覺得適合團隊共用的專案:把「某個太貴或已淘汰的模型」寫進專案設定,大家就不會手滑切過去。個人用的話,先看 /cost 兩三天,確定真的有問題再加就好。

名詞小辭典

  • 提示快取(Prompt Cache):把已經處理過的對話內容暫存起來,下次沿用,價格比重新處理便宜。
  • Hook:在特定時刻自動執行的小程式,例如換模型之前先檢查一下。
  • 符號連結(Symlink):檔案系統裡的「捷徑」,指向另一個位置的檔案或資料夾。
  • 子代理(Subagent):主 AI 派出去做單一小任務的幫手。

資料來源

常見問題

提示快取為什麼跟成本有關?
Claude 每次回答都要把整段對話重新送過去。已經處理過的內容如果還留在快取,只要用比較低的價格讀取;快取失效就得重新處理、重新寫入,花費會明顯變高。
/cost 的快取那一行在看什麼?
它列出主對話的請求數、有多少輸入來自快取、失誤(本來該命中卻重算)幾次,以及快取現在是熱的還是冷的。這一行只算主對話,不含子代理。
換模型為什麼要攔?
換了模型之後,整段對話得重新送給新模型,原本的快取用不上。官方文件說 PreModelSwitch 的輸入裡包含重送對話的成本資訊,可以在切換前顯示給你看,或直接拒絕。
我需要馬上更新嗎?
如果你的專案會放在有符號連結的資料夾,或是用外掛與專案設定檔,建議更新。這一版修了符號連結調包、外掛指令路徑超出外掛資料夾等問題。
LINE