| name | session-compression-flow |
| description | Trigger and execute session compression plus post-compression handoff for next-session continuity. Use when user asks to compress long conversations, enforce compression thresholds, or standardize how compressed summaries are written into daily memory and MEMORY.md for later recall. |
| requires | ["file_write"] |
Session Compression Flow
将“触发压缩 + 压缩落盘 + 新会话衔接”固化为标准流程。
触发条件
硬触发关键词(出现任一即命中):
- “压缩一下” / “帮我压缩” / “总结当前会话” / “归档一下”
- “对话太长了” / “context 要满了” / “清理一下上下文”
- “记录下来然后清空” / “存档”
自动触发(CTRL 主动检测,无需用户说):
- round > 20 且 compression_count 未在本轮递增
执行入口
当满足任一条件时执行:
- 用户明确要求”压缩/总结当前会话”
- CTRL 在更新 session-state.json 时检测到
round > 20(每轮写入后主动检查,不等用户提醒)
- 工具输出冗长且低相关,影响上下文质量
CTRL 自动检查规则:每轮写入 session-state.json 后,若 round > 20 且 compression_count 未在本轮递增,则自动触发本 skill(Layer A 压缩)。不需要用户说”压缩”。
流程
- 识别压缩触发原因
- 标注触发类型:
round-threshold / long-tool-output / manual-request
- 生成压缩摘要块
- 使用固定格式:
- 目标
- 进展
- 决策
- 下一步
- 关键实体(字段名:值(日期))
- 压缩落盘(双写)
- 写入
memory/YYYY-MM-DD.md(作为当日流水)
- 将关键“决策/实体”写入
MEMORY.md 对应域(长期记忆)
- 检索索引更新
- 执行:
python3 tools/memory_entry.py --rebuild
- 确保压缩后信息在检索层可见
- 新会话衔接
- 新会话先按路由域注入
MEMORY.md 对应域
- 必要时调用检索拿最近压缩摘要(优先同域)
输出约定
每次执行后在回复中给出:
- 压缩是否执行(是/否)
- 触发原因
- 落盘位置(daily + MEMORY 域)
- 索引是否重建成功
DEV LOG 约定
在 DEV LOG 中追加:
- 压缩原因
- 压缩次数累计
- 压缩级别(Layer A / Layer B)
- 是否完成“落盘 + 重建索引”