# Memory

> 记忆管理：手动触发的全局/项目级记忆写入、查看、清理、迁移。 管理 ~/.claude/memory/（全局）和项目级 memory 目录。 触发词：/memory、记住、忘掉、清理记忆、记忆管理、看看记忆。 触发场景：用户想保存跨项目经验、清理过期记忆、查看当前记忆状态。

- Skill: `312362115/memory` (Agent Skill)
- Install (CLI): `npx skillmds@latest add 312362115/memory`
- Raw SKILL.md: https://api.skillmd.com/api/skills/312362115/memory/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: 312362115 (https://skillmd.com/u/312362115)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/312362115/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/<path>/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 负责（用户主动触发）
- 两者互补：自动写入保证不遗漏，手动管理保证不腐烂

