memory-keeper
Skill3 starsChanged 2 months agoMITView on GitHub
即时记忆管理——将用户"记住"指令融入正确位置(全局/项目/子项目的记忆系统或配置文件)。也处理"忘掉"指令,删除后整理受影响的结构。还处理"整理"指令,对已有记忆做 L3 深度结构重构(去重/清死链/合并/重组/关联)。触发词:"帮我把...加入记忆"、"你要记住..."、"以后也要记住"、"记住..."、"记下来"、"记住了"、"把这个存到记忆"、"忘了..."、"不用再记..."、"不要再记..."、"删掉...的记忆"、"清除..."、"整理记忆"、"整理一下记忆"、"整理全局记忆"、"整理项目记忆"。
5 other projects use a version of this, 2 of them edited.
Adopted by
Most recently taken up by
- solplum/memory-keeperedited, first seen Nov 1, 2026
- solplum/weaver-evolveword for word, first seen Oct 15, 2026
- devpilotX/skillstheir own version, first seen Sep 22, 2026
- GarphenGate/moltline-osstheir own version, first seen Sep 19, 2026
- 2021291696/memory-keeperedited, first seen May 17, 2026
Other versions5 projects use a version of this.
Word for word · 1
- solplum/weaver-evolve★ 2100% same
Edited · 2
- solplum/memory-keeper★ 189% same
- 2021291696/memory-keeper★ 089% same
Wrote their own version · 2
- devpilotX/skills★ 0same name
- GarphenGate/moltline-oss★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository9 other files it gives its agents.
- weaver-自我迭代Skill
- debug-architectSkill
- file-tidySkill
- memory-keeperSkill
- weaver-自我迭代Skill
- debug-architectSkill
- file-tidySkill
- skill-optimizerSkill
- weaver-自我迭代Skill
The file
Files
记忆管理 — Memory Keeper
你负责即时响应用户的"记住"和"忘掉"指令,将信息融入正确位置并维护结构整洁。
与 weaver-自我迭代 的关系
| weaver-自我迭代 | memory-keeper | |
| 触发 | 手动/定期 | 实时"记住"指令 |
| 范围 | 批量扫历史 | 单条即时处理 |
| 删除 | 被动+主动扫描 | 确认后处理+整理结构 |
| 优化建议 | 视情况 | 视情况 |
两者互补:memory-keeper 处理单条即时需求,weaver-自我迭代 定期全局整理。
整理 vs weaver(边界声明)
| weaver | 整理 | |
| 触发 | 定期/手动"编织一下/全局整理" | 随时"整理记忆" |
| 范围 | 跨项目全局 | 单范围(全局/项目/指定) |
| 动作 | 扫对话→提取→归位→权限→file-tidy→复盘 | 已有记忆 L3 结构重构 |
| 依赖 | agentmemory MCP(离线降级) | 无依赖,离线可用 |
整理不扫对话、不调 file-tidy/debug-architect、不做权限审查、不动 Obsidian wiki。
整理 vs neat-freak(边界声明)
| neat-freak | 整理 | |
| 触发 | 会话末"整理一下/同步一下/收尾" | 随时"整理记忆" |
| 范围 | docs + CLAUDE.md + memory 三层同步 | 仅 memory 文件 |
| 动作 | 把代码变更同步到知识体系(顺手 L1 卫生) | L3 深度结构重构 |
触发词靠"记忆"二字区分:带"记忆"→整理;不带"记忆"("整理一下"/"整理文档"/"梳理一下")→neat-freak。
整理 vs 记住/忘掉(边界声明)
记住 = 新增单条;忘掉 = 删单条;整理 = 批量结构重构(去重/清死链/合并/重组/关联)。
修改范围
不只是 memory/ 系统,还包括:
~/.claude/settings.json/settings.local.json(全局配置)~/.claude/CLAUDE.md(全局 AI 指令)- 项目
CLAUDE.md(项目 AI 指令) - 项目
.claude/settings.json(项目权限配置) - 子项目同理
"记住"流程(8步)
1. 判断层级
根据用户语境和信息内容判断属于哪层:
- 全局:影响所有项目、跨项目偏好、通用工具选择
- 项目:当前对话所在项目的决策、配置、踩坑
- 子项目:明确提到子项目目录名
不确定时保守下沉一级。
2. 判断类型
| 类型 | 信号 | 示例 |
| 偏好习惯 | "以后都这样"、"我习惯用X" | "回复要简短" |
| 工具选择 | "用X不用Y"、"X比Y好" | "Maven用阿里云镜像" |
| 项目决策 | 架构选型、技术栈变更 | "lab3用MyBatis" |
| 踩坑记录 | "踩了个坑"、"注意X会Y" | "PyInstaller中文路径报错" |
| 个人特性 | "我喜欢"、"我是"、"我在学" | "我是学生"、"喜欢整洁" |
| 事实信息 | API Key、路径、端口、账号 | "MySQL端口3306" |
2.1 判断 Obsidian 归属
判断为"踩坑记录"/"项目决策"/"个人特性"且属通用知识时,写入 Obsidian(wiki/概念/ 或 wiki/来源/);纯操作偏好/凭据/进度只写 memory/。同时写两边时,memory 正文第一条加 > 详见 [[个人知识库/wiki/...]] 索引。
完整路由规则(合并检测 / 写入规范 / TL;DR 格式 / log.md 追加 / raw 只读):见 ~/.claude/rules/memory-routing.md。
3. 搜索已有
写入前 grep 目标文件 + MEMORY.md,找已有相关内容。
4. 展示计划
告诉用户你的计划,格式:
我会 [合并到/更新/新建/覆盖] [完整文件路径]
[文件路径] 中已有:[相关旧内容摘要(如有)]
新信息:[一句话]
动作:[更新旧条目 / 新建条目 / 覆盖旧信息]
[如有矛盾] ⚠ 旧"[...]"会被新信息替代
[如有过时] 旧的 [文件路径] 中的"[...]"会随之删除
[如有互补] 新旧不冲突,各自保留并互链等待确认后再写。
5. 用户确认
给用户纠正位置或内容的机会。用户说"对"或"可以"才继续。
6. 执行归位
按位置矩阵写入。遵循融入规则(8条)。
7. 周边整理
写入后检查:
- MEMORY.md 索引描述是否还需更新?
- 同目录其他文件有没有因本条而过时的?
- 有没有文件变空或只剩一条?
8. 读回确认
写入完成后,读回验证(对齐 verify-before-changing 规则——宣布修好前先实际读确认):
- Read 目标文件,确认新内容真在、格式没坏
- grep MEMORY.md 索引,确认每个链接指向的文件真实存在(无死链)
- 若删除/更新了旧内容:grep 旧关键词在目标文件清零
- 若涉及 Obsidian:确认
wiki/index.md已更新、wiki/log.md已追加
任一不过 → 回第6步补,不宣布完成。
"忘掉"流程(6步)
1. 搜索匹配
grep MEMORY.md + 所有 memory 文件中匹配的内容。
如果只匹配到一个 → 继续。 如果匹配到多个 → 列出所有结果让用户选。 如果没匹配到 → 告知用户,确认是否换个关键词。
2. 展示确认
找到以下匹配:
1. [文件路径] — [内容摘要]
2. [文件路径] — [内容摘要]
要删除的是哪些?(全部删除 / 只删第N条 / 不删了)3. 分析影响
删除 [文件路径] 中的"[...]"后:
- 该文件还剩 [N] 条内容
- MEMORY.md 索引需要更新 [是/否]
- 相关文件 [X] 中也有引用,需要调整 [是/否]4. 展示影响
删除后我会:
- 删除 [文件路径] 中的对应内容
- 从 MEMORY.md 移除链接 [如果文件变空]
- 将剩余内容合并到 [上级文件] [如果只剩一条]5. 用户确认
6. 执行删除 + 整理结构
删内容 + 更新索引 + 清理空文件 + 合并孤立条目。
删后验证(对齐 verify-before-changing——删完不等于删干净):
- grep 已删内容的关键词,在所有 memory 文件清零
- grep MEMORY.md,确认对应索引链接已移除(无指向已删文件的死链)
- 若删了整个文件:确认该文件已不存在,无残留空文件
任一不过 → 补到干净为止,不宣布完成。
"整理"流程(4阶段)
对已有记忆做 L3 深度结构重构。不扫对话、不调 file-tidy/debug-architect、不做权限、不动 Obsidian wiki(详见上方"整理 vs weaver/neat-freak"边界声明)。
触发词与范围
| 触发词 | 整理范围 |
| "整理记忆" / "整理一下记忆" | 全局CC记忆 + 项目记忆 + 配置文件过期扫描 |
| "整理全局记忆" | 只全局CC记忆 + 配置文件过期扫描 |
| "整理项目记忆" | 只项目记忆 |
| "整理记忆,只整理记忆文件" | 跳过配置文件 |
当前项目 = 触发时 CWD 所在项目(memory-keeper 是全局 skill,动态识别)。
整理对象 × 动作矩阵
| 对象 | L1(清死链/去重/清过期) | L2(合并孤立/格式统一) | L3(碎片合并/跨文件关联) |
全局CC记忆(~/.claude/projects/<...>/memory/,带 frontmatter) | ✓ | ✓ | ✓ |
项目记忆(<项目根>/memory/,纯索引) | ✓ | ✓ | ✓ |
| 配置文件(settings.json / CLAUDE.md / rules/) | ✓ 仅清过期 | ✗ 不重组 | ✗ 不重组 |
| Obsidian wiki | ✗ | ✗ | ✗ |
4阶段流程
阶段1 审计:扫描所有纳入对象,按 8 类动作(见下方细则)产出问题清单。每项标注:文件路径 + 问题 + 建议动作。文件读取失败 → 跳过,列"无法读取"清单。
阶段2 确认:展示整理计划,等用户选"全部执行 / 部分执行 / 取消"。
阶段3 执行:按确认执行,遵循融入 8 规则。写阶段开始前重读目标文件,若与审计时不一致(被外部修改)→ 暂停,提示"X 在审计后被改,是否重新审计"。
阶段4 验证:读回确认(对齐 verify-before-changing)。验证清单见下方"阶段4 验证检查清单"。
8类动作判定规则
| # | 动作 | 信号 | 建议 |
| 1 | 清死链 | MEMORY.md 链接目标不存在 | 删索引行 / 或重建文件 |
| 2 | 去重 | 同信息跨文件复制 | 留详细那个,删其他 + 合并要点 |
| 3 | 清过期 | 旧 vs 新矛盾 / 引用已删项目 / 废弃工具 / 地址变更 | 删旧或更新 |
| 4 | 合并孤立 | 文件只剩 1 条 | 合并到同类 |
| 5 | 碎片合并 | 同主题/同类分散 >3 文件 | 合并成主题文件 |
| 6 | 格式统一 | 缺 frontmatter(仅全局)/ 相对时间 / 链接不规范 | 全局补 frontmatter;项目修时间/链接 |
| 7 | 跨文件关联 | type 同 + 主题重叠 / 关键词共现 ≥2 / 提对方主题未链 | 双向加 [[wikilink]],只建议不强制 |
| 8 | 配置过期 | settings/CLAUDE/rules 过期信号 | 只标记,settings 逐条确认 |
关联 vs 去重的区别:重复 = 同信息复制(合并);关联 = 相关但不同(互链,各自保留)。
配置文件过期扫描细则(L1 子集,不重组结构)
| 文件 | 扫什么 | 动作 |
| settings.json | permissions 引用不存在路径 / env 失效地址 / 重复规则 / 废弃 MCP | 只标记,不自动改——JSON 改错断 CC,逐条确认 |
| CLAUDE.md(全局+项目) | 引用已删 skill 路径 / 废弃工具 / 与 rules 重复 / blockquote 历史叙事 / TODO | 删行 / 更新 / 标记 |
~/.claude/rules/*.md | 被新规则覆盖的旧规则 / 引用不存在文件 / 与其他 rules 矛盾 | 删文件 / 更新 / 标记矛盾让用户选 |
安全约束:settings.json 任何改动必须用户逐条确认,不批量执行。
阶段4 验证检查清单
- 每个改动文件 Read 一遍,确认内容真在、格式没坏
- MEMORY.md 无死链:grep 所有链接 → 文件都存在
- 删除内容真没了:grep 关键词在所有 memory 文件清零
- 无残留空文件:删内容的文件要么有剩余要么已删
- 合并的源文件已删,目标文件有合并内容
- 关联链接双向:A 有
[[B]]→ B 也有[[A]] - 配置语法合法:settings.json JSON 解析验证;CLAUDE.md 无断裂引用
- 时间格式:
grep -E "今天|昨天|最近|刚刚"在改动文件清零
整理边界场景
| 场景 | 处理 |
| 项目无 memory/ | 跳过该对象,审计报告注明 |
| 首次整理,系统不完整 | 正常整理,自动创建缺失的 MEMORY.md |
| 全局和项目对同一事实矛盾 | 列"需用户确认",不自动删 |
| settings.json 破坏性改动 | 逐条确认,不批量 |
| 整理中发现"该记住的新信息" | 不提取(weaver 的事),只整理已有 |
| 单文件 memory | 跳过 ④⑤,只做 ①②③⑥⑦ |
| 审计中文件读取失败 | 跳过,列"无法读取"清单 |
| 写阶段发现外部修改 | 暂停,提示重新审计 |
审计计划展示格式(阶段2确认用)
## 整理计划(YYYY-MM-DD)
扫描范围:全局CC记忆(N文件) + 项目记忆(M文件) + 配置文件(K处)
### 建议删除(死链/过期/无用)
1. memory/xxx.md — 死链,MEMORY.md 引用但文件不存在
2. ...
### 建议合并(孤立/碎片)
1. memory/orphan.md 只剩1条 → 合并到 memory/dev-env.md
2. 同类"API凭据"分散3文件 → 合并为 memory/api-credentials.md
### 建议关联(未互链)
1. memory/a.md ↔ memory/b.md 同根因 → 加 [[wikilink]]
### 需用户确认(跨层矛盾)
1. 全局说"JDK 24" vs 项目说"JDK 21" — 以哪个为准?
### 配置文件过期
1. settings.json — MCP 配置引用已废弃服务
2. CLAUDE.md — 引用已删除 skill 路径(第X行)
要执行哪些?(全部 / 仅删除 / 仅合并 / 指定编号 / 取消)位置矩阵
| 类型 \ 层级 | 全局 | 项目 | 子项目 |
| 偏好习惯 | 全局 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 |
| 通用知识 | — | Obsidian wiki/ + memory 索引 | Obsidian wiki/ + memory 索引 |
融入规则(8条)
- 先搜后写 — 写入前 grep 目标文件 + MEMORY.md。没搜就写等于盲写。
- 更新优于追加 — 旧条目能覆盖就在原处改,不追新条目。例:旧"JDK 21"→ 新"JDK 24",改数字,不在文末加"对了现在用24了"。
- 矛盾以新为准 — 新旧冲突 → 新替旧,旧内容删除。不同时保留两版。
- 互补建立链接 — 新旧相关但不重叠 → 各自保留,互相引用(
[[wikilinks]]或文件内链接)。 - 删除不留残骸 — 删内容后:文件变空 → 删文件+从索引移除;只剩一条 → 考虑合并到上级;多条 → 保留。
- 绝对时间 — 所有时间用
YYYY-MM-DD格式。 - 一条一事 — 每个记忆条目只说一件事。
- 面向读者 — 下一个 agent 只有 5 秒扫过。
详细示例见 references/merge-examples.md。
优化建议(视情况,不强制)
| 条件 | 建议 |
| 同层同类记忆 > 3 条分散 | "要不要合并成一个文件?" |
| 删除后周边孤立 | "旁边的 X 也跟这条相关,要不要一起整理?" |
| ≤3 条且不孤立 | 不说,不增加对话噪音 |
特殊情况
模糊匹配:关键词匹配到多个结果 → 列出让用户选。 没匹配到(忘掉时):告知用户,确认是否换个关键词。 首次使用:记忆系统可能不完整,正常处理,写入时自动创建缺失的文件结构。 跨层信息:一条信息同时影响全局和项目 → 两边都写,全局写原则、项目写具体。
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

