strategic-compact

strategic-compact

热门

在逻辑间隔处建议手动上下文压缩,以在任务阶段中保留上下文,而非依赖任意的自动压缩。

23万Star
3.5万Fork
更新于 2026/7/14
SKILL.md
readonly只读
name
strategic-compact
description

在逻辑间隔处建议手动上下文压缩,以在任务阶段中保留上下文,而非依赖任意的自动压缩。

Strategic Compact 技能

在工作流程中的战略节点建议手动 /compact,而非依赖任意的自动压缩。

何时激活

  • 运行接近上下文限制的长会话(200K+ tokens)
  • 处理多阶段任务(研究 → 规划 → 实现 → 测试)
  • 在同一会话中切换不相关的任务
  • 完成主要里程碑并开始新工作后
  • 当响应变慢或变得不连贯时(上下文压力)

为什么选择战略压缩?

自动压缩在任意点触发:

  • 通常任务中途触发,丢失重要上下文
  • 不了解逻辑任务边界
  • 可能中断复杂的多步骤操作

在逻辑边界进行战略压缩:

  • 探索之后,执行之前 — 压缩研究上下文,保留实现计划
  • 完成里程碑后 — 为下一阶段全新开始
  • 重大上下文切换前 — 清除探索上下文,为不同任务做准备

工作原理

suggest-compact.js 脚本在 PreToolUse(Edit/Write)上运行,结合两个信号:

  1. 上下文大小(主要) — 从会话记录(hook 负载中的 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%+ 的 token 自动缩减
  • context-mode — 上下文虚拟化(已演示从 315KB 降至 5.4KB)

相关链接

  • 长篇指南 — Token 优化部分
  • 记忆持久化 hooks — 用于在压缩后保留状态
  • continuous-learning 技能 — 在会话结束前提取模式