最大化 Claude Code 會話價值與 Token 效率

透過提示快取降低 Token 成本

Claude Code 使用提示快取來降低重複輸入 Token 的成本。當請求以與先前請求相同的 Token 開頭時,伺服器會從快取載入狀態,而非重新計算,從而將這些 Token 的成本降低至標準輸入價格的 0.1 倍。然而,將新 Token 寫入快取的成本最高可達正常輸入價格的 2 倍。

避免快取未命中

由於快取是從請求開頭開始鍵值化,請求前綴的任何變更都會使整個後續快取失效。使用者應避免在對話中途執行以下操作,以防止產生昂貴的完整上下文重新預填充:

  • 切換模型(/model): 每個模型都維護自己的獨立快取。
  • 變更努力等級(/effort): 努力等級是快取鍵的一部分;變更它會使快取失效。
  • 切換快速模式: 啟用快速模式會改變快取鍵。應在會話開始時啟用。
  • 使用 /compact 此命令會以較短的摘要取代對話,導致先前的對話歷史不再與快取匹配。
  • 基於時間的過期: 訂閱用戶的快取在一小時後過期,API 金鑰用戶則在五分鐘後過期(除非設定了 ENABLE_PROMPT_CACHING_1H=1)。

為最小化成本,使用者應在會話開始時或在執行 /clear 命令後立即進行模型和努力等級的變更。使用 /rewind/compact 更具成本效益,因為它僅切斷對話的結尾,保留先前的快取歷史不受影響。

战略性上下文管理

每次新增的檔案讀取或命令輸出都會保留在會話的上下文中,供後續所有回合使用,從而增加每次請求的 Token 負擔。管理進入上下文的內容對於維持效能和降低成本至關重要。

優化輸入與工具結果

  • 使用 @-提及: 提及檔案(例如 @utils.test.ts)會將檔案附加至第一個請求,跳過對獨立 Read 工具呼叫的需求,以及隨之而來的回合。
  • 靜默命令旗標: 命令輸出會附加至對話中。為防止上下文過於臃腫,使用者應在 CLAUDE.md 中為常見命令加入靜默旗標(例如對 Vitest 使用 --reporter=dot),以限制返回文字的數量。
  • 限制啟動上下文: 在新會話中使用 /context 來識別不必要的載入項目。特定工作流程的指示應從 CLAUDE.md 移至僅在需要時載入的技能中,並透過 /mcp 關閉未使用的 MCP 伺服器。

管理會話長度

長會話的代價遠高於多個短會話,因為每個回合都需重新處理整個先前的歷史。使用者應在切換任務時使用 /clear,在任務早期部分完成時使用 /compact。對於使用 1M 上下文模型的使用者,可使用 /autocompact 200k 重新啟用自動壓縮安全網(需 Claude Code v2.1.221+ 版本)。

利用子代理處理雜訊任務

子代理提供了一種在獨立上下文視窗中執行任務的方式。子代理擁有自己的系統提示和工具,但不會繼承主會話的對話歷史。僅最終答案會返回至主會話,所有中間回合和工具輸出都會被丟棄。

子代理非常適合處理「雜訊」任務,例如解析大型日誌檔案,否則中間輸出會使主會話的上下文過於臃腫。使用者可明確請求子代理(例如「在子代理中處理此日誌」),或定義特定子代理設定,使用較便宜的模型(如 Haiku 或 Sonnet)進一步優化成本。

社群見解與替代工作流程

Hacker News 上的使用者提出了額外策略,以補充官方建議:

  • /handoff 工作流程: 一些使用者偏好使用 /handoff 技能建立可攜帶的上下文文件。這允許他們使用 /continue [file] 啟動新會話,有效重置快取和上下文,同時保留關鍵的專案記憶。
  • 驗證迴圈: 高效率使用者報告,讓代理撰寫測試,刪除已覆蓋的程式碼以驗證測試失敗(變「紅」),再恢復程式碼以驗證測試通過,確保測試在人工審查前具有意義。
  • 對手動優化之擔憂: 部分社群成員認為,要求使用者手動透過 /clear/compact 等命令管理快取和上下文,是一種倒退至形式語言,AI 應能自主處理這些優化。

"我發現 [/handoff] 比 /compact 或 /clear 更有用,因為上下文被保存在可攜帶的文件中,而不是與單一會話綁定……我每 20 條訊息左右這麼做,效果比長時間會話更好。"

"變更努力等級會使快取失效……努力等級難道不能僅作為解碼時的參數,僅改變 token 的機率嗎?"

高成本區域總結

优先級 區域 優化動作
最高 會話長度 頻繁使用 /clear/compact
上下文膨脹 使用 @-提及和靜默命令旗標
快取未命中 在會話開始時設定 /model/effort
啟動載入 檢查 /context 並關閉未使用的 MCP 伺服器

Sources

相關