一键导入
strategic-compact
在逻辑间隔建议手动上下文压缩,通过任务阶段保留上下文而非任意自动压缩。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
在逻辑间隔建议手动上下文压缩,通过任务阶段保留上下文而非任意自动压缩。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
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 技能——会话结束前提取模式记住:策略压缩是在正确时间手动触发——不是自动触发,也不是从不触发。关键是理解何时压缩是安全的。