Auto-compaction 規則衰減
Claude Code 隱藏的坑:對話太長時系統自動 compact 來節省 context window,但壓縮過程中 CLAUDE.md(專案手冊) 裡寫的規則可能會被丟掉。 Hans 實測「壓縮後 AI 對 CLAUDE.md 規則的遵守率可以降到接近 0%」——這條反 pattern 是 Handoff 接力機制 的存在理由。
衰減機制
Session 進行中:
CLAUDE.md 規則完整 → AI 遵守率 ≈ 100%
↓
對話越來越長 → 逼近 context 上限
↓
auto-compaction 觸發
↓
系統壓縮歷史訊息 → CLAUDE.md 規則被「總結掉」/ 丟失
↓
壓縮後:AI 規則遵守率 ≈ 0%(實測)
為什麼會這樣
- Compaction 是「LLM 自己做 summary」——它不知道哪些是 hard rule、哪些是日常閒聊
- CLAUDE.md 規則散在 system prompt 之外,被當成「歷史對話的一部分」一起壓
- 壓縮版本只留「對話大意」→ 細粒度的「不要 force push」「回覆用中文」這類規則就被總結沒了
實測數字
「我實測過,壓縮後 AI 對 CLAUDE.md 規則的遵守率可以降到接近 0%」 —— Hans
→ 不是「打折」,是接近歸零。等於 compaction 後 AI 失憶到不認識你的規則。
解法:Handoff 接力機制
不要寄望 compaction 保留東西——改用文件接力:
session 結束前:
AI 寫 handoff.md(做了什麼 / 還沒做什麼 / 下次要注意什麼)
↓
session 結束(規則照樣會丟)
↓
新 session 開頭:
AI 先讀 handoff.md → 100% 拿回脈絡
→ 配 CLAUDE.md(專案手冊) 加兩條規則自動觸發,見 Handoff 接力機制。
配套防禦
| 防禦 | 機制 |
|---|---|
| 新 session 重啟 | 把長 session 切短,避免逼近 compaction 閾值 |
| handoff.md 接力 | 不依賴 compaction,主動寫狀態 |
| CLAUDE.md 精簡 | 短 CLAUDE.md 即使壓也丟得少(套 CLAUDE.md 內容篩選原則) |
| 關鍵 hard rule 重提 | 高風險動作前在對話內 inline 重提規則(CLAUDE.md 4 層機制 L4) |
跟既有概念的關係
強連結
- Handoff 接力機制 — 本 rule 的對策
- CLAUDE.md(專案手冊) — 受害者
- CLAUDE.md 4 層機制 — L4 inline 規則是補救手段
- CLAUDE.md 內容篩選原則 — CLAUDE.md 越短,丟失損失越小
- 上下文壓縮 — 本 rule 是上下文壓縮機制的副作用
推斷連結
- Context Rot Zone ?? — Context Rot Zone 是 30-40 萬 token 衰退帶;compaction 通常在這之前就觸發
- Externalized Memory ?? — 規則衰減是「沒外部化」的代價
給 LLM agent 的警語
如果你(任何進入此 vault 的 LLM agent)發現自己:
- 對話超長
- 不確定 CLAUDE.md 規則是否還生效
- 連續做了多輪後規則跑掉
→ 觸發 self-check:主動 Read 一次 CLAUDE,重新對齊規則,再繼續。