--- name: strategic-compact description: 建议在逻辑间隔处手动压缩上下文,以在任务阶段中保留上下文,而非任意的自动压缩。 origin: ECC --- # 战略精简技能 建议在你的工作流程中的战略节点手动执行 `/compact`,而不是依赖任意的自动精简。 ## 何时激活 * 运行长时间会话,接近上下文限制时(200K+ tokens) * 处理多阶段任务时(研究 → 规划 → 实施 → 测试) * 在同一会话中切换不相关的任务时 * 完成一个主要里程碑并开始新工作时 * 当响应变慢或连贯性下降时(上下文压力) ## 为何采用战略精简? 自动精简会在任意时间点触发: * 通常在任务中途,丢失重要上下文 * 无法感知逻辑任务边界 * 可能中断复杂的多步骤操作 在逻辑边界进行战略精简: * **探索之后,执行之前** — 压缩研究上下文,保留实施计划 * **完成里程碑之后** — 为下一阶段重新开始 * **在主要上下文切换之前** — 在开始不同任务前清理探索上下文 ## 工作原理 `suggest-compact.js` 脚本在 PreToolUse (Edit/Write) 时运行,并且: 1. **跟踪工具调用** — 统计会话中的工具调用次数 2. **阈值检测** — 在可配置的阈值处建议压缩(默认:50次调用) 3. **定期提醒** — 达到阈值后,每25次调用提醒一次 ## 钩子设置 添加到你的 `~/.claude/settings.json`: ```json { "hooks": { "PreToolUse": [ { "matcher": "Edit", "hooks": [{ "type": "command", "command": "node ~/.claude/skills/strategic-compact/suggest-compact.js" }] }, { "matcher": "Write", "hooks": [{ "type": "command", "command": "node ~/.claude/skills/strategic-compact/suggest-compact.js" }] } ] } } ``` ## 配置 环境变量: * `COMPACT_THRESHOLD` — 首次建议前的工具调用次数(默认:50) ## 压缩决策指南 使用此表来决定何时压缩: | 阶段转换 | 压缩? | 原因 | | ------------------------ | ------ | -------------------------------------------------------------------- | | 研究 → 规划 | 是 | 研究上下文很庞大;规划是提炼后的输出 | | 规划 → 实施 | 是 | 规划已保存在 TodoWrite 或文件中;释放上下文以进行编码 | | 实施 → 测试 | 可能 | 如果测试引用最近的代码则保留;如果要切换焦点则压缩 | | 调试 → 下一项功能 | 是 | 调试痕迹会污染不相关工作的上下文 | | 实施过程中 | 否 | 丢失变量名、文件路径和部分状态代价高昂 | | 尝试失败的方法之后 | 是 | 在尝试新方法之前,清理掉无效的推理过程 | ## 压缩后保留的内容 了解哪些内容会保留有助于您自信地进行压缩: | 保留的内容 | 丢失的内容 | | ---------------------------------------- | ---------------------------------------- | | CLAUDE.md 指令 | 中间的推理和分析 | | TodoWrite 任务列表 | 您之前读取过的文件内容 | | 记忆文件 (`~/.claude/memory/`) | 多轮对话的上下文 | | Git 状态(提交、分支) | 工具调用历史和计数 | | 磁盘上的文件 | 口头陈述的细微用户偏好 | ## 最佳实践 1. **规划后压缩** — 一旦计划在 TodoWrite 中最终确定,就压缩以重新开始 2. **调试后压缩** — 在继续之前,清理错误解决上下文 3. **不要在实施过程中压缩** — 为相关更改保留上下文 4. **阅读建议** — 钩子告诉您*何时*,您决定*是否* 5. **压缩前写入** — 在压缩前将重要上下文保存到文件或记忆中 6. **使用带摘要的 `/compact`** — 添加自定义消息:`/compact Focus on implementing auth middleware next` ## 令牌优化模式 ### 触发表惰性加载 不在会话开始时加载完整的技能内容,而是使用一个将关键词映射到技能路径的触发表。技能仅在触发时加载,可将基线上下文减少 50% 以上: | 触发词 | 技能 | 加载时机 | |---------|-------|-----------| | "test", "tdd", "coverage" | tdd-workflow | 用户提及测试时 | | "security", "auth", "xss" | security-review | 涉及安全相关工作时 | | "deploy", "ci/cd" | deployment-patterns | 涉及部署上下文时 | ### 上下文组合感知 监控哪些内容正在消耗你的上下文窗口: * **CLAUDE.md 文件** — 始终加载,需保持精简 * **已加载技能** — 每个技能增加 1-5K 令牌 * **对话历史** — 随每次交流增长 * **工具结果** — 文件读取、搜索结果会增加体积 ### 重复指令检测 常见的重复上下文来源: * 相同的规则同时出现在 `~/.claude/rules/` 和项目 `.claude/rules/` 中 * 技能重复了 CLAUDE.md 的指令 * 多个技能覆盖了重叠的领域 ### 上下文优化工具 * `token-optimizer` MCP — 通过内容去重实现 95% 以上的自动令牌减少 * `context-mode` — 上下文虚拟化(已演示从 315KB 减少到 5.4KB) ## 相关 * [长篇指南](https://x.com/affaanmustafa/status/2014040193557471352) — Token 优化部分 * 记忆持久化钩子 — 用于在压缩后保留状态 * `continuous-learning` 技能 — 在会话结束前提取模式