SuperAPI AI 工具集

strategic-compact

办公与效率

查看项目

更新于 10-15 08:41

技能介绍

Strategic Compact 是一个用于 Claude Code 的技能,核心目的是建议在逻辑节点手动执行 /compact 压缩上下文,而不是依赖任意的自动压缩。

用途

自动压缩会在任意时间点触发,常常发生在任务中途,导致重要上下文丢失,且无法感知任务的逻辑边界,可能打断复杂的多步操作。Strategic Compact 主张在逻辑边界处进行策略性压缩,例如:探索完成后、执行前压缩研究上下文并保留实现计划;完成里程碑后为下一阶段重新开始;在重大上下文切换前清除探索上下文。

主要能力

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

  1. 上下文大小(主信号):从会话记录(钩子负载中的 transcript_path)读取最新使用记录,累加 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 次。上下文大小信号在真正重要时触发。

使用方式

作为插件安装时无需设置,插件的 hooks/hooks.json 已注册 suggest-compact.js(钩子 id 为 pre:edit-write:suggest-compact,在 standard 和 strict 钩子配置中激活)。不要将配置块复制到 ~/.claude/settings.json——插件安装时 ~/.claude/scripts/ 不存在,重复插件钩子会导致双重执行。

手动安装(./install.sh)时,需在 ~/.claude/settings.json 中添加 PreToolUse 钩子配置,匹配 Edit 和 Write,命令为 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)
  • ECC_CONTEXT_WINDOW_TOKENS:显式上下文窗口大小(tokens),覆盖自动检测。用于报告 id 缺少 [1m] 标记的大窗口模型(如 400k Opus 4.x 或新的 1M 窗口模型系列),使阈值按真实窗口缩放而非默认 200k 而高估上下文使用。
  • CLAUDE_CODE_AUTO_COMPACT_WINDOW:Claude Code 原生窗口大小覆盖(tokens);在 ECC_CONTEXT_WINDOW_TOKENS 未设置时作为回退。

上下文窗口否则从 [1m] 模型标记自动检测,或在观测 tokens 已超过 200k 时推断。在既无标记又无推断信号的大窗口模型上,设置上述覆盖之一,使 /compact 建议在正确时机触发。

压缩决策指南

  • 研究→计划:是。研究上下文庞大,计划是提炼输出。
  • 计划→实现:是。计划已写入文件或任务列表,释放上下文给代码。
  • 实现→测试:也许。若测试引用近期代码则保留;若切换焦点则压缩。
  • 调试→下一功能:是。调试痕迹污染无关工作的上下文。
  • 实现中途:否。丢失变量名、文件路径和部分状态代价高。
  • 失败方法之后:是。在尝试新方法前清除死胡同推理。

压缩后保留的内容

保留:CLAUDE.md 指令、磁盘文件、记忆文件(~/.claude/memory/)、Git 状态(提交、分支)、任务列表(仅当有 todo 工具时)。

丢失:中间推理与分析、之前读取的文件内容、多步对话上下文、工具调用历史与计数、口头陈述的细微用户偏好。

不要依赖任务列表存活——它可能不存在。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 可恢复它们,但这是每台机器的环境设置,不随本技能传递,因此不能假设读者拥有。这意味着“我的 todo 列表在压缩后存活”是人们选择压缩而非写下状态的原因;若工具缺失则没有列表可存活,计划就消失了。压缩前将计划写入文件——文件在每个版本和每个模型上都持久。将任务列表视为可能缺失的便利,而非持久记录。

最佳实践

  • 计划后压缩:计划定稿并写入文件后,压缩以重新开始
  • 调试后压缩:继续前清除错误解决上下文
  • 不要在实现中途压缩:为相关更改保留上下文
  • 阅读建议:钩子告诉你何时,你决定是否
  • 压缩前写入:压缩前将重要上下文保存到文件或记忆
  • 使用带摘要的 /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)。

相关

Longform Guide 的 token 优化部分、记忆持久化钩子(用于压缩后存活的状态)、continuous-learning 技能(在会话结束前提取模式)。

适用场景

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

限制

本技能仅提供压缩建议,是否执行由用户决定。任务列表的存活取决于是否启用 todo 工具,不保证存在。上下文窗口自动检测依赖 [1m] 标记或观测 tokens 超过 200k,否则需手动设置覆盖变量。