Context Rot Zone(上下文衰退帶)

Boris Cherny 命名的概念:Claude Code 的 context window 雖然有 1M tokens,但到了 30–40 萬 tokens 模型表現就開始下降。30 萬以上 = 衰退帶,不應該讓對話進去。

為什麼會衰退

LLM 的注意力(attention)對長序列不是均勻分配——序列越長:

  1. 早期內容的 attention weight 越稀薄 → 規則被「忘記」
  2. 跨段資訊整合難度上升 → 推理連貫性掉
  3. 訓練資料中 800k+ token 樣本本就稀少 → 模型沒充分學過此區段

Boris 觀察的實務數字:

Context 用量Claude 表現
< 200k全速、品質穩定
200k–300k開始有失準苗頭,但通常不易察覺
300k–400k(衰退帶起點)規則被忽略、重複建議已否決方案、忘記前文重要決策
400k+顯著失準,建議強制 上下文壓縮
接近 1M即使 context window 還沒滿,品質已不可信

怎麼避免進衰退帶

自動壓縮閾值前置

預設的自動 上下文壓縮 觸發點通常是 context window 接近滿,但那時已在衰退帶。Boris 建議在還清醒的時候就強制壓:

CLAUDE_CODE_AUTO_COMPACT_WINDOW=400000 claude

讓系統在 400k tokens 時就自動 /compact,而非等到 800k+。

主動 /compact

任務告一段落 → 主動 /compact,由你決定切點,比讓自動觸發更乾淨。

主動 /clear + 摘要

要切到全新任務 → 不用 /compact(會帶舊雜訊),改 /clear 從頭開始,先寫一段 context 摘要再開工。

主動 /rewind

走錯方向時,不要用糾正對話覆蓋——糾正本身會佔 context:

按 Esc Esc(或 /rewind)
→ 跳回前一個訊息
→ 之後對話全丟

Boris 的進階做法:先叫 Claude 摘要目前進度 → /rewind 回去 → 帶著摘要重新開始。

衰退徵兆

當 Claude 突然:

  • 忘記某個你說過的規範(CLAUDE.md 紅線突然破功)
  • 提問「你之前提到的 X 是什麼?」
  • 重複建議已被你否決的方案
  • 文字風格漂移(突然開始用英文回中文問題、變得冗長)
  • 工具呼叫順序混亂

→ 你已經在衰退帶。立即 /compact/clear,不要硬撐。

上下文壓縮 的關係

概念角色
本概念(衰退帶)問題:對話走進壞掉的區段
上下文壓縮解法:用 /compact / /clear / /rewind 把對話拉回安全區

Memory 記憶功能 的差別

Context Rot ZoneMemory
作用單次對話內的失準跨對話的記憶
解法壓縮 / 清空 / 倒帶自動記住個人事實
Boris 用法CLAUDE_CODE_AUTO_COMPACT_WINDOW=400000不在 13 條心法中

對 PAM 工作場景

Use Case 1:4 小時長 debug

9:00  開始 debug 等第計算 bug
12:00 context 已 350k → 進入衰退帶(你沒察覺)
13:00 Claude 開始重複建議昨天試過的方法 → 浪費 1 小時

→ 預防:啟動時就 CLAUDE_CODE_AUTO_COMPACT_WINDOW=400000

Use Case 2:跨多檔重構

重構 GradingService → context 380k → Claude 突然忘了等第天花板規則
→ Hooks 沒抓到 → 進 PR 才被 reviewer 發現

→ 預防:Hooks PostCompact 重貼紅線;達 350k 主動 /compact

反模式

  • 「context window 還有空間就繼續」 → 空間 ≠ 品質
  • /dangerously-skip-permissions 一路衝 → 衰退帶 + 跳權限 = 災難放大器
  • 發現失準才壓縮 → 壓縮會帶著錯誤的摘要繼續走

相關概念

強連結(原文明確提及)

推斷連結(LLM 認為相關,待確認)

深入閱讀

← 回到 wiki