Claude Code 省 Token 實用指南

Claude Code 每次互動都會消耗 token,而成本主要取決於上下文大小 — 上下文越大,每則訊息的 token 消耗就越高。根據官方數據,平均每位開發者每天花費約 $6 美元,90% 的使用者日花費低於 $12。

但如果你不注意管理,token 很容易就被浪費掉了。以下整理了 9 個實用技巧,幫你把額度花在刀口上。


1. 選對模型:Sonnet 優先,Opus 留給難題

Opus 的 token 消耗大約是 Sonnet 的兩倍。大多數日常 coding 任務用 Sonnet 就夠了,只有複雜的架構設計或多步推理才需要切到 Opus。

Claude Code 提供以下模型選項:

模型別名說明
sonnet使用最新的 Sonnet 模型,適合日常 coding 任務
opus使用最新的 Opus 模型,適合複雜推理任務
haiku快速且低成本,適合簡單任務
opusplan混合模式 — Plan Mode 用 Opus 推理規劃,切回執行模式自動換成 Sonnet 寫程式
TIP — opusplan 是最佳的省 token 策略

opusplan 讓你同時擁有 Opus 的推理能力和 Sonnet 的執行效率。在 Plan Mode 中 Claude 用 Opus 分析架構、規劃方案,一旦切回正常模式開始寫程式碼,就自動切換為 Sonnet,省下大量 token。

在對話中隨時用 /model 切換模型,或在啟動時指定:

claude --model opusplan

如果有用到 subagent,簡單任務可以指定 model: haiku 進一步省成本。


2. 積極管理上下文:/clear 是你的好朋友

這是最重要的一點。Claude 的上下文視窗會累積所有對話、讀取的檔案、指令輸出。當上下文塞滿時,Claude 的表現會明顯下降,而且每則訊息的 token 成本也會飆升。

  • 不同任務之間用 /clear 重置 — 不相關的上下文只是在浪費 token
  • 糾正超過兩次就重開 — 如果同一個問題你已經修正 Claude 兩次以上,上下文已經被失敗的嘗試污染了,/clear 後用更精確的 prompt 重新開始
  • 避免在一個 session 裡做不相關的事 — 典型的「廚房水槽 session」是最浪費 token 的模式

3. 善用 Auto Compact 自動壓縮

當對話接近上下文上限時,Claude Code 會自動壓縮歷史紀錄。你可以透過環境變數控制壓縮的觸發時機:

export CLAUDE_CODE_AUTO_COMPACT_WINDOW=200000

這會在上下文達到 200k token 時自動壓縮。你也可以手動執行 /compact 並給壓縮指示:

/compact 專注保留 API 變更與測試結果

CLAUDE.md 中也能設定壓縮偏好:

# 壓縮指示
壓縮時請專注保留測試輸出與程式碼變更

4. 調降延伸思考(Extended Thinking)

延伸思考預設是開啟的,對複雜的推理任務很有幫助,但每次請求可能消耗數萬個 thinking token。對於簡單任務,你可以:

  • /effort 調低運算強度
  • /config 中關閉延伸思考
  • 設定環境變數限制 thinking token 上限:
export MAX_THINKING_TOKENS=8000

5. 寫精確的 Prompt,避免漫無目的的探索

模糊的請求會讓 Claude 大範圍掃描檔案,消耗大量 token。

不好的寫法好的寫法
改善這段程式碼auth.ts 的 login function 加上輸入驗證
修 bug使用者回報 session timeout 後登入失敗,檢查 src/auth/ 的 token refresh 邏輯
加測試foo.py 寫一個測試,覆蓋使用者登出的 edge case,不要用 mock

6. 用 Subagent 隔離大量讀取操作

當 Claude 需要研究 codebase 時,會讀取大量檔案,這些全部會進到你的上下文。改用 subagent 讓它在獨立的上下文中探索,只回傳摘要:

用 subagent 調查我們的認證系統如何處理 token refresh

Subagent 會在自己的上下文視窗中工作,完成後只回傳精簡的結果,不會污染你的主對話。

跑測試、讀 log 這類輸出很長的操作,也適合丟給 subagent 處理。


7. 精簡你的 CLAUDE.md

CLAUDE.md 在每次 session 開始時都會被載入上下文。如果塞了太多內容,不但浪費 token,Claude 反而可能會忽略你真正重要的規則。

建議做法:

  • 控制在 200 行以內
  • 只放 Claude 無法從程式碼自行推斷的資訊
  • 把特定 workflow 的詳細說明搬到 Skills 裡,Skills 只在需要時才載入

對每一行問自己:「拿掉這行,Claude 會出錯嗎?」如果不會,就刪掉。


8. 用 Hooks 預處理資料,減少 Claude 需要消化的內容

與其讓 Claude 讀一個一萬行的 log 檔找錯誤,不如用 Hook 先 grep 出關鍵行再餵給它。上下文從數萬 token 降到幾百 token。

例如這個 PreToolUse Hook 會自動過濾測試輸出,只顯示失敗的部分:

#!/bin/bash
input=$(cat)
cmd=$(echo "$input" | jq -r '.tool_input.command')

if [[ "$cmd" =~ ^(npm test|pytest|go test) ]]; then
  filtered_cmd="$cmd 2>&1 | grep -A 5 -E '(FAIL|ERROR|error:)' | head -100"
  echo "{\"hookSpecificOutput\":{\"hookEventName\":\"PreToolUse\",\"permissionDecision\":\"allow\",\"updatedInput\":{\"command\":\"$filtered_cmd\"}}}"
else
  echo "{}"
fi

9. 善用 Plan Mode 避免走錯路

對複雜任務,先按 Shift + Tab 進入 Plan Mode 讓 Claude 規劃再動手。這可以避免 Claude 一頭栽進去寫了一堆程式碼後發現方向錯了,再重寫又是一大筆 token。

流程建議:

  1. 探索 — 在 Plan Mode 讓 Claude 讀相關檔案、理解結構
  2. 規劃 — 讓 Claude 列出實作計畫,你確認後再開始
  3. 實作 — 切回 Normal Mode 開始寫程式碼
  4. 驗證 — 附上測試案例讓 Claude 自我驗證,減少來回修正

快速整理

技巧省 Token 效果
改用 Sonnet消耗約 Opus 的一半
/clear 切換任務避免不相關上下文累積
Auto Compact自動壓縮過長對話
調降 Extended Thinking減少 thinking token
精確 Prompt避免大範圍檔案掃描
Subagent 隔離長輸出不進主上下文
精簡 CLAUDE.md減少每次 session 的基礎消耗
Hooks 預處理過濾冗長輸出
Plan Mode避免方向錯誤導致重工

參考資料