SKILL.md
readonlyread-only
name
strategic-compact
description
在邏輯間隔建議手動壓縮上下文,以保留任務階段間的脈絡,而非依賴任意自動壓縮。
Strategic Compact 技能
在工作流程的關鍵節點建議手動執行 /compact,而非依賴任意的自動壓縮。
何時啟用
- 執行長時間對話,接近上下文限制(200K+ tokens)
- 處理多階段任務(研究 → 規劃 → 實作 → 測試)
- 在同一對話中切換不相關的任務
- 完成重大里程碑後開始新工作
- 回應變慢或變得不連貫(上下文壓力)
為什麼要策略性壓縮?
自動壓縮會在任意時間點觸發:
- 經常在任務中途觸發,遺失重要脈絡
- 無法感知邏輯任務邊界
- 可能中斷複雜的多步驟操作
在邏輯邊界進行策略性壓縮:
- 探索後、執行前 — 壓縮研究脈絡,保留實作計畫
- 完成里程碑後 — 為下一階段重新開始
- 重大脈絡轉換前 — 清除探索脈絡,準備不同任務
運作方式
suggest-compact.js 腳本在 PreToolUse(Edit/Write)時執行,結合兩個訊號:
- 上下文大小(主要) — 從對話記錄(hook payload 中的
transcript_path)讀取最新的usage記錄,並加總input_tokens + cache_read_input_tokens + cache_creation_input_tokens(該輪次的真實上下文大小)。根據視窗大小調整閾值建議/compact— 200k 視窗為 160k tokens,1M 視窗為 250k tokens(從[1m]模型標記偵測,或當觀察到的 tokens 已超過 200k 時推斷)— 並在上下文每增加 60k tokens 後再次提醒 - 工具呼叫次數(次要) — 計算對話中的工具呼叫次數;在可設定的閾值(預設:50 次)時建議,之後每 25 次再建議
僅工具呼叫次數是視窗壓力的弱指標:少數大型檔案讀取或 MCP 回應可能在極少呼叫次數下填滿視窗,而許多小型呼叫可能在視窗幾乎為空時就超過 50 次。上下文大小訊號會在真正重要時觸發。
Hook 設定
以插件安裝? 無需設定。插件的 hooks/hooks.json 已註冊 suggest-compact.js(hook id pre:edit-write:suggest-compact,在 standard 和 strict hook 設定檔中啟用)。請勿將下方區塊複製到 ~/.claude/settings.json — 插件安裝時 ~/.claude/scripts/ 不存在,且重複的插件 hook 會導致雙重執行。
若手動安裝(./install.sh),請加入 ~/.claude/settings.json:
{
"hooks": {
"PreToolUse": [
{
"matcher": "Edit",
"hooks": [{ "type": "command", "command": "node ~/.claude/scripts/hooks/suggest-compact.js" }]
},
{
"matcher": "Write",
"hooks": [{ "type": "command", "command": "node ~/.claude/scripts/hooks/suggest-compact.js" }]
}
]
}
}
設定
環境變數:
COMPACT_THRESHOLD— 首次建議前的工具呼叫次數(預設:50)COMPACT_CONTEXT_THRESHOLD— 觸發上下文大小建議的 tokens 數(預設:200k 視窗為 160000,1M 視窗為 250000;設為0停用上下文訊號)COMPACT_CONTEXT_INTERVAL— 建議重複前的額外 tokens 數(預設:60000)COMPACT_STATE_TTL_DAYS— 暫存目錄中過期的每對話狀態檔案保留天數(預設:14)
壓縮決策指南
使用此表格決定何時壓縮:
| 階段轉換 | 壓縮? | 原因 |
|---|---|---|
| 研究 → 規劃 | 是 | 研究脈絡龐大;規劃是濃縮產出 |
| 規劃 → 實作 | 是 | 規劃已寫入 TodoWrite 或檔案;釋放脈絡給程式碼 |
| 實作 → 測試 | 可能 | 若測試參考近期程式碼則保留;若轉移焦點則壓縮 |
| 除錯 → 下個功能 | 是 | 除錯追蹤會污染不相關工作的脈絡 |
| 實作中途 | 否 | 遺失變數名稱、檔案路徑和部分狀態的代價很高 |
| 失敗方法後 | 是 | 嘗試新方法前清除死胡同的推理 |
壓縮後保留的內容
了解哪些內容會保留,讓您有信心壓縮:
| 保留 | 遺失 |
|---|---|
| CLAUDE.md 指令 | 中間推理與分析 |
| TodoWrite 任務清單 | 先前讀取的檔案內容 |
記憶檔案(~/.claude/memory/) |
多步驟對話脈絡 |
| Git 狀態(提交、分支) | 工具呼叫歷史與計數 |
| 磁碟上的檔案 | 口頭表達的細微使用者偏好 |
最佳實踐
- 規劃後壓縮 — 一旦規劃在 TodoWrite 中定案,壓縮以重新開始
- 除錯後壓縮 — 繼續前清除錯誤解析脈絡
- 實作中途不要壓縮 — 保留相關變更的脈絡
- 閱讀建議 — hook 告訴您何時,您決定是否
- 壓縮前先寫入 — 將重要脈絡儲存到檔案或記憶後再壓縮
- 使用
/compact加上摘要 — 加入自訂訊息:/compact Focus on implementing auth middleware next
Token 最佳化模式
觸發表懶載入
與其在對話開始時載入完整技能內容,不如使用觸發表將關鍵字對應到技能路徑。技能僅在觸發時載入,可減少 50% 以上的基礎脈絡:
| 觸發詞 | 技能 | 載入時機 |
|---|---|---|
| "test", "tdd", "coverage" | tdd-workflow | 使用者提到測試 |
| "security", "auth", "xss" | security-review | 安全相關工作 |
| "deploy", "ci/cd" | deployment-patterns | 部署脈絡 |
脈絡組成感知
監控哪些內容消耗您的脈絡視窗:
- CLAUDE.md 檔案 — 總是載入,保持精簡
- 已載入技能 — 每個技能增加 1-5K tokens
- 對話歷史 — 每次交流後增長
- 工具結果 — 檔案讀取、搜尋結果增加體積
重複指令偵測
常見的重複脈絡來源:
- 同時存在於
~/.claude/rules/和專案.claude/rules/的相同規則 - 重複 CLAUDE.md 指令的技能
- 多個技能涵蓋重疊領域
脈絡最佳化工具
token-optimizerMCP — 透過內容去重自動減少 95%+ tokenscontext-mode— 脈絡虛擬化(已展示從 315KB 降至 5.4KB)
相關資源
- The Longform Guide — Token 最佳化章節
- 記憶持久化 hooks — 用於在壓縮後仍保留的狀態
continuous-learning技能 — 在對話結束前提取模式






