306 lines
6.5 KiB
Markdown
306 lines
6.5 KiB
Markdown
<picture>
|
||
<source media="(prefers-color-scheme: dark)" srcset="../../resources/logos/claude-howto-logo-dark.svg">
|
||
<img alt="Claude How To" src="../../resources/logos/claude-howto-logo.svg">
|
||
</picture>
|
||
|
||
# Memory 指南
|
||
|
||
## 概览
|
||
|
||
Memory 让 Claude Code 在不同会话之间保留上下文。你可以把团队规范、项目规则、个人偏好和目录级约束写进 `CLAUDE.md`,让 Claude 在合适的时候自动加载。
|
||
|
||
## Memory 命令速查
|
||
|
||
| 命令 | 作用 |
|
||
|------|------|
|
||
| `/init` | 初始化项目级 `CLAUDE.md` |
|
||
| `/memory` | 打开并编辑记忆文件 |
|
||
| `#` | 快速把当前规则写入 memory |
|
||
|
||
## 快速上手:初始化 Memory
|
||
|
||
### 使用 `/init`
|
||
|
||
在项目目录中运行:
|
||
|
||
```bash
|
||
/init
|
||
```
|
||
|
||
Claude 会根据当前项目生成一个 `CLAUDE.md`,通常包含类似如下结构:
|
||
|
||
```md
|
||
# 项目配置
|
||
## 项目概览
|
||
## 开发规范
|
||
```
|
||
|
||
### 使用 `#` 快速更新记忆
|
||
|
||
当你想把一句规则写入 memory 时,可以直接在输入前加 `#`:
|
||
|
||
```text
|
||
# 这个项目始终使用 TypeScript 严格模式
|
||
# 优先使用 async/await,而不是 promise 链
|
||
# 每次提交前都运行 npm test
|
||
# 文件名统一使用 kebab-case
|
||
```
|
||
|
||
这会把规则加入当前会话能感知到的记忆中。
|
||
|
||
### 使用 `/memory`
|
||
|
||
`/memory` 会打开记忆编辑器,让你在不同范围之间切换:
|
||
|
||
1. 受管策略记忆
|
||
2. 项目记忆(`./CLAUDE.md`)
|
||
3. 用户记忆(`~/.claude/CLAUDE.md`)
|
||
4. 本地项目记忆
|
||
|
||
适合你把长期规则、项目规范和个人偏好分层管理。
|
||
|
||
## Memory 架构
|
||
|
||
Claude Code 的记忆系统通常有以下层级:
|
||
|
||
| 层级 | 作用范围 | 典型内容 |
|
||
|------|----------|----------|
|
||
| 受管策略 | 组织级 | 合规、安全、统一流程 |
|
||
| 项目记忆 | 单个项目 | 架构、编码标准、工作流 |
|
||
| 目录记忆 | 子目录 | 模块约束、局部规范 |
|
||
| 用户记忆 | 单个用户 | 个人偏好、默认设置 |
|
||
|
||
## 记忆层级
|
||
|
||
Claude 会按更接近当前上下文的规则优先使用更具体的 memory。一般来说:
|
||
|
||
- 组织级规则优先于普通偏好
|
||
- 项目规则优先于个人偏好
|
||
- 目录级规则优先于项目级通用规则
|
||
|
||
## 排除规则
|
||
|
||
如果某些 `CLAUDE.md` 不应该被自动加载,可以通过 `claudeMdExcludes` 之类的设置排除。
|
||
|
||
## 配置文件层级
|
||
|
||
项目设置、用户设置和企业托管设置会共同影响 memory 的加载方式。你可以把它理解为:
|
||
|
||
1. 组织策略
|
||
2. 项目设置
|
||
3. 本地设置
|
||
4. 临时会话输入
|
||
|
||
## 模块化规则系统
|
||
|
||
Memory 不一定要写成一个巨大文件。你可以把规则拆成多个目录文件,再按路径组织。
|
||
|
||
### 通过 YAML frontmatter 设置路径规则
|
||
|
||
```md
|
||
---
|
||
description: API development rules
|
||
---
|
||
|
||
# API Development Rules
|
||
```
|
||
|
||
### 子目录与符号链接
|
||
|
||
你可以用子目录和 symlink 把局部规则复用到多个项目区域。
|
||
|
||
## Memory 位置表
|
||
|
||
常见位置包括:
|
||
|
||
- 项目根目录的 `CLAUDE.md`
|
||
- 用户目录的 `~/.claude/CLAUDE.md`
|
||
- 子目录的 `CLAUDE.md`
|
||
|
||
## Memory 更新生命周期
|
||
|
||
一般流程是:
|
||
|
||
1. 创建或编辑 `CLAUDE.md`
|
||
2. Claude 重新加载
|
||
3. 新规则在后续会话中生效
|
||
|
||
## Auto Memory
|
||
|
||
Auto memory 让 Claude 根据当前目录自动寻找并加载合适的记忆文件。
|
||
|
||
### 工作方式
|
||
|
||
Claude 会根据当前工作目录、父目录和已配置路径,逐层查找相关 memory。
|
||
|
||
### 目录结构
|
||
|
||
```text
|
||
project/
|
||
├── CLAUDE.md
|
||
├── src/
|
||
│ ├── CLAUDE.md
|
||
│ └── api/
|
||
│ └── CLAUDE.md
|
||
```
|
||
|
||
### 版本要求
|
||
|
||
某些 auto memory 行为依赖较新的 Claude Code 版本。
|
||
|
||
### 自定义 auto memory 目录
|
||
|
||
如果默认目录不适合你的项目,可以在设置中指定新的 memory 路径。
|
||
|
||
### worktree 和仓库共享
|
||
|
||
在 worktree、monorepo 或多人协作场景中,auto memory 可以帮助保持规则一致。
|
||
|
||
### Subagent 记忆
|
||
|
||
Subagents 也可以拥有自己的记忆范围,用于在各自职责内保持一致性。
|
||
|
||
### 控制 auto memory
|
||
|
||
```bash
|
||
# 当前会话禁用 auto memory
|
||
|
||
# 显式开启 auto memory
|
||
```
|
||
|
||
## 通过 `--add-dir` 添加额外目录
|
||
|
||
你可以用 `--add-dir` 把额外目录也加入 Claude 的可见范围,适合多目录协作。
|
||
|
||
## 实战示例
|
||
|
||
### 示例 1:项目记忆结构
|
||
|
||
```md
|
||
# 项目配置
|
||
## 项目概览
|
||
## 架构
|
||
## 开发规范
|
||
### 代码风格
|
||
### 命名约定
|
||
### Git 工作流
|
||
### 测试要求
|
||
### API 规范
|
||
### 数据库
|
||
### 部署
|
||
## 常用命令
|
||
## 团队联系人
|
||
## 已知问题与解决办法
|
||
## 相关项目
|
||
```
|
||
|
||
### 示例 2:目录级记忆
|
||
|
||
```md
|
||
# API 模块规范
|
||
## API 专属规范
|
||
### 请求校验
|
||
### 身份验证
|
||
### 响应格式
|
||
### 分页
|
||
### 限流
|
||
### 缓存
|
||
```
|
||
|
||
### 示例 3:个人记忆
|
||
|
||
```md
|
||
# 我的开发偏好
|
||
## 关于我
|
||
## 代码偏好
|
||
### 错误处理
|
||
### 注释
|
||
### 测试
|
||
### 架构
|
||
## 调试偏好
|
||
## 沟通方式
|
||
## 项目组织
|
||
## 工具链
|
||
```
|
||
|
||
### 示例 4:会话中更新记忆
|
||
|
||
两种常见方式:
|
||
|
||
1. 直接提要求,让 Claude 把规则写进 memory
|
||
2. 使用 `# new rule into memory` 这种模式追加规则
|
||
|
||
## 最佳实践
|
||
|
||
### 应该做的
|
||
|
||
- 用项目记忆保存团队标准
|
||
- 用目录记忆保存局部差异
|
||
- 先写简洁规则,再逐步补充
|
||
- 把可重复内容写进 `CLAUDE.md`
|
||
|
||
### 不应该做的
|
||
|
||
- 不要把 README 整份复制进 `CLAUDE.md`
|
||
- 不要把明显属于代码的实现细节硬塞进 memory
|
||
- 不要让 memory 变成垃圾桶
|
||
|
||
### 记忆管理建议
|
||
|
||
- 优先引用已有文档,而不是重复粘贴
|
||
- 只保留真正影响 Claude 行为的信息
|
||
- 定期整理过期或冲突的规则
|
||
|
||
## 安装说明
|
||
|
||
### 设置项目记忆
|
||
|
||
#### 方法 1:使用 `/init`(推荐)
|
||
|
||
```bash
|
||
/init
|
||
```
|
||
|
||
#### 方法 2:手动创建
|
||
|
||
```bash
|
||
cp project-CLAUDE.md CLAUDE.md
|
||
```
|
||
|
||
#### 方法 3:快速更新
|
||
|
||
```text
|
||
# Use semantic versioning for all releases
|
||
# Always run tests before committing
|
||
# Prefer composition over inheritance
|
||
```
|
||
|
||
### 设置个人记忆
|
||
|
||
```bash
|
||
cp personal-CLAUDE.md ~/.claude/CLAUDE.md
|
||
```
|
||
|
||
### 设置目录记忆
|
||
|
||
```bash
|
||
cp directory-api-CLAUDE.md src/api/CLAUDE.md
|
||
```
|
||
|
||
### 验证安装
|
||
|
||
- 重新打开 Claude Code 会话
|
||
- 检查 `CLAUDE.md` 是否被自动加载
|
||
- 用一条明显会受 memory 影响的提示词测试
|
||
|
||
## 官方文档
|
||
|
||
如果你想看更详细的行为定义、兼容性和最新限制,建议参考 Claude Code 官方 memory 文档。
|
||
|
||
## 相关概念
|
||
|
||
- [Slash Commands 中文参考](../01-slash-commands/README.md)
|
||
- [Skills 中文指南](../03-skills/README.md)
|
||
- [Subagents 中文参考](../04-subagents/README.md)
|
||
- [Advanced Features 中文指南](../09-advanced-features/README.md)
|