別亂壓縮了——Claude、Codex、Gemini 都有的對話壓縮,省空間還是毀緩存?

原始來源與檔名:20260519_2026-05-19T092606+0800-别乱压缩了——Claude、Codex、Gemini 都有的对话压缩,省空间还是毁缓存?.md

來源資訊

前言/背景

在使用 LLM 進行長期對話或開發時,開發者常使用上下文壓縮指令(如 /compact/compress)來釋放 Token 空間。然而,這篇文章點出了一個隱藏陷阱:壓縮動作可能會破壞 LLM 的 Prompt 緩存(Prompt Caching)機制,導致下一輪對話必須重新計算,反而增加短期的時間延遲與成本。文章分析了不同模型供應商的緩存實作差異,並給出了何時該壓縮的具體建議。

章節詳細總結

長期對話的隱藏陷阱:精確前綴匹配

現代 LLM(如 Claude, Codex, Gemini)的緩存機制,底層是基於精確的前綴匹配 (Exact Prefix Matching)

各大平台的緩存機制差異與影響

不同平台對於「精確前綴匹配」的實作與敏感度有所不同,這直接影響了壓縮指令的破壞力:

  1. Anthropic (Claude)最嚴格
    • 要求從請求開頭到標記點之間的所有內容分毫不差(包括空格、大小寫)。
    • 需要開發者手動注入 cache_control 標記(最多四個點)。
    • 優勢:緩存命中後成本降至 1/10。
    • 壓縮影響最致命。一旦執行壓縮,緩存全部失效。
  2. OpenAI (Codex)較具彈性
    • 使用 conversation_id 作為緩存鍵 (Cache Key)。
    • 即使配置改變,它傾向於追加新訊息以保住既有緩存,而不是直接修改已有內容。
    • 自帶自動壓縮機制(達到閾值自動 compact)。
    • 壓縮影響:較小,因為系統內部已做了最佳化。
  3. Google (Gemini)最無痛
    • Gemini 2.5 以上版本預設開啟隱式緩存,開箱即用。
    • 允許手動建立緩存並設定 TTL,但門檻較高(至少需要 32k tokens)。
    • 優勢:緩存折扣約為原價的 25%。
    • 壓縮影響:相對最小。

為什麼我們仍然需要壓縮?

儘管會破壞緩存,在以下三種架構場景中,壓縮仍然是必要的:

  1. 突破硬限制 (Hard Limit):避免 Token 溢位或模型因為 Context 過長而出現「大海撈針」能力下降、胡言亂語的狀況。
  2. 降低每輪的基礎成本:即使緩存打了 1 折,若上下文累積到 500k tokens,每一輪依然要支付相當於 50k tokens 的費用。將其壓縮到 5k tokens,可以將後續每一輪的基礎成本大幅降低。
  3. 清理干擾資訊 (Garbage Collection):長時間的 Debug 過程會累積大量錯誤嘗試與廢話。壓縮等同於執行一次記憶體 GC,只保留狀態與結論,提升模型對後續問題的專注度 (Attention)。

總結與結論