--- name: memory version: 1.0.0 last_updated: 2026-04-09 repository: https://github.com/312362115/claude description: > 记忆管理:手动触发的全局/项目级记忆写入、查看、清理、迁移。 管理 ~/.claude/memory/(全局)和项目级 memory 目录。 触发词:/memory、记住、忘掉、清理记忆、记忆管理、看看记忆。 触发场景:用户想保存跨项目经验、清理过期记忆、查看当前记忆状态。 --- # 记忆管理(Memory) > 记忆是跨会话的备忘录。全局记忆跨项目,项目记忆跟项目走。 ## Slash 命令 | 命令 | 作用 | |------|------| | `/memory list` | 查看全局 + 项目级所有记忆 | | `/memory save <内容>` | 保存一条记忆(自动判断层级和类型) | | `/memory clean` | 批量检查过期/重复记忆,给出清理建议 | | `/memory forget <关键词>` | 删除指定记忆 | | `/memory move <关键词> --to global` | 项目记忆迁移到全局 | | `/memory move <关键词> --to project` | 全局记忆迁移到项目 | > 也可以用自然语言触发:"记住 xxx"、"看看记忆"、"忘掉 xxx"、"清理记忆"。 --- ## 记忆体系 ``` ~/.claude/ ├── memory/ ← 全局记忆(所有项目可见) │ ├── MEMORY.md 索引文件 │ └── *.md 记忆文件 └── projects//memory/ ← 项目记忆(仅当前项目可见) ├── MEMORY.md 索引文件 └── *.md 记忆文件 ``` | 层级 | 存什么 | 示例 | |------|--------|------| | **全局** | 跨项目通用的个人偏好、工作习惯、通用经验 | "我喜欢简洁的提交信息"、"大表加索引用 CONCURRENTLY" | | **项目** | 项目特定的决策、约束、坑 | "这个项目用 SQLite 不支持 ALTER COLUMN" | --- ## 操作 1:写入记忆(save) 用户说"记住xxx"、"保存到记忆"、"这个经验记下来"时触发。 ### 执行流程 ``` 用户要求保存 │ ├─ 判断层级 │ ├─ 跨项目通用?→ 全局(~/.claude/memory/) │ └─ 项目特定?→ 项目级 │ └─ 不确定?→ 问用户 │ ├─ 判断类型 │ ├─ 用户偏好/角色信息 → user 类型 │ ├─ 做法纠正/做法确认 → feedback 类型 │ ├─ 项目阶段性目标/约束 → project 类型 │ └─ 外部资源位置 → reference 类型 │ ├─ 检查去重 │ └─ 读 MEMORY.md 索引,确认没有重复或矛盾的条目 │ ├─ 写入 │ ├─ 创建记忆文件(带 frontmatter) │ └─ 更新 MEMORY.md 索引 │ └─ 确认:"已保存到 [全局/项目] 记忆:[一句话描述]" ``` ### 写入判断三连问 写之前过一遍: 1. **下次对话还需要吗?** → 不需要就不写 2. **能从代码/git/docs 推导出来吗?** → 能推导就不写 3. **是否跨项目通用?** → 通用放全局,特定放项目 ### 不写的 - 代码结构、文件路径、函数签名(从代码看) - Bug 修复方案(从 git 看) - 已经写在 CLAUDE.md 或 docs/ 里的(已有持久化) --- ## 操作 2:查看记忆(list) 用户说"看看记忆"、"当前有哪些记忆"、"memory list"时触发。 ### 执行流程 ``` 1. 读取全局 MEMORY.md(如存在) 2. 读取项目级 MEMORY.md(如存在) 3. 汇总输出,按类型分组 输出格式: ## 全局记忆(X 条) ### Feedback - [标题](文件) — 描述 ### User - [标题](文件) — 描述 ## 项目记忆(X 条) ### Feedback - [标题](文件) — 描述 合计:全局 X 条 + 项目 X 条 ``` --- ## 操作 3:清理记忆(clean) 用户说"清理记忆"、"忘掉xxx"、"记忆过期了"时触发。 ### 单条删除 用户指定要忘掉的内容: 1. 在 MEMORY.md 中找到对应条目 2. 删除记忆文件 3. 从 MEMORY.md 移除索引行 4. 确认:"已删除 [全局/项目] 记忆:[标题]" ### 批量清理 用户说"清理一下记忆"、"检查过期记忆"时: ``` 1. 读取所有记忆文件 2. 逐条检查: │ ├─ project 类型超过 1 个月?→ 标记待确认 ├─ feedback 引用的代码/模块还存在吗?→ 不存在则标记 ├─ 内容已写入 CLAUDE.md 或 docs/?→ 标记可删除 ├─ 两条内容重复或矛盾?→ 标记合并 └─ reference 引用的资源还有效吗?→ 无法验证则标记 3. 输出清理建议(不自动删,让用户确认): ## 记忆清理建议 ### 建议删除(X 条) - [标题] — 原因:内容已沉淀到 CLAUDE.md - [标题] — 原因:引用的模块 src/old/ 已删除 ### 建议合并(X 组) - [标题A] + [标题B] — 内容重叠 ### 建议保留(X 条) - [标题] — 仍然有效 4. 用户确认后批量执行 ``` --- ## 操作 4:迁移记忆(move) 在项目记忆和全局记忆之间迁移。 用户说"这条移到全局"、"这个经验其他项目也能用"时触发。 ``` 1. 复制记忆文件到目标层级的 memory 目录 2. 更新目标层级的 MEMORY.md 3. 删除源层级的记忆文件和索引条目 4. 确认:"已将 [标题] 从 [项目/全局] 迁移到 [全局/项目]" ``` --- ## 与其他 skill 的关系 ``` task-manager 标 done → 自动写入项目记忆(Step 5,按写入规则判断) docs-management Lint → 顺带检查记忆健康 memory-manage(本 skill)→ 用户手动触发写入/查看/清理/迁移 ``` - **自动写入**由 task-manager 负责(复盘时提取经验) - **手动管理**由本 skill 负责(用户主动触发) - 两者互补:自动写入保证不遗漏,手动管理保证不腐烂