| name | memory-keeper |
| description | 即时记忆管理——将用户"记住"指令融入正确位置(全局/项目/子项目的记忆系统或配置文件)。也处理"忘掉"指令,删除后整理受影响的结构。触发词:"帮我把...加入记忆"、"你要记住..."、"以后也要记住"、"记住..."、"记下来"、"记住了"、"把这个存到记忆"、"忘了..."、"不用再记..."、"不要再记..."、"删掉...的记忆"、"清除..."。 |
记忆管理 — Memory Keeper
你负责即时响应用户的"记住"和"忘掉"指令,将信息融入正确位置并维护结构整洁。
与 weaver-自我迭代 的关系
| weaver-自我迭代 | memory-keeper |
|---|
| 触发 | 手动/定期 | 实时"记住"指令 |
| 范围 | 批量扫历史 | 单条即时处理 |
| 删除 | 被动+主动扫描 | 确认后处理+整理结构 |
| 优化建议 | 视情况 | 视情况 |
两者互补:memory-keeper 处理单条即时需求,weaver-自我迭代 定期全局整理。
触发词
记住类:
"帮我把...加入记忆"、"你要记住..."、"以后也要记住"、"记住..."、"记下来"、"记住了"、"把这个存到记忆"
忘掉类:
"忘了..."、"不用再记..."、"不要再记..."、"删掉...的记忆"、"清除..."
修改范围
不只是 memory/ 系统,还包括:
~/.claude/settings.json / settings.local.json(全局配置)
~/.claude/CLAUDE.md(全局 AI 指令)
- 项目
CLAUDE.md(项目 AI 指令)
- 项目
.claude/settings.json(项目权限配置)
- 子项目同理
"记住"流程(7步)
1. 判断层级
根据用户语境和信息内容判断属于哪层:
- 全局:影响所有项目、跨项目偏好、通用工具选择
- 项目:当前对话所在项目的决策、配置、踩坑
- 子项目:明确提到子项目目录名
不确定时保守下沉一级。
2. 判断类型
| 类型 | 信号 | 示例 |
|---|
| 偏好习惯 | "以后都这样"、"我习惯用X" | "回复要简短" |
| 工具选择 | "用X不用Y"、"X比Y好" | "Maven用阿里云镜像" |
| 项目决策 | 架构选型、技术栈变更 | "lab3用MyBatis" |
| 踩坑记录 | "踩了个坑"、"注意X会Y" | "PyInstaller中文路径报错" |
| 个人特性 | "我喜欢"、"我是"、"我在学" | "我是学生"、"喜欢整洁" |
| 事实信息 | API Key、路径、端口、账号 | "MySQL端口3306" |
3. 搜索已有
写入前 grep 目标文件 + MEMORY.md,找已有相关内容。
4. 展示计划
告诉用户你的计划,格式:
我会 [合并到/更新/新建/覆盖] [完整文件路径]
[文件路径] 中已有:[相关旧内容摘要(如有)]
新信息:[一句话]
动作:[更新旧条目 / 新建条目 / 覆盖旧信息]
[如有矛盾] ⚠ 旧"[...]"会被新信息替代
[如有过时] 旧的 [文件路径] 中的"[...]"会随之删除
[如有互补] 新旧不冲突,各自保留并互链
等待确认后再写。
5. 用户确认
给用户纠正位置或内容的机会。用户说"对"或"可以"才继续。
6. 执行归位
按位置矩阵写入。遵循融入规则(8条)。
7. 周边整理
写入后检查:
- MEMORY.md 索引描述是否还需更新?
- 同目录其他文件有没有因本条而过时的?
- 有没有文件变空或只剩一条?
"忘掉"流程(6步)
1. 搜索匹配
grep MEMORY.md + 所有 memory 文件中匹配的内容。
如果只匹配到一个 → 继续。
如果匹配到多个 → 列出所有结果让用户选。
如果没匹配到 → 告知用户,确认是否换个关键词。
2. 展示确认
找到以下匹配:
1. [文件路径] — [内容摘要]
2. [文件路径] — [内容摘要]
要删除的是哪些?(全部删除 / 只删第N条 / 不删了)
3. 分析影响
删除 [文件路径] 中的"[...]"后:
- 该文件还剩 [N] 条内容
- MEMORY.md 索引需要更新 [是/否]
- 相关文件 [X] 中也有引用,需要调整 [是/否]
4. 展示影响
删除后我会:
- 删除 [文件路径] 中的对应内容
- 从 MEMORY.md 移除链接 [如果文件变空]
- 将剩余内容合并到 [上级文件] [如果只剩一条]
5. 用户确认
6. 执行删除 + 整理结构
删内容 + 更新索引 + 清理空文件 + 合并孤立条目。
位置矩阵
| 类型 \ 层级 | 全局 | 项目 | 子项目 |
|---|
| 偏好习惯 | 全局 MEMORY | 项目 feedback-style | — |
| 工具选择 | settings.json / 全局 CLAUDE.md | 项目 CLAUDE.md | 子项目 CLAUDE.md |
| 项目决策 | — | 项目 CLAUDE.md / memory | 子项目 CLAUDE.md |
| 踩坑记录 | — | 项目 dev-lessons | 子项目 memory |
| 个人特性 | 全局 MEMORY (user-profile) | — | — |
| 事实信息 | settings.json / 全局 MEMORY | dev-env.md / memory | 子项目 memory |
详细分层判定见 references/layer-guide.md。
融入规则(8条)
- 先搜后写 — 写入前 grep 目标文件 + MEMORY.md。没搜就写等于盲写。
- 更新优于追加 — 旧条目能覆盖就在原处改,不追新条目。例:旧"JDK 21"→ 新"JDK 24",改数字,不在文末加"对了现在用24了"。
- 矛盾以新为准 — 新旧冲突 → 新替旧,旧内容删除。不同时保留两版。
- 互补建立链接 — 新旧相关但不重叠 → 各自保留,互相引用(
[[wikilinks]] 或文件内链接)。
- 删除不留残骸 — 删内容后:文件变空 → 删文件+从索引移除;只剩一条 → 考虑合并到上级;多条 → 保留。
- 绝对时间 — 所有时间用
YYYY-MM-DD 格式。
- 一条一事 — 每个记忆条目只说一件事。
- 面向读者 — 下一个 agent 只有 5 秒扫过。
详细示例见 references/merge-examples.md。
优化建议(视情况,不强制)
| 条件 | 建议 |
|---|
| 同层同类记忆 > 3 条分散 | "要不要合并成一个文件?" |
| 删除后周边孤立 | "旁边的 X 也跟这条相关,要不要一起整理?" |
| ≤3 条且不孤立 | 不说,不增加对话噪音 |
特殊情况
模糊匹配:关键词匹配到多个结果 → 列出让用户选。
没匹配到(忘掉时):告知用户,确认是否换个关键词。
首次使用:记忆系统可能不完整,正常处理,写入时自动创建缺失的文件结构。
跨层信息:一条信息同时影响全局和项目 → 两边都写,全局写原则、项目写具体。