⚡精通 Claude 第2课:Claude Code Memory 记忆系统完全指南

0 阅读9分钟

memory.png

想象一下:换一台电脑、重开一个会话,Claude居然还记得你项目的编码规范、团队的约定俗成——这就是Memory的价值。

前言

说个扎心的场景:

  • 每次新建Claude会话,都要重新告诉它"我们项目用TypeScript"
  • 团队5个人用Claude,5种不同的代码风格
  • 在公司配好的习惯,回家一看全没了

Claude Code的Memory系统就是来解决这个问题的。 它能让Claude跨会话记住项目标准、团队约定和个人偏好,说白了就是——一次配置,永久生效。

本系列教程带你从零掌握Claude Code。这节课聚焦Memory系统——搞懂它,你就能真正实现"一次配置,永久生效"。


一、Memory是什么?

Memory(记忆系统)是Claude Code提供的一种持久化上下文机制。说人话就是:它不像聊天记录那样关掉就没了,而是把信息存到硬盘里,下次开新会话还能接着用。

核心价值

graph LR
    A[当前会话] -->|保存| B[Memory文件系统]
    B -->|下次加载| C[新会话]
    C -->|使用记忆| D[高效协作]
  • 项目记忆:团队共享的编码规范、架构决策、工作流程
  • 个人偏好:你喜欢的代码风格、常用命令、工作习惯
  • 目录级别规则:针对特定模块或子目录的特殊配置

Memory vs 临时上下文

特性Memory临时上下文(聊完就没)
持久性存硬盘,永久保存关掉就没了
作用范围换电脑换会话都能用仅限当前对话
更新方式手动写入文件随对话累积
版本控制可以提交到Git没法追踪

二、Memory的7个层级

Claude Code的Memory分成7个层级,优先级高的会覆盖优先级低的。理解这个很关键,不然你改的东西可能被更高优先级的覆盖掉了。

完整层级表(按优先级从高到低)

┌─────────────────────────────────────────────────────────────────┐
│  优先级 1 (最高)  Managed Policy                                │
│  路径: Windows: C:\Program Files\ClaudeCode\CLAUDE.md            │
│  适用: 企业/公司强制要求的策略                                    │
├─────────────────────────────────────────────────────────────────┤
│  优先级 1.5      Managed Drop-ins (v2.1.83+)                     │
│  路径: managed-settings.d/ 目录下的 *.md 文件                    │
│  适用: 模块化的策略文件,按字母顺序合并加载                        │
├─────────────────────────────────────────────────────────────────┤
│  优先级 2        Project Memory                                 │
│  路径: ./.claude/CLAUDE.md 或 ./CLAUDE.md                       │
│  适用: 团队共享的项目规范(建议提交到Git)                         │
├─────────────────────────────────────────────────────────────────┤
│  优先级 3        Project Rules                                  │
│  路径: ./.claude/rules/*.md                                     │
│  适用: 模块化的路径特定规则                                       │
├─────────────────────────────────────────────────────────────────┤
│  优先级 4        User Memory                                     │
│  路径: ~/.claude/CLAUDE.md                                      │
│  适用: 个人偏好(所有项目通用)                                   │
├─────────────────────────────────────────────────────────────────┤
│  优先级 5        User Rules                                     │
│  路径: ~/.claude/rules/*.md                                     │
│  适用: 个人规则(所有项目通用)                                   │
├─────────────────────────────────────────────────────────────────┤
│  优先级 6        Local Project Memory                           │
│  路径: ./CLAUDE.local.md                                        │
│  适用: 个人项目本地覆盖(通常被Git忽略)                           │
├─────────────────────────────────────────────────────────────────┤
│  优先级 7 (最低)  Auto Memory                                   │
│  路径: ~/.claude/projects/<project>/memory/                     │
│  适用: Claude自动记录的学习笔记                                   │
└─────────────────────────────────────────────────────────────────┘

加载顺序图

graph TD
    A[Claude启动] --> B{搜索Memory文件}
    B --> C[Managed Policy]
    C --> D[Managed Drop-ins]
    D --> E[Project Memory]
    E --> F[Project Rules]
    F --> G[User Memory]
    G --> H[User Rules]
    H --> I[Local Memory]
    I --> J[Auto Memory]
    J --> K[构建上下文]

    style C fill:#fce4ec
    style D fill:#fce4ec
    style E fill:#e1f5fe
    style F fill:#e1f5fe
    style G fill:#f3e5f5
    style H fill:#f3e5f5
    style I fill:#e8f5e9
    style J fill:#fff3e0

记住这个规则:优先级高的Memory会覆盖优先级低的同名规则。比如公司的Managed Policy说"不能用console.log",那你在Project Memory里写的规则就算冲突了,也以公司的为准。


三、核心命令

3.1 /init - 新项目初始化

刚创建项目时用这个,自动生成CLAUDE.md模板:

# 进入项目目录
cd my-project

# 启动Claude并初始化
claude
/init

推荐用增强模式(多步骤引导,手把手配置):

CLAUDE_CODE_NEW_INIT=true claude
/init

image.png

3.2 /memory - 编辑Memory文件

需要对Memory进行大改时用这个:

/memory

Claude会列出可编辑的Memory文件,选哪个就在哪个里面改。

image.png

3.3 # 前缀 - 快速添加单条规则

这个是日常最实用的。在任何对话中,以#开头就能快速添加记忆:

# 使用TypeScript strict模式

# 文件命名使用kebab-case

# 提交前必须运行npm test

Claude会问你添加到哪个Memory文件。

image.png 其他等效语法

# new rule into memory
你的规则内容

# remember this
你的规则内容

# add to memory
你的规则内容

四、导入外部文档

@语法直接引用现有文档,不用复制粘贴,避免重复维护:

# 项目文档
参见 @README.md 了解项目概述
参见 @docs/architecture.md 了解系统架构
参见 @package.json 查看可用命令

# 从用户目录导入(绝对路径)
@~/.claude/my-project-instructions.md

支持的功能

  • 相对路径和绝对路径都行
  • 可以递归导入(最多5层)
  • 首次从外部位置导入会弹出安全确认
  • 代码块里的@引用不会生效(可以放心展示示例)

五、模块化规则系统

对于大项目,可以用.claude/rules/目录把规则拆分成多个文件。

目录结构示例

my-project/
├── .claude/
│   ├── CLAUDE.md          # 主项目记忆
│   └── rules/
│       ├── code-style.md  # 代码风格规则
│       ├── testing.md     # 测试规范
│       ├── security.md    # 安全要求
│       └── api/           # 子目录
│           ├── conventions.md
│           └── validation.md

~/.claude/
├── CLAUDE.md              # 个人偏好
└── rules/
    ├── personal-style.md  # 个人风格
    └── preferred-patterns.md

路径特定规则

通过YAML frontmatter指定规则只在某些文件里生效:

---
paths: src/api/**/*.ts
---

# API开发规则

- 所有端点必须包含输入验证
- 使用Zod进行Schema验证
- 文档化所有参数和响应类型

支持的glob模式

  • **/*.ts - 所有TypeScript文件
  • src/**/* - src目录下的所有文件
  • {src,lib}/**/*.ts - src和lib目录的TypeScript文件

子目录与符号链接

  • 子目录:规则按递归方式发现,支持按主题分类
  • 符号链接:支持链接到共享规则文件,便于多个项目共享

六、Auto Memory 自动记忆

Auto Memory是Claude自动写入的记忆,会在每次会话中持续学习和更新。

工作原理

~/.claude/projects/<project>/memory/
├── MEMORY.md              # 入口文件(启动时加载前200行)
├── debugging.md           # 主题文件(按需加载)
├── api-conventions.md     # 主题文件(按需加载)
└── testing-patterns.md    # 主题文件(按需加载)

加载时机

  • MEMORY.md的前200行在会话启动时自动加载
  • 主题文件在需要时按需加载

控制Auto Memory

# 禁用Auto Memory
CLAUDE_CODE_DISABLE_AUTO_MEMORY=1 claude

# 强制启用Auto Memory
CLAUDE_CODE_DISABLE_AUTO_MEMORY=0 claude

自定义存储位置

// ~/.claude/settings.json 或 .claude/settings.local.json
{
  "autoMemoryDirectory": "/path/to/custom/memory/directory"
}

七、大型项目:排除无关Memory

在大型monorepo中,某些CLAUDE.md可能与当前工作无关。使用claudeMdExcludes排除它们:

// ~/.claude/settings.json 或 .claude/settings.json
{
  "claudeMdExcludes": [
    "packages/legacy-app/CLAUDE.md",
    "vendors/**/CLAUDE.md"
  ]
}

模式相对于项目根目录匹配。


八、实战示例

示例1:项目Memory完整配置

# 电商平台项目规范

## 项目概述
- **技术栈**: Node.js, PostgreSQL, React 18, Docker
- **团队规模**: 5人开发团队
- **发布时间**: 2025 Q4

## 开发规范

### 代码风格
- 使用Prettier格式化
- ESLint使用airbnb配置
- 最大行长度100字符
- 2空格缩进

### 命名规范
- 文件: kebab-case (user-controller.js)
- 类: PascalCase (UserService)
- 函数/变量: camelCase (getUserById)
- 常量: UPPER_SNAKE_CASE (API_BASE_URL)

### Git工作流
- 分支命名: `feature/描述``fix/描述`
- 提交信息遵循conventional commits
- 必须PR才能合并
- CI必须全部通过
- 至少1人审批

### 测试要求
- 覆盖率≥80%
- 关键路径必须测试
- 单元测试用Jest
- E2E测试用Cypress

## 架构文档
@docs/architecture.md
@docs/api-standards.md

## 常用命令
| 命令 | 用途 |
|------|------|
| npm run dev | 启动开发服务器 |
| npm test | 运行测试 |
| npm run lint | 检查代码风格 |
| npm run build | 生产构建 |

示例2:API模块特定规则

src/api/CLAUDE.md中覆盖根目录规则:

# API模块规范

此文件覆盖根目录CLAUDE.md对本模块的规则。

## 请求验证
- 使用Zod进行Schema验证
- 必须验证输入
- 验证失败返回400并包含字段级错误详情

## 认证
- 所有端点需要JWT Token
- Token放在Authorization头
- Token 24小时后过期

## 响应格式

成功响应:
```json
{
  "success": true,
  "data": { /* 实际数据 */ },
  "timestamp": "2025-11-06T10:30:00Z"
}

错误响应:

{
  "success": false,
  "error": {
    "code": "ERROR_CODE",
    "message": "用户可读的错误信息"
  }
}

### 示例3:会话中快速添加规则

```markdown
User: # 使用React Hooks而不是class组件

Claude: 我将此规则添加到记忆中。应该使用哪个Memory文件?
       1. Project memory (./CLAUDE.md)
       2. Personal memory (~/.claude/CLAUDE.md)

User: 1

Claude:  记忆已保存!

添加到 ./CLAUDE.md:
---

### 组件开发
- 使用函数组件配合React Hooks
- 优先使用Hooks而非class组件
- 复用逻辑使用自定义Hook
- 事件处理器使用useCallback
- 昂贵计算使用useMemo

九、最佳实践

✅ 应该做的

做法说明
保持具体"使用2空格缩进"优于"遵循最佳实践"
保持组织使用清晰的Markdown结构和标题
选择正确层级企业策略→Managed Policy;团队标准→Project;个人偏好→User
利用导入@path/to/file引用现有文档,避免重复
版本控制将项目级CLAUDE.md提交到Git
定期更新随着项目演进更新记忆内容

❌ 避免做的

做法说明
存储密钥永远不要在Memory中放API密钥、密码、token
存储敏感信息不要放PII或私有信息
复制已有内容@导入而非复制文档内容
过于模糊避免"遵循最佳实践"这类笼统表述
文件过长单个Memory文件建议控制在500行以内
过度组织不要创建过多的子目录覆盖

层级选择指南

使用场景推荐层级原因
企业安全策略Managed Policy全组织强制执行
团队代码规范Project通过Git团队共享
个人编辑器快捷键User个人偏好,不共享
API模块标准目录级仅对该模块生效

十、常见问题

Q: Memory文件太多会不会影响性能?

A: Claude会智能加载相关Memory。使用claudeMdExcludes可以排除无关文件。

Q: 如何在团队中推广项目Memory?

A: 将CLAUDE.md提交到Git,确保git clone后即可使用。新成员首次运行/init会自动加载。

Q: Auto Memory和手动Memory的区别?

A: Auto Memory由Claude自动写入,记录它发现的模式;手动Memory由你维护,明确表达项目规范。两者可互补。

Q: 可以在子目录创建Memory吗?

A: 可以。子目录的CLAUDE.md会覆盖父目录的规则,实现路径特定的配置。


总结

Memory系统是Claude Code实现持久化协作的核心。掌握以下要点:

  1. 理解层级:Managed Policy > Project > User > Auto Memory
  2. 使用正确命令/init初始化,/memory编辑,#快速添加
  3. 选择合适层级:团队标准放Project,个人偏好放User
  4. 善用导入@语法避免重复维护
  5. 模块化规则:复杂项目使用.claude/rules/结构化

下一课我们将学习Skills(技能系统),这是实现自动化工作流的关键。


相关资源