$npx -y skills add virgo777/buddyme --skill strategic-compactSuggests manual context compaction at logical intervals to preserve context through task phases rather than arbitrary auto-compaction.
| 1 | # 策略性压缩技能 (Strategic Compact Skill) |
| 2 | |
| 3 | 建议在工作流的战略点手动执行 `/compact`,而不是依赖随机的自动压缩。 |
| 4 | |
| 5 | ## 何时激活 (When to Activate) |
| 6 | |
| 7 | - 运行接近上下文限制(200K+ token)的长会话时 |
| 8 | - 处理多阶段任务(研究 → 规划 → 实现 → 测试)时 |
| 9 | - 在同一个会话中切换不相关的任务时 |
| 10 | - 完成重大里程碑并开始新工作后 |
| 11 | - 当响应变慢或连贯性下降(上下文压力)时 |
| 12 | |
| 13 | ## 为什么需要策略性压缩? (Why Strategic Compaction?) |
| 14 | |
| 15 | 自动压缩会在任意点触发: |
| 16 | - 通常在任务中途触发,导致丢失重要的上下文 |
| 17 | - 无法识别逻辑任务边界 |
| 18 | - 可能会中断复杂的多步操作 |
| 19 | |
| 20 | 在逻辑边界进行策略性压缩: |
| 21 | - **研究之后,执行之前** — 压缩研究上下文,保留实现计划 |
| 22 | - **完成里程碑之后** — 为下一阶段提供清新起点 |
| 23 | - **重大上下文切换之前** — 在进入不同任务前清理探索性上下文 |
| 24 | |
| 25 | ## 工作原理 (How It Works) |
| 26 | |
| 27 | `suggest-compact.js` 脚本在工具预调用(PreToolUse,包括 Edit/Write)时运行,并执行: |
| 28 | |
| 29 | 1. **跟踪工具调用** — 统计会话中的工具调用次数 |
| 30 | 2. **阈值检测** — 在达到可配置阈值时提供建议(默认:50 次调用) |
| 31 | 3. **定期提醒** — 超过阈值后,每 25 次调用提醒一次 |
| 32 | |
| 33 | ## 钩子设置 (Hook Setup) |
| 34 | |
| 35 | 将以下内容添加到你的 `~/.claude/settings.json`: |
| 36 | |
| 37 | ```json |
| 38 | { |
| 39 | "hooks": { |
| 40 | "PreToolUse": [ |
| 41 | { |
| 42 | "matcher": "Edit", |
| 43 | "hooks": [{ "type": "command", "command": "node ~/.claude/skills/strategic-compact/suggest-compact.js" }] |
| 44 | }, |
| 45 | { |
| 46 | "matcher": "Write", |
| 47 | "hooks": [{ "type": "command", "command": "node ~/.claude/skills/strategic-compact/suggest-compact.js" }] |
| 48 | } |
| 49 | ] |
| 50 | } |
| 51 | } |
| 52 | ``` |
| 53 | |
| 54 | ## 配置 (Configuration) |
| 55 | |
| 56 | 环境变量: |
| 57 | - `COMPACT_THRESHOLD` — 首次建议前的工具调用次数(默认:50) |
| 58 | |
| 59 | ## 压缩决策指南 (Compaction Decision Guide) |
| 60 | |
| 61 | 参考下表决定何时进行压缩: |
| 62 | |
| 63 | | 阶段转换 | 是否压缩? | 原因 | |
| 64 | |-----------------|----------|-----| |
| 65 | | 研究 → 规划 | 是 | 研究上下文很臃肿;计划是精炼后的输出 | |
| 66 | | 规划 → 实现 | 是 | 计划已记录在 `TodoWrite` 或文件中;为代码腾出上下文空间 | |
| 67 | | 实现 → 测试 | 视情况而定 | 如果测试引用了最近的代码则保留;如果切换关注点则压缩 | |
| 68 | | 调试 → 下一个特性 | 是 | 调试追踪信息会污染不相关工作的上下文 | |
| 69 | | 实现过程中 | 否 | 丢失变量名、文件路径和部分状态的代价很高 | |
| 70 | | 尝试方案失败后 | 是 | 在尝试新方案前清理掉死胡同的推理过程 | |
| 71 | |
| 72 | ## 哪些内容在压缩后存留 (What Survives Compaction) |
| 73 | |
| 74 | 了解哪些内容会持久化,可以让你放心地进行压缩: |
| 75 | |
| 76 | | 存留项 | 丢失项 | |
| 77 | |----------|------| |
| 78 | | `CLAUDE.md` 指令 | 中间推理与分析过程 | |
| 79 | | `TodoWrite` 任务列表 | 之前读取的文件内容 | |
| 80 | | 记忆文件 (`~/.claude/memory/`) | 多轮对话上下文 | |
| 81 | | Git 状态(提交、分支) | 工具调用历史与计数 | |
| 82 | | 磁盘上的文件 | 口头陈述的细微用户偏好 | |
| 83 | |
| 84 | ## 最佳实践 (Best Practices) |
| 85 | |
| 86 | 1. **规划后压缩** — 一旦在 `TodoWrite` 中确定了计划,进行压缩以重新开始 |
| 87 | 2. **调试后压缩** — 在继续之前清理错误解决的上下文 |
| 88 | 3. **不要在实现中途压缩** — 为相关更改保留上下文 |
| 89 | 4. **阅读建议** — 钩子告诉你*何时*可以压缩,由你决定*是否*执行 |
| 90 | 5. **压缩前写入** — 在压缩前将重要的上下文保存到文件或记忆中 |
| 91 | 6. **使用带摘要的 `/compact`** — 添加自定义消息:`/compact Focus on implementing auth middleware next` |
| 92 | |
| 93 | ## 相关资源 (Related) |
| 94 | |
| 95 | - [长篇指南 (The Longform Guide)](https://x.com/affaanmustafa/status/2014040193557471352) — Token 优化章节 |
| 96 | - 记忆持久化钩子 — 用于在压缩后存留的状态 |
| 97 | - `continuous-learning` 技能 — 在会话结束前提取模式 |