strategic-compact

strategic-compact

熱門

在邏輯間隔建議手動壓縮上下文,以保留任務階段間的脈絡,而非依賴任意自動壓縮。

23萬星標
3.5萬分支
更新於 2026/7/14
SKILL.md
readonlyread-only
name
strategic-compact
description

在邏輯間隔建議手動壓縮上下文,以保留任務階段間的脈絡,而非依賴任意自動壓縮。

Strategic Compact 技能

在工作流程的關鍵節點建議手動執行 /compact,而非依賴任意的自動壓縮。

何時啟用

  • 執行長時間對話,接近上下文限制(200K+ tokens)
  • 處理多階段任務(研究 → 規劃 → 實作 → 測試)
  • 在同一對話中切換不相關的任務
  • 完成重大里程碑後開始新工作
  • 回應變慢或變得不連貫(上下文壓力)

為什麼要策略性壓縮?

自動壓縮會在任意時間點觸發:

  • 經常在任務中途觸發,遺失重要脈絡
  • 無法感知邏輯任務邊界
  • 可能中斷複雜的多步驟操作

在邏輯邊界進行策略性壓縮:

  • 探索後、執行前 — 壓縮研究脈絡,保留實作計畫
  • 完成里程碑後 — 為下一階段重新開始
  • 重大脈絡轉換前 — 清除探索脈絡,準備不同任務

運作方式

suggest-compact.js 腳本在 PreToolUse(Edit/Write)時執行,結合兩個訊號:

  1. 上下文大小(主要) — 從對話記錄(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 後再次提醒
  2. 工具呼叫次數(次要) — 計算對話中的工具呼叫次數;在可設定的閾值(預設:50 次)時建議,之後每 25 次再建議

僅工具呼叫次數是視窗壓力的弱指標:少數大型檔案讀取或 MCP 回應可能在極少呼叫次數下填滿視窗,而許多小型呼叫可能在視窗幾乎為空時就超過 50 次。上下文大小訊號會在真正重要時觸發。

Hook 設定

以插件安裝? 無需設定。插件的 hooks/hooks.json 已註冊 suggest-compact.js(hook id pre:edit-write:suggest-compact,在 standardstrict 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 狀態(提交、分支) 工具呼叫歷史與計數
磁碟上的檔案 口頭表達的細微使用者偏好

最佳實踐

  1. 規劃後壓縮 — 一旦規劃在 TodoWrite 中定案,壓縮以重新開始
  2. 除錯後壓縮 — 繼續前清除錯誤解析脈絡
  3. 實作中途不要壓縮 — 保留相關變更的脈絡
  4. 閱讀建議 — hook 告訴您何時,您決定是否
  5. 壓縮前先寫入 — 將重要脈絡儲存到檔案或記憶後再壓縮
  6. 使用 /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-optimizer MCP — 透過內容去重自動減少 95%+ tokens
  • context-mode — 脈絡虛擬化(已展示從 315KB 降至 5.4KB)

相關資源

  • The Longform Guide — Token 最佳化章節
  • 記憶持久化 hooks — 用於在壓縮後仍保留的狀態
  • continuous-learning 技能 — 在對話結束前提取模式