Navigator Compact 技能
清除对话上下文,同时通过上下文标记保留知识。当用户说“清除上下文”、“重新开始”、“完成此任务”或接近令牌限制时使用。
何时调用
在以下情况下调用此技能:
- 用户说“清除上下文”、“重新开始”、“重置对话”
- 用户说“我完成了这个任务”、“转到下一个功能”
- 用户提到“接近令牌限制”、“上下文变得太满”
- 用户说“紧凑”、“清理上下文”
- 完成孤立的子任务后
不要调用 如果:
- 用户正在执行中间的实现
- 上下文需要用于下一步
- 会话中的消息少于20条(没有太多收益)
执行步骤
第1步:检查是否值得压缩
估计会话大小:
- 如果 < 20条消息:建议等待
- 如果 20-50条消息:可以安全压缩
- 如果 > 50条消息:强烈推荐
显示消息:
📊 当前会话:~[N] 条消息
压缩将:
- 创建带有当前状态的标记
- 清除对话历史记录
- 释放 ~[X]k 令牌用于新工作
继续吗?[Y/n]:
第2步:创建自动标记
调用 nav-marker 技能(或直接创建标记)并自动生成名称:
标记名称:before-compact-{YYYY-MM-DD}-{HHmm}
备注:"自动创建压缩前"
此标记应捕获:
- 最后10-15条消息的摘要
- 修改过的文件
- 技术决策
- 当前进度
- 下一步
第3步:设置活动标记
将标记文件名写入 .active 文件:
echo "{marker-filename}.md" > .agent/.context-markers/.active
这告诉 nav-start 在下一个会话中提供恢复。
第4步:显示压缩说明
向用户展示如何压缩:
╔════════════════════════════════════════════════════╗
║ ║
║ 🗜️ Navigator Compact ║
║ ║
╚══════════════════════════════════════════════════════╝
✅ 上下文标记已创建:
.agent/.context-markers/{marker-filename}.md
📋 标记包含:
- 对话摘要(最后15条消息)
- 您修改的文件
- 做出的技术决策
- 当前进度和下一步
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🔹 压缩方法:
Claude Code 不允许我在会话中以编程方式清除对话
您需要手动执行:
**方法1:新会话**
1. 开始新会话
2. 说“加载我的上下文”或“开始我的会话”
3. 我会检测活动标记并恢复您的状态
**方法2:/clear命令**(如果可用)
1. 输入/clear
2. 说“加载我的上下文”
3. 活动标记将被恢复
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
💡 您的进度已保存。您不会丢失任何上下文。
下一个会话:
1. 说“开始我的会话”或运行/nav:start
2. 我会检测标记:“{marker-filename}”
3. 确认恢复,您将回到离开的地方
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
第5步:确认标记位置
验证标记是否已创建:
ls -lh .agent/.context-markers/{marker-filename}.md
显示文件大小并确认成功:
✅ 标记成功保存
文件:{marker-filename}.md
大小:{X} KB (~{Y} 令牌)
您的上下文已保留!
重要说明
为什么手动压缩?
Claude Code 会话无法从会话内部以编程方式清除。用户必须:
- 开始新会话,或
- 使用
/clear命令(如果可用)
此技能创建标记并设置自动恢复,但实际清除必须由用户完成。
自动恢复工作流程:
会话1:
用户:“清除上下文”
→ nav-compact 创建标记
→ 设置 .active 文件
→ 指导用户如何清除
会话2(新会话):
用户:“开始我的会话”
→ nav-start 检测 .active 文件
→ 提供恢复标记
→ 用户确认
→ 上下文恢复!
常见用例
完成功能后
用户:“功能完成,为下一个任务清除上下文”
→ 创建标记:“before-compact-2025-10-16-1430”
→ 捕获:功能实现细节
→ 用户开始新会话
→ 恢复标记,开始下一个功能
接近令牌限制时
用户:“上下文变得太满,我们来压缩”
→ 创建标记:“before-compact-2025-10-16-1500”
→ 保留:所有当前工作
→ 用户清除对话
→ 继续使用新的上下文
在任务之间切换
用户:“完成认证,转到支付”
→ 创建标记:“auth-feature-complete”
→ 清除上下文
→ 新会话:为支付提供新的开始
→ 如果需要,稍后可以恢复认证标记
错误处理
标记创建失败:
❌ 无法创建标记
无法在不保留上下文的情况下压缩。
先修复标记创建。
上下文太少,无法保留:
⚠️ 上下文非常少(< 10条消息)
现在压缩不会节省太多。考虑:
- 继续工作
- 在取得更多进展后压缩
无论如何继续吗?[y/N]:
活动标记已存在:
⚠️ 活动标记已存在:
.agent/.context-markers/.active
这意味着您有来自先前压缩的未恢复标记。
选项:
1. 首先加载该标记(推荐)
2. 用新标记覆盖
3. 取消压缩
您的选择 [1-3]:
成功标准
当以下条件满足时,压缩成功:
- [ ] 成功创建上下文标记
- [ ] 标记包含全面的摘要
- [ ] 创建了
.active文件(用于自动恢复) - [ ] 用户知道如何清除对话
- [ ] 用户知道标记将在下一个会话中自动恢复
脚本
compact.py:自动压缩工作流程
- 创建标记
- 设置活动文件
- 生成恢复说明
最佳实践
何时压缩:
- ✅ 完成孤立的功能/子任务后
- ✅ 在主要文档更新后
- ✅ 在切换到不相关工作之前
- ✅ 当接近70%+令牌使用时
- ❌ 在实现中间
- ❌ 当上下文需要用于下一步时
- ❌ 每几条消息后(浪费)
压缩频率:
- 小任务(30分钟):不需要压缩
- 中等任务(2-3小时):完成任务后压缩
- 大任务(全天):在逻辑断点处压缩
- 多日任务:在每个会话结束时压缩
注释
此技能自动化了压缩的准备工作,但不能清除会话本身(Claude Code限制)。
价值在于:
- 自动标记创建
- 设置自动恢复
- 指导用户完成过程
- 无缝保留上下文
这提供了与 /nav:compact 命令相同的功能,但使用自然语言调用。