<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Prompt-Caching on recca0120 技術筆記</title><link>https://recca0120.github.io/tags/prompt-caching/</link><description>Recent content in Prompt-Caching on recca0120 技術筆記</description><generator>Hugo -- gohugo.io</generator><language>zh-hant-tw</language><lastBuildDate>Mon, 13 Apr 2026 18:00:00 +0800</lastBuildDate><atom:link href="https://recca0120.github.io/tags/prompt-caching/index.xml" rel="self" type="application/rss+xml"/><item><title>Claude Code 的 session 開太久很浪費 token？一個多數人搞錯的成本模型</title><link>https://recca0120.github.io/2026/04/13/claude-code-session-cost-cache-misconception/</link><pubDate>Mon, 13 Apr 2026 18:00:00 +0800</pubDate><guid>https://recca0120.github.io/2026/04/13/claude-code-session-cost-cache-misconception/</guid><description>&lt;img src="https://recca0120.github.io/" alt="Featured image of post Claude Code 的 session 開太久很浪費 token？一個多數人搞錯的成本模型" /&gt;&lt;p&gt;身邊開發者常有這個直覺：Claude Code 的 session 開太久，context 會越滾越大，每一次對話都把前面所有歷史重送一次，token 費用也就線性疊加。結論：要省錢就勤勞 &lt;code&gt;/clear&lt;/code&gt;，每個任務開新 session。&lt;/p&gt;
&lt;p&gt;這個推論&lt;strong&gt;對了一半，錯了另一半&lt;/strong&gt;。錯的那半，是因為多數人沒把 prompt caching 算進成本模型。實際上用下來，&lt;strong&gt;頻繁 &lt;code&gt;/clear&lt;/code&gt; 可能比保持長 session 還貴&lt;/strong&gt;。&lt;/p&gt;
&lt;h2 id="累積-context-的成本是真的"&gt;&lt;a href="#%e7%b4%af%e7%a9%8d-context-%e7%9a%84%e6%88%90%e6%9c%ac%e6%98%af%e7%9c%9f%e7%9a%84" class="header-anchor"&gt;&lt;/a&gt;累積 context 的成本是真的
&lt;/h2&gt;&lt;p&gt;先說對的部分。LLM 的 API 是 stateless 的——每次 API call，整個 conversation history 都要完整重送一次。你跟 Claude 講了 10 輪對話，第 11 輪送出去的 input 就是前 10 輪的全部內容加上你這次的問題。&lt;/p&gt;
&lt;p&gt;所以單次 API call 的 input token 數，確實會隨 session 變長而線性膨脹。看到這裡很合理地會得出「session 越久越貴」的結論。&lt;/p&gt;
&lt;h2 id="但-prompt-caching-把遊戲規則改了"&gt;&lt;a href="#%e4%bd%86-prompt-caching-%e6%8a%8a%e9%81%8a%e6%88%b2%e8%a6%8f%e5%89%87%e6%94%b9%e4%ba%86" class="header-anchor"&gt;&lt;/a&gt;但 prompt caching 把遊戲規則改了
&lt;/h2&gt;&lt;p&gt;Anthropic 從 2024 年開始提供 prompt caching，Claude Code 預設就開啟。規則很簡單：&lt;strong&gt;相同前綴的內容只算 10% 的錢&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;Sonnet 4.6 的定價：&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;類型&lt;/th&gt;
 &lt;th&gt;價格（每百萬 token）&lt;/th&gt;
 &lt;th&gt;相對價&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Base input（未 cached）&lt;/td&gt;
 &lt;td&gt;$3.00&lt;/td&gt;
 &lt;td&gt;100%&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;5 分鐘 cache write&lt;/td&gt;
 &lt;td&gt;$3.75&lt;/td&gt;
 &lt;td&gt;125%&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;1 小時 cache write&lt;/td&gt;
 &lt;td&gt;$6.00&lt;/td&gt;
 &lt;td&gt;200%&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Cache read&lt;/td&gt;
 &lt;td&gt;&lt;strong&gt;$0.30&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;&lt;strong&gt;10%&lt;/strong&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Opus 更誇張，base input $5，cache read 只要 $0.50。&lt;/p&gt;
&lt;p&gt;這代表：你第一次送出一大段 context 會被寫入 cache，付寫入成本（比 base 稍貴 25%）；接下來 5 分鐘內，同樣的前綴重送一次只收 10%。會話越長、cache hit 越多次，平均單價就越低。&lt;/p&gt;
&lt;h2 id="前綴是什麼意思"&gt;&lt;a href="#%e5%89%8d%e7%b6%b4%e6%98%af%e4%bb%80%e9%ba%bc%e6%84%8f%e6%80%9d" class="header-anchor"&gt;&lt;/a&gt;「前綴」是什麼意思
&lt;/h2&gt;&lt;p&gt;理解 cache 之前先搞懂「前綴」這個詞。prompt 是一長串有順序的 token，cache 的規則是&lt;strong&gt;從開頭往下比對，一個 token 都不能差&lt;/strong&gt;，比對到哪裡就能讀到哪裡。&lt;/p&gt;
&lt;p&gt;多輪對話時每一輪都&lt;strong&gt;只往尾端追加&lt;/strong&gt;新內容，前面的歷史原封不動：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Turn 1: [system] [CLAUDE.md] [Q1]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Turn 2: [system] [CLAUDE.md] [Q1] [A1] [Q2]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↑ 跟 Turn 1 完全一樣的前綴，cache 命中 10% 價
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↑ 新的部分，寫入 cache
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Turn 3: [system] [CLAUDE.md] [Q1] [A1] [Q2] [A2] [Q3]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↑ 前面更長一段都命中
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;所以長對話在 cache 機制下&lt;strong&gt;不是劣勢而是優勢&lt;/strong&gt;——累積越多，每輪被折扣的 token 就越多。&lt;/p&gt;
&lt;p&gt;但這只對「一直往尾端加」的情境成立。如果你能&lt;strong&gt;回頭改 Turn 5 的內容&lt;/strong&gt;，Turn 5 之後的所有 token 雖然字面上沒變，cache 也全部失效——因為前綴 hash 從 Turn 5 那個位置就對不上了。這就是「前綴」的殘忍之處：中間改一個字，後面全毀。&lt;/p&gt;
&lt;p&gt;類比：git 的 commit hash chain，任何歷史 commit 動一下，後面每個 hash 都跟著變。&lt;/p&gt;
&lt;h2 id="轉議題時-cache-怎麼計價"&gt;&lt;a href="#%e8%bd%89%e8%ad%b0%e9%a1%8c%e6%99%82-cache-%e6%80%8e%e9%ba%bc%e8%a8%88%e5%83%b9" class="header-anchor"&gt;&lt;/a&gt;轉議題時 cache 怎麼計價
&lt;/h2&gt;&lt;p&gt;實務上最常忽略的情境：你跟 Claude 討論 A，做完後轉去問 B，再轉去問 C——&lt;strong&gt;如果中間沒 &lt;code&gt;/clear&lt;/code&gt;&lt;/strong&gt;，A 跟 B 的歷史會一直黏在 prompt 前綴裡，每一輪都被 10% 計費陪跑。&lt;/p&gt;
&lt;p&gt;展開看：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;討論 A（10 輪後累積 30K token）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; → A 的 30K 寫入 cache
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;轉到 B（不 clear）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Turn 11 = [A 的 30K] + [B 新問題]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↑ 30K × $0.30/M = $0.009 從 cache 讀
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;討論 B 又累積 20K
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;轉到 C（還是不 clear）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 每一輪 = [A 的 30K] + [B 的 20K] + [C 新問題]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↑ 50K 從 cache 讀 ≈ $0.015 / turn
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;C 討論 20 輪，就是額外付 20 × $0.015 = $0.30 在「運屍體」。A、B 對 C 可能毫無幫助，但你一直在為它們陪跑付錢。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;判斷該不該 &lt;code&gt;/clear&lt;/code&gt; 的原則&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;A、B、C 互相獨立&lt;/strong&gt;（早上改前端 / 下午寫 SQL / 晚上改 CI）→ 轉議題就 &lt;code&gt;/clear&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A、B、C 互相有引用&lt;/strong&gt;（A 定規格 / B 寫實作 / C 除錯 B）→ 不要 clear，歷史的 10% 很便宜也很有用&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;歷史佔比重但結論可濃縮&lt;/strong&gt;（A 是讀完 50K 的技術文件）→ clear 後用自己的話把 A 的結論貼過來當新 context&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;很多人誤以為「Claude Code 會自動判斷議題轉換、聰明地丟舊內容」。&lt;strong&gt;並不會&lt;/strong&gt;。cache 是機械性的前綴比對，它不懂語意、看不出話題切換。丟棄舊內容的決定&lt;strong&gt;完全是人類的責任&lt;/strong&gt;——要嘛手動 &lt;code&gt;/clear&lt;/code&gt;，要嘛等 auto-compact 觸發（這是看 context 使用率，不是議題）。&lt;/p&gt;
&lt;h2 id="真正決定成本的三個變數"&gt;&lt;a href="#%e7%9c%9f%e6%ad%a3%e6%b1%ba%e5%ae%9a%e6%88%90%e6%9c%ac%e7%9a%84%e4%b8%89%e5%80%8b%e8%ae%8a%e6%95%b8" class="header-anchor"&gt;&lt;/a&gt;真正決定成本的三個變數
&lt;/h2&gt;&lt;p&gt;所以成本模型不是「context 大小 × 對話次數」，而是三個更關鍵的因素：&lt;/p&gt;
&lt;h3 id="一cache-hit-rate"&gt;&lt;a href="#%e4%b8%80cache-hit-rate" class="header-anchor"&gt;&lt;/a&gt;一、cache hit rate
&lt;/h3&gt;&lt;p&gt;長 session 連續工作時，每一次 turn 的前綴都能命中前一次寫進去的 cache。假設 session 已累積 50K token，第 11 輪新增 2K 輸入：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;無 cache：51K × $3 = $0.153&lt;/li&gt;
&lt;li&gt;有 cache：50K × $0.30 + 2K × $3 = $0.021&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;差距大約 &lt;strong&gt;7 倍&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;頻繁 &lt;code&gt;/clear&lt;/code&gt; 最糟的地方&lt;/strong&gt;：每次新 session 都要重新讀 &lt;code&gt;CLAUDE.md&lt;/code&gt;、重新認識專案檔案、重新暖 cache。這些動作加總起來，可能比維持同一個 session 連續工作還貴。&lt;/p&gt;
&lt;h3 id="二cache-invalidation"&gt;&lt;a href="#%e4%ba%8ccache-invalidation" class="header-anchor"&gt;&lt;/a&gt;二、cache invalidation
&lt;/h3&gt;&lt;p&gt;cache 需要&lt;strong&gt;前綴 100% 相同&lt;/strong&gt;才會命中。下面這些動作會讓 cache 失效——有些很顯眼，有些很默默：&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;狀況&lt;/th&gt;
 &lt;th&gt;影響範圍&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;編輯第 N 輪訊息&lt;/td&gt;
 &lt;td&gt;第 N 輪之後全失效（前面還在）&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;加／拿掉 MCP tool&lt;/td&gt;
 &lt;td&gt;全段失效（tool schema 在最前面）&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;切 Sonnet → Opus&lt;/td&gt;
 &lt;td&gt;不同 model 不同 cache，等於重來&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;開關 web search、citations&lt;/td&gt;
 &lt;td&gt;system + message cache 失效&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;idle &amp;gt; 5 分鐘（TTL 過期）&lt;/td&gt;
 &lt;td&gt;cache 蒸發，下一發付 100% 重新寫入&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;觸發 auto-compact&lt;/td&gt;
 &lt;td&gt;壓縮後前綴被換成摘要，後續輪數從新前綴重暖 cache&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;/clear&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;全部歸零&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;idle 超過 5 分鐘是最容易忽略的一個——去吃個飯回來繼續打字，那一輪其實已經偷偷付了全額寫入稅，只是 UI 沒告訴你。&lt;/p&gt;
&lt;p&gt;auto-compact 的細節值得多說兩句：官方實作下，&lt;strong&gt;壓縮那一次 API call 本身&lt;/strong&gt;的前綴跟壓縮前完全相同，所以是 cache hit；真正的代價是壓縮&lt;strong&gt;之後&lt;/strong&gt;——新 session 用「摘要」取代了原本的完整歷史當前綴，從那一刻起後面每一輪都在從新前綴重暖 cache。所以結果上一樣要付重暖成本，只是機制不是「cache 被炸掉」而是「前綴被換掉」。&lt;/p&gt;
&lt;h3 id="三ttl5-分鐘1-小時"&gt;&lt;a href="#%e4%b8%89ttl5-%e5%88%86%e9%90%981-%e5%b0%8f%e6%99%82" class="header-anchor"&gt;&lt;/a&gt;三、TTL（5 分鐘／1 小時）
&lt;/h3&gt;&lt;p&gt;預設 cache TTL 是 5 分鐘。如果你中斷 5 分鐘以上才回來繼續，cache 過期，下一發第一次 call 要付全額 base input。&lt;/p&gt;
&lt;p&gt;Anthropic 另有 1 小時 TTL 選項，寫入成本變 2 倍（$6 vs $3），換更長的保存時間。用不用得到看使用節奏——斷斷續續工作、每 10-30 分鐘回來一次，可能 1h TTL 反而划算；連續工作根本不會 timeout，5m 就夠。&lt;/p&gt;
&lt;h2 id="直覺反轉什麼時候-long-session-最划算"&gt;&lt;a href="#%e7%9b%b4%e8%a6%ba%e5%8f%8d%e8%bd%89%e4%bb%80%e9%ba%bc%e6%99%82%e5%80%99-long-session-%e6%9c%80%e5%88%92%e7%ae%97" class="header-anchor"&gt;&lt;/a&gt;直覺反轉：什麼時候 long session 最划算
&lt;/h2&gt;&lt;p&gt;把上面三件事整合起來，就能得出跟「session 越久越貴」相反的結論。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Long session 最便宜的情境&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;連續工作，每次互動間隔都在 5 分鐘內&lt;/li&gt;
&lt;li&gt;不動歷史訊息、不切 model、不頻繁加減 MCP tools&lt;/li&gt;
&lt;li&gt;context 還沒逼近壓縮門檻（~155K 以下安全區）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Short session / 頻繁 clear 最貴的情境&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;每次進來都要重新讀大量 context（CLAUDE.md、多個檔案、skill 定義）&lt;/li&gt;
&lt;li&gt;每個新 session 都付一次「暖 cache 稅」&lt;/li&gt;
&lt;li&gt;完全享受不到 cache read 的 10% 折扣&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;我自己的經驗：在同一個專案上連續開發 2 小時的成本，往往比把它切成 4 個獨立 30 分鐘 session 還低，因為後者要付 4 次冷啟動。&lt;/p&gt;
&lt;h2 id="什麼時候-context-大確實是問題"&gt;&lt;a href="#%e4%bb%80%e9%ba%bc%e6%99%82%e5%80%99-context-%e5%a4%a7%e7%a2%ba%e5%af%a6%e6%98%af%e5%95%8f%e9%a1%8c" class="header-anchor"&gt;&lt;/a&gt;什麼時候 context 大&lt;strong&gt;確實&lt;/strong&gt;是問題
&lt;/h2&gt;&lt;p&gt;但這不代表 context 無限滾下去沒差。有兩個門檻會讓「context 大」從成本問題變成&lt;strong&gt;品質問題&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. 接近 context window 上限&lt;/strong&gt;（Sonnet 200K / 1M、Opus 200K）&lt;/p&gt;
&lt;p&gt;模型的注意力在 100K token 以上會開始下降，尤其是中間位置的內容（所謂 &amp;ldquo;lost in the middle&amp;rdquo; 現象）。這時候問題不是貴，而是模型&lt;strong&gt;找不到或用錯了你前面給的資訊&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. Auto-compact 觸發&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Claude Code 會在接近上限前自動壓縮。壓縮本身是一次大手術，cache 全毀，費用跳高，而且壓縮結果是摘要，細節可能丟失。&lt;/p&gt;
&lt;p&gt;所以 context 不該無限長，但該 reset 的時機是「任務結束」或「即將觸發 compact」，不是「session 開了幾小時」。&lt;/p&gt;
&lt;h2 id="實務建議"&gt;&lt;a href="#%e5%af%a6%e5%8b%99%e5%bb%ba%e8%ad%b0" class="header-anchor"&gt;&lt;/a&gt;實務建議
&lt;/h2&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;情境&lt;/th&gt;
 &lt;th&gt;建議&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;一個任務做到一半&lt;/td&gt;
 &lt;td&gt;不要 &lt;code&gt;/clear&lt;/code&gt;，continue session&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;任務做完、要開新任務&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;/clear&lt;/code&gt;，讓下個 session cache 乾淨&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;中斷超過 5 分鐘&lt;/td&gt;
 &lt;td&gt;用 &lt;code&gt;/resume&lt;/code&gt; 而不是重開新 session（前者觸發 cache TTL 失效但保留 history）&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;常開 Claude Code 又常沒事做&lt;/td&gt;
 &lt;td&gt;考慮 1h TTL，寫入 2x 但 idle 時間有保障&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Context 超過 155K&lt;/td&gt;
 &lt;td&gt;準備主動結束 session，別等 auto-compact&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;想精確算你自己的成本，推薦用 &lt;a class="link" href="https://github.com/ryoppippi/ccusage" target="_blank" rel="noopener"
 &gt;ccusage&lt;/a&gt; 或 &lt;a class="link" href="https://recca0120.github.io/2026/04/07/claude-view-mission-control/" &gt;claude-view&lt;/a&gt; 這類工具。看到 &lt;code&gt;cache_read_input_tokens&lt;/code&gt; 佔比越高，代表你越會用；&lt;code&gt;cache_creation_input_tokens&lt;/code&gt; 一直衝高而 read 不多，代表你 cache 常常失效、正在燒錢。&lt;/p&gt;
&lt;p&gt;「session 越久越浪費」是個 stateless 世代的直覺，但 prompt caching 已經把遊戲規則改掉兩年了。檢查一下自己的 Claude Code 用法，說不定你省下來的 token 費用比你想像得多。&lt;/p&gt;
&lt;h2 id="參考資源"&gt;&lt;a href="#%e5%8f%83%e8%80%83%e8%b3%87%e6%ba%90" class="header-anchor"&gt;&lt;/a&gt;參考資源
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://platform.claude.com/docs/en/build-with-claude/prompt-caching" target="_blank" rel="noopener"
 &gt;Prompt Caching — Claude API Docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://code.claude.com/docs/en/costs" target="_blank" rel="noopener"
 &gt;Manage Costs Effectively — Claude Code Docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://www.claudecodecamp.com/p/how-prompt-caching-actually-works-in-claude-code" target="_blank" rel="noopener"
 &gt;How Prompt Caching Actually Works in Claude Code — Claude Code Camp&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://www.mindstudio.ai/blog/claude-code-context-compounding-explained-2" target="_blank" rel="noopener"
 &gt;How Context Compounding Works in Claude Code — MindStudio&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/ryoppippi/ccusage" target="_blank" rel="noopener"
 &gt;ccusage — Claude Code Token Usage CLI&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>