with one click
strategic-compact
在逻辑间隔建议手动上下文压缩,通过任务阶段保留上下文而非任意自动压缩。
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
在逻辑间隔建议手动上下文压缩,通过任务阶段保留上下文而非任意自动压缩。
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
REST API 设计模式,包括资源命名、状态码、分页、过滤、错误响应、版本控制和生产 API 的速率限制。
后端架构模式、API 设计、数据库优化和 Node.js、Express、Next.js API 路由的服务器端最佳实践。
通用编码标准、最佳实践和模式,适用于 TypeScript、JavaScript、React 和 Node.js 开发。
Everything Claude Code 的交互式安装向导——引导用户选择和安装技能和规则到用户级或项目级目录,验证路径,并可选地优化已安装的文件。
自动从 Claude Code 会话中提取可复用模式,并保存为学习技能供将来使用。
基于 instinct 的学习系统,通过 hooks 观察会话,创建带置信度评分的原子级 instincts,并将它们进化为技能/命令/代理。
| name | strategic-compact |
| description | 在逻辑间隔建议手动上下文压缩,通过任务阶段保留上下文而非任意自动压缩。 |
在工作流的策略点建议手动 /compact,而不是依赖任意的自动压缩。
什么是上下文限制? Claude 有一个"记忆窗口"(200K tokens),超过后会忘记旧内容。
自动压缩在任意点触发:
示例问题:
你在实现一个功能:
1. 研究 API 文档(1000 tokens)
2. 计划实现(500 tokens)
3. 开始编写代码...
→ 自动压缩触发! ← 错误时间
→ 丢失了 API 研究和计划
在逻辑边界的策略性压缩:
示例解决方案:
1. 研究 API 文档(1000 tokens)
2. 计划实现(500 tokens)
3. 保存计划到文件 ← 策略点
4. 手动 /compact ← 保留计划,清理研究
5. 继续实现 ✅
suggest-compact.js 脚本在 PreToolUse(Edit/Write)时运行,并且:
为什么追踪工具调用? 工具调用次数是上下文使用的代理指标。
示例流程:
会话开始:
- 第 10 次工具调用:正常
- 第 30 次工具调用:正常
- 第 50 次工具调用:⚠️ 建议压缩
- 第 75 次工具调用:⚠️ 再次建议
- 第 100 次工具调用:⚠️ 强烈建议
添加到你的 ~/.claude/settings.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" }]
}
]
}
}
什么是 PreToolUse? 在工具执行前触发的 hook。
环境变量:
COMPACT_THRESHOLD ——首次建议前的工具调用次数(默认:50)设置阈值:
# 默认:50 次调用
# 保守:100 次调用(更少建议)
# 激进:25 次调用(更频繁建议)
使用此表决定何时压缩:
| 阶段转换 | 压缩? | 为什么 |
|---|---|---|
| 研究 → 计划 | ✅ 是 | 研究上下文庞大;计划是提炼的输出 |
| 计划 → 实现 | ✅ 是 | 计划在 TodoWrite 或文件中;释放上下文给代码 |
| 实现 → 测试 | ⚠️ 可能 | 如果测试引用最近代码则保留;切换焦点则压缩 |
| 调试 → 下一功能 | ✅ 是 | 调试痕迹污染不相关工作的上下文 |
| 实现中途 | ❌ 否 | 丢失变量名、文件路径和部分状态代价高昂 |
| 失败方法后 | ✅ 是 | 在尝试新方法前清理死胡同推理 |
详细说明:
你花了 30 分钟研究 API 文档。
现在你有详细的计划在 TodoWrite 中。
压缩:
✅ 保留:TodoWrite 任务列表
✅ 保留:计划文档
❌ 丢弃:30 分钟的阅读记录
你有完整的功能计划。
现在开始编写代码。
压缩:
✅ 保留:计划(在文件或 TodoWrite 中)
✅ 释放上下文给代码
❌ 丢弃:规划讨论
你正在实现功能的一半。
变量名、函数名、文件路径都很重要。
不压缩:
❌ 丢失:当前上下文
❌ 丢失:变量名
❌ 丢失:部分状态
你花了 20 分钟调试一个错误。
现在错误已修复,继续下一个功能。
压缩:
✅ 清理调试痕迹
✅ 释放上下文给新功能
❌ 丢弃:调试对话
理解什么持续存在有助于你有信心地压缩:
| 持续存在 | 丢失 |
|---|---|
| CLAUDE.md 指令 | 中间推理和分析 |
| TodoWrite 任务列表 | 你之前读取的文件内容 |
内存文件 (~/.claude/memory/) | 多步对话上下文 |
| Git 状态(提交、分支) | 工具调用历史和计数 |
| 磁盘上的文件 | 口头表达的细微用户偏好 |
关键点:
压缩前做什么:
# 1. 保存重要上下文到文件
echo "重要的 API 端点:/api/v1/users" > context-notes.md
# 2. 确保 TodoWrite 是最新的
/todowrite # 检查任务列表
# 3. 提交 Git 更改
git add .
git commit -m "实现用户认证"
# 4. 现在压缩
/compact 保存任务列表,清理研究上下文
/compact ——添加自定义消息示例压缩命令:
# 基本压缩
/compact
# 带自定义消息
/compact 专注于实现身份验证中间件
# 带阶段标记
/compact [阶段:研究 → 实现] 保留任务列表
Q: 压缩会删除文件吗?
A: 不会。压缩只清除 AI 的上下文(记忆),不删除任何文件。
Q: 我会丢失我的工作吗?
A: 如果你保存了文件(Edit/Write),不会。工作在磁盘上,不是在上下文中。
Q: 应该多久压缩一次?
A: 取决于工作流:
Q: 如何知道何时压缩?
A:
Q: 压缩会破坏 TodoWrite 吗?
A: 不会。TodoWrite 任务列表在压缩后保留。
阶段 1:研究(40 分钟)
- 阅读 API 文档
- 尝试不同的方法
- 找到最佳方案
阶段 2:计划(10 分钟)
- 在 TodoWrite 中创建任务列表
- 写计划文档
阶段 3:压缩 ← 策略点
/compact [研究 → 实现] 保留任务列表和计划文档
阶段 4:实现(清洁 slate)
- 使用任务列表
- 参考计划文档
- 编写代码
阶段 1:正常工作
- 实现功能 A
- 实现功能 B
阶段 2:调试(20 分钟)
- 功能 C 有错误
- 尝试修复 1:失败
- 尝试修复 2:失败
- 尝试修复 3:成功 ✓
阶段 3:压缩 ← 策略点
/compact 清理调试痕迹,开始功能 D
阶段 4:下一个功能
- 清洁的上下文
- 没有调试噪音
阶段 1:实现开始
- 编写函数 getUser()
- 编写函数 validateUser()
- 编写函数 saveUser()
← Hook 建议压缩
→ 决定:不压缩 ←
原因:
- 函数名称在上下文中
- 变量名很重要
- 部分状态
阶段 2:继续实现
- 完成 saveUser()
- 编写测试
- 提交代码
阶段 3:现在压缩 ✓
/compact 功能完成,清理上下文
continuous-learning 技能——会话结束前提取模式记住:策略压缩是在正确时间手动触发——不是自动触发,也不是从不触发。关键是理解何时压缩是安全的。