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 避免方向錯誤導致重工

參考資料

聊聊你的想法

有不同的做法,或遇到相似的問題?歡迎一起討論。

Email 不會公開,其他讀者看不到;僅用於回覆通知,可隨時取消。

免登入 · 送出後直接公開

留言與討論

正在載入留言…