NavigatorCompact技能 nav-compact

对话上下文压缩工具,用于在保留关键信息的同时清除对话历史,优化对话令牌使用。

NLP 0 次安装 0 次浏览 更新于 3/4/2026

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限制)。

价值在于:

  1. 自动标记创建
  2. 设置自动恢复
  3. 指导用户完成过程
  4. 无缝保留上下文

这提供了与 /nav:compact 命令相同的功能,但使用自然语言调用。