Claude Code越聊越笨?4個指令管好「上下文」,用量60%就該主動壓縮

博碩文化
1天前
1440次觀看

用Claude Code寫到一半,它突然忘了前面交代的規則?問題可能出在上下文快滿了。作者拆解 /context、/compact、/clear、/resume 等4個指令,教你看懂上下文用量,在對的時機壓縮或清空。本文節錄自《Claude Code全攻略》。

文/曾慶良(阿亮老師)

本文目錄(點擊可快速前往)

為什麼要管上下文?

已經學會用 /usage 看Token用量、用 /cost 看費用。但有一件事這兩個指令看不到:Claude Code的對話有「容量上限」,超過了就會開始忘東忘西。

這個容量上限叫做Context Window(上下文視窗),所有對話歷史(你的提問 + Claude的回覆 + 讀過的檔案內容)都會疊在裡面。容量越接近滿,發生的問題會越多:

上下文用量你會遇到的狀況
0–40%對話流暢,Claude記得所有細節
40–60%還沒事,但開始要留意
60–80%Claude偶爾忘記前面講過的小細節
80–90%明顯漏掉指令、忽略CLAUDE.md規則
90–100%自動壓縮觸發,回覆變短、品質下降

結論:不要等Claude變笨才處理上下文。60%就該主動行動。

上下文、對話歷史、費用的關係

很多人把這3件事搞混,先釐清:

項目是什麼用什麼指令查滿了會怎樣
上下文視窗這次對話Claude能「同時記住」的容量上限/contextClaude開始忘事
對話歷史從這次session開始累積的所有訊息滾動畫面看持續累積,不會自動消失
Token用量/費用從這次session累積的計費基礎/usage /cost撞到月費用上限

關鍵差別:

  • 上下文滿了 → 影響智慧,要靠 /compact 或 /clear 處理
  • 費用滿了 → 影響額度,要靠升級方案或省模型處理

兩件事獨立發生,要分開管。


【指令1】用 /context 查上下文佔比

啟動Claude Code,隨便聊幾句之後輸入:

/context

[模擬] /context 報表:

  Context Window Usage
╭───────────────────────────────────╮
│ ████████░░░░░░░░░░░░░░░░░░░░░░  28% │
╰───────────────────────────────────╯
Total capacity:        200,000 tokens
Used:                   56,420 tokens  (28%)
Available:             143,580 tokens  (72%)

Breakdown by source:
  • System prompt + CLAUDE.md     2,340 tokens   (1.2%)
  • User messages                14,250 tokens   (7.1%)
  • Assistant responses          18,920 tokens   (9.5%)
  • Tool results (file reads)    20,910 tokens  (10.5%)
─────────────────────────────────────
Status:  健康(建議已用量保持在 60% 內)

總容量以你的模型為準:多數模型是200K tokens,但Sonnet 5 / Fable 5已提供1M context選項——/context第一行的Total capacity才是你當下的真實上限。

Fable 5的完整脈絡規格:context window 100萬(1M)token、單次輸出上限12.8萬(128K)token、資料保留30天、不支援零資料保留(ZDR)。1M聽起來很多,但單次輸出被128K綁住——長文件產出要拆段,不能期待一次吐完。

別讓模型「自己嚇自己」提早收工。高階模型有時會在額度還很充裕時,就主動說「上下文快滿了、要不要開新對話」而中斷任務。這不是真的滿了,而是它保守過頭。你可以在CLAUDE.md補一條反制指令:

可用額度充裕時,不要因為接近上限就停手、總結或建議我開新 session,
請直接繼續完成手上的工作。

這條屬於「駕馭Fable 5的指令範本」之一,和CH05那組(防過度思考、防自作主張、診斷vs.修復、memory寫法)是同一套心法——把模型保守或雞婆的預設行為,用一句話校正回來。

重點看4個分項:

來源為什麼會大
Tool results讀檔次數多、檔案大時會迅速膨脹
Assistant responsesClaude生成大量程式碼時
User messages你貼了長文件、長日誌
System prompt + CLAUDE.md永遠都在,無法縮減

/context多久看一次?沒有硬規則,但建議跑完一個複雜任務後看一次、感覺Claude變笨時看一次。


【指令2】用 /compact 主動壓縮(60%觸發點)

當 /context 顯示60%以上,就該主動壓縮。

操作:

/compact

[模擬] /compact執行畫面:

  Compacting conversation...
Before:  142,830 tokens  (71%)
After:    38,420 tokens  (19%)
Saved:   104,410 tokens

✓ 對話歷史已壓縮成摘要,關鍵決定與檔案內容保留
✓ Claude 仍記得這次 session 做過的事,但細節已濃縮

繼續對話即可。

/compact 做了什麼?它讓Claude自己回顧整個對話,輸出一份摘要,然後用這份摘要取代原始的長對話歷史。結果是:

  • 上下文騰出空間
  • 主要工作脈絡保留
  • 細節(例如某個變數的精確命名)可能會被略掉
  • 壓縮過程本身要消耗一些Token(但通常划算)

壓縮完,馬上再跑一次/context驗證:

/context

確認已用百分比真的降下來了(例如71% → 19%)。這一步5秒鐘,能讓你確定壓縮有效,也順便體會前後差異。

何時該/compact、何時該 /clear?

情境該用
還在做同一個任務,但Claude開始迷糊/compact
同一個任務跑很久了,想保留脈絡/compact
要切換到完全無關的新任務/clear
進入第二個工作天,重新開始/clear
我把上一份工作的secret不小心貼進去了/clear(立刻清掉)


【指令3】用 /clear 徹底清空

/clear

注意:/clear 是立即執行、沒有確認畫面、不可逆。按下Enter的瞬間對話歷史就清空了。清空前如果有想保留的結論,先用 /export 把整段對話匯出成檔案再清。

清空後Claude不再記得任何先前的訊息;CLAUDE.md與已安裝的Skills / Plugins不受影響。

和 /compact 的本質差別:

  • /compact:「我把房間整理好,東西還在」
  • /clear:「我把房間清空了,換新主題」


【指令4】/resume 對話恢復

有兩種情境會用到 /resume。

情境A:你不小心關掉Claude Code視窗

重新啟動:

claude --continue

[模擬]:

✓ Resuming last session from 2 minutes ago...
✓ Restored 47 messages, 38% context

> ▌

情境B:你想回到幾天前的某次對話

/resume

[模擬]對話歷史選單:

  Recent Sessions

  [1] 2026-05-11 14:23  (47 msgs)  Flask Hello World 專案
  [2] 2026-05-10 09:51  (132 msgs) 程式碼審查與重構
  [3] 2026-05-09 17:08  (28 msgs)  CLAUDE.md 設定
  [4] 2026-05-08 11:30  (89 msgs)  Skills 開發

  ↑↓ Navigate   Enter: Resume   Esc: Cancel

選擇要恢復的對話,按Enter,Claude Code把那次的所有上下文載回來。

/resume 的價值:

  • 不需要重新貼背景資料
  • 不需要重新解釋專案脈絡
  • 跨日工作流可以自然續接

小提醒:claude --continue 是「續接最後一次」的快捷;/resume 是「進選單選哪一次」的完整版。


【進階】客製化statusline顯示上下文用量

這節是進階選作,只想入門的話可以直接跳過。下面整段程式碼你完全不用看懂——最省事的做法是把這整節複製起來丟給Claude,說「幫我照這節設定好statusline」,它會自己幫你寫好、掛上去。等你之後想深入再回來研究原理即可。

Claude Code的輸入框下方有一條statusline。它的機制是「外掛腳本」;Claude Code會把當前狀態打包成一包JSON從stdin餵給你指定的指令,你的腳本輸出什麼文字(第一行),statusline就顯示什麼。設定長這樣:

{
  "statusLine": {
    "type": "command",
    "command": "python ~/.claude/statusline.py"
  }
}

沒有format、refreshInterval這類欄位——顯示邏輯全部由你的腳本決定,這正是它強大的地方。

目標效果:

> ▌
 ~/Desktop/flask-hello |  Sonnet 5 |  ctx 已用 42%

步驟1:建立statusline腳本

把下面的跨平台Python腳本存成~/.claude/statusline.py(直接把本節整段丟給Claude請它代勞也行):

#!/usr/bin/env python3
# ~/.claude/statusline.py — 顯示「目錄 | 模型 | context 已用%」
import sys, json, os

data = json.load(sys.stdin)

# 1) 目前工作目錄(家目錄縮寫成 ~)
cwd = data.get("workspace", {}).get("current_dir") or data.get("cwd", "")
home = os.path.expanduser("~")
if cwd.startswith(home):
    cwd = "~" + cwd[len(home):]

# 2) 模型顯示名
model = data.get("model", {}).get("display_name", "?")

# 3) context 已用百分比(欄位名依版本而異,逐一嘗試;拿不到就顯示 --)
pct = None
ctx = data.get("context_window") or data.get("context") or {}
used = ctx.get("used_tokens") or ctx.get("used")
size = ctx.get("max_tokens") or ctx.get("size") or ctx.get("context_window_size")
if used and size:
    pct = round(used * 100 / size)

if pct is None:
    ctx_text = "ctx --"
else:
    color = "3[32m"                  # 綠:健康
    if pct >= 80:   color = "3[31m"  # 紅:立刻 /compact 或 /clear
    elif pct >= 60: color = "3[33m"  # 黃:準備行動
    ctx_text = f"{color}ctx 已用 {pct}%3[0m"

print(f"📁 {cwd} | 🤖 {model} | 🧠 {ctx_text}")

Claude Code傳入的JSON欄位會隨版本演進(以官方文件Status line章節為準)。想親眼看看拿到什麼,可在腳本開頭暫時加一行 open(os.path.expanduser("~/statusline_debug.json"), "w").write(json.dumps(data)) 再打開檔案研究。

步驟2:把腳本掛進settings.json

編輯 ~/.claude/settings.json,加入(或請Claude加入)本節開頭那段statusLine設定。Windows用戶把command寫成:

"command": "python \"%USERPROFILE%\\.claude\\statusline.py\""

步驟3:重啟Claude Code驗證

/exit
claude

[模擬]啟動後的statusline:

> ▌
 ~/Desktop |  Sonnet 5 |  ctx 已用 8%

聊一陣子後,已用量爬到60%會轉黃、80%轉紅——紅色就是強烈建議 /compact 或 /clear 的時刻。

圖4-1 客製化statusline成果:輸入框下方顯示「目錄|模型|ctx已用%」含變色效果
設定完成後,輸入框下方顯示目錄、模型與上下文已用百分比(圖/博碩出版《Claude Code全攻略》)


【建議】上下文管理SOP

把這套流程記下來,之後不用每次想:

任務開始
   ↓
[每次切換主任務] → /clear
   ↓
工作中⋯
   ↓
[statusline 顯示已用 60% 以下(綠)] → 繼續
[已用 60–80%(黃)] → 留意,準備收尾或 /compact
[已用 80% 以上(紅)] → 立刻 /compact 或 /clear
   ↓
任務完成
   ↓
[需要明天續接] → 直接 /exit(明天 claude --continue)
[已徹底完成] → /clear
[要切換到無關的新任務] → /clear
   ↓
明天回來
   ↓
[續上次任務] → claude --continue
[選歷史對話] → /resume → 選清單
[全新主題] → 直接 claude

節錄自:博碩《Claude Code全攻略:從一句話到部署上線,打造你的AI Agent開發團隊》/曾慶良(阿亮老師) 著

節錄自:博碩出版《Claude Code全攻略:從一句話到部署上線,打造你的AI Agent開發團隊》/曾慶良(阿亮老師) 著

將【104職場力】加入Google偏好來源

耕耘圖書超過30年,博碩文化出版社涵蓋多元主題的圖書,主打最夯趨勢IT用書外,也延伸經營原創文學小說電子書、原創漫畫閱讀,以及線上專業教學!