Bible Network Crypto DeFi Onchain RWA AI Agent Stablecoin Chain SAFU CryptoTax DeFAI AGI Claude Me Claude Skill Claude Design Claude Cowork
獨立知識媒體
與任何項目無關聯
學會用 Claude,每件事都做得更好
claudeskill-me.com
最新
升級 Claude Code 2.1.299 前先檢查:MCP allow 規則變嚴、Skill 名稱字元被拒、UserPromptSubmit hook 改成先跑  ·  Claude Code 新增閒置壓縮:200K tokens 以上的對話閒置約 54 分鐘就自動壓縮——省的是快取費用,丟的可能是細節  ·  Fork 子代理不再從空白開始、直接繼承整段對話——v2.1.302 起在 VS Code、桌面版與 headless 預設開啟  ·  claude plugin eval 解析:用「有裝/沒裝」的差值 Δ 判斷 Skill 到底有沒有用,以及為什麼 Δ 不會讓 CI 失敗  ·  Claude Code 的 hook 預設是 fail-open:腳本不存在、逾時、exit 1,守門員都會放行——v2.1.295 的 onFailure: "block" 怎麼用  ·  Claude Haiku 5.5 成為 Claude Code 預設 Haiku:輸入價降到 $0.10,但跨過 100K 門檻整筆請求貴五倍
news

Claude Code 新增閒置壓縮:200K tokens 以上的對話閒置約 54 分鐘就自動壓縮——省的是快取費用,丟的可能是細節

30 秒速讀
閒置壓縮的計時器不懂你的工作內容:你去吃飯,和你剛做完一個重要決定才離開,對它來說沒有差別。

完整解析 +
01 · 為什麼發生?

我用的是 API key,這個功能會幫我省到錢嗎?

多半不會觸發。API key 預設的 prompt cache 壽命是五分鐘,而閒置壓縮需要一小時 TTL 才會啟動計時器。要啟用得自己設 "promptCacheTtl": "1h",但一小時快取的寫入是基本輸入價的 2 倍,五分鐘是 1.25 倍,短時間的使用反而可能虧。所以不要預設它在幫你省錢,先用 claude -p "Reply with the single word: ok" --output-format json 看寫入落在哪一種 TTL。

02 · 運作原理是什麼?

我常把長 session 放著去吃飯,要不要關掉?

看工作的性質。以檔案為主的工作(寫程式、維護),摘要加上重新讀取的檔案通常帶得走大部分重點,開著問題不大;如果工作本身活在對話裡(設計討論、確切的指示、依賴檔案留在 context 裡的 orchestrator 流程),建議關掉或調高門檻。這是 nardit 的看法,不是實測。另一個保險做法是把必須保留的內容放進專案根目錄的 CLAUDE.md、沒有路徑限制的規則,或針對 compact 的 SessionStart hook,因為只在對話中說過的決定,摘要時會被改寫。

03 · 如何應用

怎麼確認它真的有跑,而不是我多想了?

回到 session 時看有沒有「Compacted while idle, before the prompt cache expired」的通知;/usage 的「Prompt cache (main)」一行會顯示命中率、未命中次數與快取是否還暖,以及上次未命中的可能原因。有開 OpenTelemetry 的話,看 claude_code.api_request 事件裡 query_source 為 compact、cache_read_tokens 很大的那一筆。如果回來第一則訊息出現很大的一小時快取寫入,可能代表錯過了時間窗,但換模型或前綴改變也會留下一樣的特徵,要先排除。

04 · 我該怎麼做?

我不是工程師,只負責看團隊的 AI 工具費用,這件事該注意什麼?

先問團隊用的是訂閱方案還是 API key。訂閱方案下,這個功能省的是額度,不是金額,而且 Anthropic 沒公布額度怎麼計算快取讀寫,所以很難用美元估算。API key 預設的快取壽命是五分鐘,功能多半不會啟動,不要把它列進預期的節省。另外它是預設開啟的行為變更,如果有人抱怨 AI 「忘了之前交代的細節」,這是可以先檢查的原因之一。

完整內容 +

2026 年 10 月 14 日發布的 Claude Code v2.1.299 在更新說明裡加了一項新行為:在終端機中,超過 200K tokens 的對話如果閒置約 54 分鐘,會在一小時的 prompt cache 過期前自動壓縮,讓你回來後的第一句話不必重新處理整段對話。10 月 16 日的 v2.1.302 又在 /config 加了「Idle compaction」開關,並讓壓縮後顯示的通知說明如何關閉。這是一個預設開啟、直接影響帳單與context內容的變更。

為什麼是 54 分鐘

目的是搶在prompt cache過期之前壓縮:這時摘要請求讀到的是還在快取裡的前綴,用的是便宜的 cache 讀取價,而不是冷啟動時的整段重寫。至於 54 這個數字,Developers Digest 引述 GitHub issue 裡一位留言者的二進位分析:計時器只在快取壽命為一小時時才會啟動,並在壽命走到約 90% 時觸發,60 分鐘的 90% 就是 54 分鐘。這是社群回報,不是官方說明,該文作者也沒有逐一驗證各種方案的快取行為。

五個條件要同時成立

max.nardit.com 的整理(引用設定參考與 prompt caching 文件)列出它真正會觸發的條件:

  • 互動式終端機 session:claude -p 與 Agent SDK 不會觸發。
  • 使用一小時 TTL:訂閱方案在方案用量內,主對話是一小時;API key、用量額度或雲端供應商預設只有五分鐘,所以通常不會觸發,要自己設 "promptCacheTtl": "1h"。一小時快取的寫入計價是基本輸入價的 2 倍,五分鐘是 1.25 倍,文件提醒短時間的使用反而可能虧。
  • 功能旗標連得到:設了 DISABLE_GROWTHBOOK=1 或 CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC 會關掉它。
  • 達到門檻:預設 200,000 tokens,用 CLAUDE_CODE_IDLE_COMPACT_MIN_TOKENS 調整;低於 100,000 的值會被提高到 100,000。
  • 機器醒著約 54 分鐘:筆電中途睡眠就不會壓縮。

省多少錢:作者估算與單一使用者數字

官方定價是 cache 讀取為基本輸入價的 0.1 倍(Opus 5.5 與 Sonnet 5.5 為 0.05 倍),五分鐘寫入 1.25 倍,一小時寫入 2 倍。nardit 的估算(作者推算,不是文件)是:200K tokens 的對話在 Opus 5.5 上,閒置壓縮的讀取約為 10K 個基本輸入單位,冷啟動回來要重寫約 400K 單位,光前綴就差約 40 倍。但真正省下的比這小,因為還要付摘要的輸出 tokens,以及重建 context(摘要、指示、還原的檔案與 skill)的成本。

Developers Digest 轉述 GitHub issue 的一位使用者資料:約 740K tokens 的 session 在 API key 上,冷啟動喚醒一次約 $9.25,暖快取壓縮約 $0.19;142 次壓縮後的內容約為原本的 20%。這是單一使用者的量測,不是基準測試。在訂閱制上,省的是額度而不是美元,而 Anthropic 沒有公布額度如何衡量 cache 讀取與寫入。

壓縮會保留什麼、丟掉什麼

依 nardit 整理的文件內容,摘要會保留:請求與意圖、關鍵技術概念、檢視或修改過的檔案(含重要片段)、錯誤與修正、待辦事項與目前進度。完整的工具輸出與中間推理會從工作 context 移除,但磁碟上的 session 記錄還在。壓縮後會重新載入:專案根目錄的 CLAUDE.md、沒有路徑限制的規則與 auto memory、最多五個最近修改的檔案(超過 5,000 tokens 的只回傳路徑)、呼叫過的 skill 內容(每個上限 5,000 tokens,總共 25,000,最舊的先丟),以及符合 compact 來源的 SessionStart hook 輸出。帶 paths: frontmatter 的規則和巢狀 CLAUDE.md 則不會自動重載,要等 Claude 再碰到相符的檔案。背景指令在壓縮期間繼續執行。

社群的抱怨集中在「靜默丟失細節」:一份 bug 回報說摘要取代了確切的指示、決策理由與進行中的狀態,沒有任何警告;另一位跑 orchestrator 流程的人說檔案沒有被重新讀取,導致流程出錯。

怎麼關、怎麼調、怎麼確認有跑

  • "idleCompaction": false 只關閉閒置壓縮,可以放在任何 settings 檔,包括專案的 .claude/settings.local.json;v2.1.302 起也能在 /config 切換。
  • DISABLE_AUTO_COMPACT=1 會連一般的自動壓縮一起關掉,只剩手動 /compact。
  • 調高 CLAUDE_CODE_IDLE_COMPACT_MIN_TOKENS 可以讓功能只在更大的 session 發生。
  • 回來時看到「Compacted while idle, before the prompt cache expired」通知,代表它跑過;/usage 的「Prompt cache (main)」一行可看命中率;開 OpenTelemetry 的話,找 query_source 為 compact 的 api_request 事件。

還不確定的部分

文件沒說執行中的背景指令或待觸發的排程喚醒,會不會推遲閒置計時器;也沒說 claude --resume 在閒置壓縮後的行為。更新說明寫兩個設定都需要 v2.1.290 以上,但功能是在 v2.1.299 才出現,nardit 建議把 2.1.299 當成最低版本。另外 Developers Digest 提到,有 GitHub issue 把這個行為放在 2.1.286 當成靜默預設,這解釋了為什麼有些人早就遇過,但屬於回報,未經驗證。

資料來源:Claude Code changelog - Claude Code Docs、Claude Code idle compaction: idleCompaction, CLAUDE_CODE_IDLE_COMPACT_MIN_TOKENS and the 1-hour prompt cache - max.nardit.com、Claude Code Idle Compaction: What It Does and How to Turn It Off - Developers Digest、Claude Code 2.1.299 - idle compaction saves long sessions - ai-tldr.dev
提問
請至少輸入 10 個字
相關文章
為什麼一句「hi」就吃掉 2 萬多個 Token?拆解 Claude Code 的固定啟動開銷
advanced · 09/05
執行 /compact 之後,Claude 突然不會用 Skill 了?不是故障,官方設計就是不會自動補回來
beginners · 10/02
Subagent 不是更聰明的小 Claude——它解決的是隔離問題,不是能力問題
advanced · 08/31
Fork 子代理不再從空白開始、直接繼承整段對話——v2.1.302 起在 VS Code、桌面版與 headless 預設開啟
advanced · 10/19
相關新聞
更多相關主題