CC 技能:戰略性壓縮——把 /compact 放在任務階段邊界上

前言

長會話裏最常遇到的一種失敗是:模型還在工作,但上下文已經滿了,輸出開始變慢、變散,前面的分析再也回不來。多數工具的處理方式是自動壓縮(auto-compact),觸發點是固定的,不管你當時正做到哪一步。結果往往是任務做到一半被截斷,關鍵上下文跟着一起丟掉。

CC 技能:戰略性壓縮(strategic-compact)是一個開發類 Agent Skill,它把壓縮時機交給開發者判斷:在任務階段之間的自然邊界上手動執行 /compact,而不是依賴任意觸發的自動壓縮。下面介紹它的定位、工作原理、安裝配置和適用場景。

這是什麼

一句話定位:在工作流的關鍵節點上建議你手動執行 /compact 的 Skill,附帶一個在 Edit/Write 前檢查上下文的 Hook。

  • 出品方:SkillHub 頁面顯示發佈者爲「智雨科技」,來源 enterprise,座標 @org-02qudk26/cc-skill-strategic-compact,版本 1.0.0,分類 dev-programming。
  • 來源:Skill 的 metadata 中標註 origin: ECC,即 everything-claude-code。該倉庫是一套 Claude Code 配置集合(agents、skills、hooks、commands、rules 等),strategic-compact 對應倉庫中 skills/strategic-compact 目錄,配套的 hooks/strategic-compact 目錄提供腳本。
  • 解決的問題:自動壓縮不感知任務邏輯邊界,可能在執行中途觸發;這個 Skill 用 Hook 實時監控上下文規模,到閾值時提示你在合適的節點手動壓縮。
  • 是否要 API Key:標籤 requires_api_key=false,即不需要。

說明:SkillHub 官方頁在寫作時無法抓取,下文的安裝配置、閾值與決策指南均來自上游 everything-claude-code 倉庫中 skills/strategic-compact 的 SKILL.md 原文,與 Skill 的 origin 標註一致。

核心功能

  1. 監控真實上下文規模:Hook 腳本 suggest-compact.js 在 PreToolUse(Edit/Write)時運行,從會話 transcript 的 usage 記錄中讀取最近一次的 input_tokens + cache_read_input_tokens + cache_creation_input_tokens,這是該輪實際的上下文大小。
  2. 按窗口比例設閾值:200k 窗口下默認在約 160k tokens 時首次建議 /compact,1M 窗口下約 250k;之後每再增長 60k tokens 提醒一次。窗口從模型 id 的 [1m] 標記或觀測到的 token 數推斷。
  3. 工具調用數作爲輔助信號:默認 50 次工具調用時提示一次,此後每 25 次再提示。官方原文明確說明這是弱信號——少數幾次大文件讀取就能填滿窗口,而大量小調用可能到 50 次時窗口還很空。
  4. 壓縮決策參考表:Skill 內置階段切換與是否壓縮的對照(研究→規劃建議壓縮、規劃→實現建議壓縮、實現→測試視情況、實現中途不要壓縮、失敗後換思路前建議壓縮等)。
  5. 壓縮後的存活清單:明確壓縮後保留什麼(CLAUDE.md、磁盤上的文件、memory 目錄、git 狀態)和丟失什麼(中間推理、已讀過的文件內容、對話上下文、工具調用歷史)。

安裝與啓用

這是基於通用 SKILL.md 格式的 Skill,功能實際由 Hook 腳本驅動,安裝方式分兩種,按你當前的安裝形式選其一。

方式一:以插件方式安裝(推薦)。插件自帶的 hooks/hooks.json 已經註冊了 suggest-compact.js(hook id 爲 pre:edit-write:suggest-compact,在 standard 和 strict 兩個 hook profile 中生效),不需要任何手工配置。官方 SKILL.md 特別提醒:此時不要把下面的 Hook 配置塊複製進 ~/.claude/settings.json,插件安裝下 ~/.claude/scripts/ 目錄不存在,重複註冊還會導致腳本執行兩次。

方式二:手動安裝(執行倉庫的 ./install.sh 後),需要在 ~/.claude/settings.json 中添加以下配置,讓腳本在 Edit 和 Write 前運行:

{
  "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" }]
      }
    ]
  }
}

關於 Cursor、Codex CLI 與其他工具:已抓取資料中沒有說明該 Skill 在這些工具下的支持方式,腳本 hook 事件名(PreToolUse)也是 Claude Code 的機制,本文不推測,請以官方頁面爲準。

配置項

以下爲 suggest-compact.js 支持的環境變量,全部爲可選:

COMPACT_THRESHOLD=50                    # 首次建議 /compact 前的工具調用數
COMPACT_CONTEXT_THRESHOLD=160000        # 觸發建議的上下文 token 數(200k 窗口默認 160k,1M 窗口默認 250k)
COMPACT_CONTEXT_INTERVAL=60000          # 之後每增長多少 token 重複提醒
COMPACT_STATE_TTL_DAYS=14               # 臨時目錄中過期的按會話狀態文件清理天數
ECC_CONTEXT_WINDOW_TOKENS=              # 顯式指定上下文窗口大小,覆蓋自動檢測
CLAUDE_CODE_AUTO_COMPACT_WINDOW=        # Claude Code 原生 auto-compact 窗口,作爲窗口推斷的最後兜底

設置示例:如果你的模型實際窗口是 400k 但沒有 [1m] 標記,可以顯式聲明,避免按 200k 默認值誤報上下文佔用:

export ECC_CONTEXT_WINDOW_TOKENS=400000

窗口推斷的優先級是:ECC_CONTEXT_WINDOW_TOKENS → 模型 id 的 [1m] 標記 → 已知的大窗口模型族 → 觀測 token 超過 200k 時的推斷 → 原生 auto-compact 兜底 → 默認按 200k。顯式設置的 COMPACT_CONTEXT_THRESHOLD 具有最高優先級,設爲 0 可關閉上下文規模信號。

典型用法

以下流程來自 Skill 內置的決策指南和最佳實踐。

  1. 先寫計劃再壓縮。規劃階段結束後,把計劃寫到文件,然後執行 /compact,用乾淨的上下文進入實現階段。
/compact
  1. 階段切換時清理。研究→規劃、規劃→實現、調試結束換下一個功能、一種方案失敗換新思路前,都是壓縮點;實現做到一半則不要壓縮,此時丟失變量名、文件路徑和中間狀態的代價很高。

  2. 壓縮前確認計劃已落盤。這是官方強調的一點:Claude Code 2.1.233 起在 Opus 4.8、Sonnet 5、Fable 5、Mythos 5 及更新模型上默認移除了 todo/task 工具(TodoWrite、TaskCreate/Get/Update/List),設置 CLAUDE_CODE_ENABLE_TODO_TOOLS=1 可以恢復,但這是每臺機器的環境配置,不會隨 Skill 一起分發。因此不要指望「任務清單壓縮後還在」,把計劃寫進文件,文件在任何版本和模型上都持久。

  3. 收到 Hook 提醒時,結合當前所處階段決定是否執行 /compact,而不是無腦忽略或無腦執行。

適用場景與注意

適合誰:運行長會話、任務分多個階段(研究→規劃→實現→測試)、在同一會話裏切換不相關任務的開發者。當會話接近上下文上限,或你感覺響應變慢、變散時,這正是該 Skill 的觸發場景。

注意事項:

  1. 它是提醒機制,不是自動壓縮器。是否壓縮、何時壓縮仍由你判斷,Skill 提供的是階段決策表和閾值信號。
  2. 工具調用數信號偏弱,判斷窗口壓力時以上下文規模信號爲準。
  3. 手動安裝時注意配置文件的位置和 matcher 類型;插件安裝時不要重複配置,否則腳本會執行兩次。
  4. 大窗口模型如果沒有可識別的標記,需要自己設置 ECC_CONTEXT_WINDOW_TOKENS,否則閾值按 200k 窗口計算,會高估上下文佔用。
  5. 壓縮會丟失中間推理和已讀文件內容,壓縮前需要的信息請先落盤。

結尾

戰略性壓縮的價值在於把「何時壓縮」從系統默認行爲變成可判斷的工程決策:監控真實上下文規模、在階段邊界提醒、配合先寫計劃再壓縮的習慣,讓長會話在多個任務階段間保持可控。官方地址:https://api.skillhub.cn/org-02qudk26/cc-skill-strategic-compact。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜