对话结束时主动分析本轮对话,将值得持久化的信息写入 memory/topics/ 下的独立 topic 文件,同时更新 MEMORY.md 索引。
text
用户输入:"提炼记忆" 或 检测到对话结束词
↓
Step 1 — 确定本轮对话范围
读取当前 session 最近消息,确定本轮对话起止
↓
Step 2 — 识别值得提炼的内容
扫描消息,识别:用户决策 / 用户偏好 / 项目约束 / 外部系统指针
↓
Step 3 — 按四类型分类
每个内容 → 判断类型(user/feedback/project/reference)
feedback 必须含 Why + How to apply
↓
Step 4 — 检查 topics/ 是否有重复
grep 已有 topic,确认没有重复再写
↓
Step 5 — 写入 topic 文件(APPEND,不覆盖)
格式:frontmatter + 正文
↓
Step 6 — 更新 MEMORY.md 索引
添加一行指针(≤150字符)
↓
输出:"已为您提炼本轮记忆 ✅" + 提炼条数
读取当前 session 最近消息(不限条数,确保覆盖完整对话)。
识别以下类型的信息:
类型特征例子用户决策用户明确做出了选择或结论"用这个方案"用户偏好用户说了喜欢/不喜欢/习惯"我喜欢用 bun"项目约束截止时间、冻结期、技术限制"周五前要上线"外部系统指针URL、工具、账号、路径"在 Linear 里有"
过滤:以下不提炼——代码结构、git历史、已在 CLAUDE.md/AGENTS.md 的内容、临时状态。
每个内容判断类型:
类型判断标准user用户角色、偏好、知识feedback用户纠正或确认的行为(含 Why + How to apply)project截止、动机、约束(含 Why + How to apply)reference外部系统 URL/路径 + 用途
执行 grep 搜索已有 topic 文件:
若有重复,追加新内容到已有文件,不新建。
格式(frontmatter):
yaml
---
name: 名称
description: 一句话描述(用于判断 relevance)
type: user / feedback / project / reference
---
正文内容
**Why:** 原因(feedback/project 必须)
**How to apply:** 何时适用(feedback/project 必须)
写入模式:APPEND,不覆盖已有内容。
在 MEMORY.md 末尾追加一行指针:
text
- [名称](topics/文件名.md) — 一句话 hook(≤150字符)
已为您提炼本轮记忆 ✅ 写入位置:memory/topics/
提炼结果:N条
user#
- 正文(一段文字即可)
feedback#
- 正文 Why: 原因 How to apply: 何时适用
project#
- 正文 Why: 动机 How to apply: 如何影响工作
reference#
- URL/路径 + 用途说明
每次对话结束时,主 agent 会:
再见/ bye/ 下次见/ 拜拜/ 结束了/ 先这样)或英文( bye/ see you/ that's all)建议在 AGENTS.md 中加入:
text
对话结束时,主动调用 /extract-memories 提炼关键记忆。
每次 heartbeat 时检查:
/extract-memoriesFileRead:读取对话上下文、MEMORY.md、topics/FileWrite / FileEdit:写入 memory/topics/、 MEMORY.mdsessions_history:读取主会话消息(heartbeat 触发时)/extract-memories本 Skill 基于 CC 记忆系统设计,适配 OpenClaw v3.1.0