Claude Code 的每个会话都从空白上下文开始。两种机制让知识跨会话持续:你编写的 CLAUDE.md 指令文件,以及 Claude 自动记录的 Auto Memory。
两种记忆机制对比
| CLAUDE.md 文件 | Auto Memory | |
|---|---|---|
| 谁来写 | 你 | Claude 自动 |
| 包含什么 | 指令和规则 | 学到的习惯和模式 |
| 作用范围 | 项目、用户或组织级 | 按工作目录 |
| 加载时机 | 每次会话启动时 | 每次会话(前 200 行) |
| 适用场景 | 编码规范、工作流、架构 | 构建命令、调试洞察、Claude 发现的偏好 |
CLAUDE.md 文件:持久化指令
四种作用范围
| 范围 | 位置 | 用途 |
|---|---|---|
| 组织级(管理策略) | /etc/claude-code/CLAUDE.md(Linux) | 公司编码标准、安全策略 |
| 项目级 | ./CLAUDE.md 或 ./.claude/CLAUDE.md | 团队共享的项目架构、编码规范 |
| 用户级 | ~/.claude/CLAUDE.md | 个人偏好,适用于所有项目 |
| 本地项目级 | ./CLAUDE.local.md | 个人项目偏好,不提交到 git |
更具体的位置优先级更高。
快速初始化
# 在项目目录中运行,Claude 分析代码库并生成 CLAUDE.md
/init如果 CLAUDE.md 已存在,/init 会建议改进而不是覆盖。
写出有效的指令
大小:每个文件目标 200 行以内。文件越大,消耗 token 越多,遵守度越低。
结构:用 Markdown 标题和列表分组相关指令。结构化的内容比密集段落更容易遵循。
具体性:
-
好:「使用 2 空格缩进」
-
差:「格式化代码」
-
好:「提交前运行
npm test」 -
差:「测试你的改动」
一致性:如果两条规则相互矛盾,Claude 可能随机选一个。定期检查清理过时的规则。
导入其他文件
查看 @README 了解项目概览,@package.json 了解可用命令。
# 额外指令
- git 工作流 @docs/git-instructions.md用 @ 语法引用任意文件,最多递归 5 层。跨 git worktree 工作时,用家目录导入:
# 个人偏好
- @~/.claude/my-project-instructions.mdCLAUDE.md 的加载顺序
Claude Code 从当前工作目录向上遍历目录树,加载每个目录中的 CLAUDE.md 和 CLAUDE.local.md。子目录中的 CLAUDE.md 在 Claude 访问那个子目录时按需加载。
用 .claude/rules/ 组织规则
大型项目可以把指令拆分到多个文件中:
your-project/
├── .claude/
│ ├── CLAUDE.md # 主项目指令
│ └── rules/
│ ├── code-style.md # 编码风格
│ ├── testing.md # 测试规范
│ └── security.md # 安全要求
按路径范围限定规则
规则可以只在特定文件类型或目录中生效:
---
appliesTo:
- "src/api/**/*.ts"
- "*.test.ts"
---
# API 端点规则
所有 API 处理函数必须验证输入并返回标准错误格式。这样规则只在 Claude 处理匹配文件时才加载进上下文,节省 token。
Auto Memory:Claude 自动记笔记
启用 Auto Memory 后,Claude 会根据你的纠正和偏好自动记录笔记,无需手动维护。
存储位置
~/.claude/memory/ # 默认存储位置
├── project-notes.md # 按工作目录自动分类
└── ...
启用/禁用 Auto Memory
# 在对话中
/memory # 查看和编辑记忆内容在 ~/.claude/settings.json 中:
{
"autoMemory": true
}Auto Memory 记录什么?
- 你纠正 Claude 时的新偏好(「不,我们用 4 空格缩进」)
- 构建命令和测试运行方式(Claude 尝试并发现有效的方式)
- 调试洞察(某个模式总是导致问题)
- 你反复提到的偏好
查看和编辑记忆
# 在 Claude Code 对话中
/memory # 打开记忆编辑器常见问题排查
Claude 不遵守 CLAUDE.md 规则?
- 检查文件是否在正确位置
- 确认指令足够具体(避免模糊语言)
- 文件是否超过 200 行?考虑精简
不知道 Auto Memory 保存了什么?
- 运行
/memory查看所有内容
CLAUDE.md 太大了?
- 用
.claude/rules/拆分指令 - 使用
@import将不常用内容放到子文件中
/compact 后指令丢失了?
- 核心指令放在 CLAUDE.md(每次会话重新加载)
/compact压缩的是对话历史,不是 CLAUDE.md
原文:How Claude remembers your project | 来源:Anthropic 官方文档