memory
Installation
SKILL.md
记忆管理(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/<path>/memory/ ← 项目记忆(仅当前项目可见)
├── MEMORY.md 索引文件
└── *.md 记忆文件
| 层级 | 存什么 | 示例 |
|---|---|---|
| 全局 | 跨项目通用的个人偏好、工作习惯、通用经验 | "我喜欢简洁的提交信息"、"大表加索引用 CONCURRENTLY" |
| 项目 | 项目特定的决策、约束、坑 | "这个项目用 SQLite 不支持 ALTER COLUMN" |
操作 1:写入记忆(save)
用户说"记住xxx"、"保存到记忆"、"这个经验记下来"时触发。
执行流程
用户要求保存
│
├─ 判断层级
│ ├─ 跨项目通用?→ 全局(~/.claude/memory/)
│ └─ 项目特定?→ 项目级
│ └─ 不确定?→ 问用户
│
├─ 判断类型
│ ├─ 用户偏好/角色信息 → user 类型
│ ├─ 做法纠正/做法确认 → feedback 类型
│ ├─ 项目阶段性目标/约束 → project 类型
│ └─ 外部资源位置 → reference 类型
│
├─ 检查去重
│ └─ 读 MEMORY.md 索引,确认没有重复或矛盾的条目
│
├─ 写入
│ ├─ 创建记忆文件(带 frontmatter)
│ └─ 更新 MEMORY.md 索引
│
└─ 确认:"已保存到 [全局/项目] 记忆:[一句话描述]"
写入判断三连问
写之前过一遍:
- 下次对话还需要吗? → 不需要就不写
- 能从代码/git/docs 推导出来吗? → 能推导就不写
- 是否跨项目通用? → 通用放全局,特定放项目
不写的
- 代码结构、文件路径、函数签名(从代码看)
- 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"、"记忆过期了"时触发。
单条删除
用户指定要忘掉的内容:
- 在 MEMORY.md 中找到对应条目
- 删除记忆文件
- 从 MEMORY.md 移除索引行
- 确认:"已删除 [全局/项目] 记忆:[标题]"
批量清理
用户说"清理一下记忆"、"检查过期记忆"时:
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 负责(用户主动触发)
- 两者互补:自动写入保证不遗漏,手动管理保证不腐烂
Related skills