讓 Claude Code 的 prompt cache 不再「放著就冷掉」——開源小工具 cwarm

讓 Claude Code 的 prompt cache 不再「放著就冷掉」——開源小工具 cwarm

用過 Claude Code 的人應該都有這經驗:寫到一半離開去開會、回來繼續,結果它好像「重新讀了一遍整個對話」才回你——這就是 prompt cache 過期(cache miss)。

為什麼會這樣?

Anthropic 的 prompt cache 有存活時間(TTL):Max 約 1 小時、Pro 約 5 分鐘。閒置超過就過期,下次互動得重付一次「讀完整上下文」的成本。Mac/Linux 的人可以用 tmux 之類的方式定時戳一下保溫,但 Windows 原生(Git Bash)沒有這條路——這就是我寫 cwarm 的起點。

cwarm 做什麼?

它把 claude 跑在一個自己控制的 PTY(虛擬終端)裡,當你閒置超過方案門檻時,自動注入一個極小的 keepalive 讓 cache 不過期。重點是——注入是行程內部的寫入,跟視窗狀態無關:你把視窗縮到工作列、切到別的桌面、它在背景,照樣保溫;只有真正關掉視窗才會停。

一個有趣的技術坑

一開始我想「直接對終端視窗送鍵盤訊息不就好了?」結果 mintty(Git Bash 的終端)跟 PuTTY 一樣,完全無視外部合成的鍵盤訊息PostMessageSendMessage/甚至 WM_PASTE 實測全不通),而 SendInput 又得搶焦點。最後的結論跟 tmux/expect/VS Code 終端用的是同一招——你得自己當那個 PTY 的主人,才能乾淨地把輸入餵進去。

特點

  • 跨平台:Windows / macOS / Linux,不需要 tmux(已在 Windows 與 Raspberry Pi 4 / Linux aarch64 實測)。
  • 自動依方案調門檻:Max 約 58 分、Pro 約 4 分才注入,且有冷卻。
  • 焦點/縮小/背景都照常保溫
  • 選配「cache 倒數」statusline:會包裝你現有的、不偷蓋、可一鍵還原。

安裝 & 使用

npm i -g claude-cache-keepalive
cwarm            # 取代你平常打的 claude(參數原樣轉給 claude)

誠實說明

保溫=閒置時送一則小訊息(hi),會用到一點點你的方案額度、並在對話留下 hi 紀錄。它只在長時間閒置後才觸發、且有冷卻,屬保守、明確 opt-in 的設計。不接受這個取捨的人就別用——我把這段也明白寫在 README 裡。

開源(MIT)

如果它幫你省下幾次 cache miss,給顆 ⭐ 我會很開心。也歡迎 PR 跟 macOS/Linux 的回報。

留言

這個網誌中的熱門文章

架站資源整理清單

這次多機聯防的程式筆記