Claude Code 拥有两种跨会话的记忆功能:
自动记忆(Auto memory):Claude 会自动保存有用的上下文信息,例如项目模式、关键命令和您的偏好设置。这些信息会在会话之间持续存在。
CLAUDE.md 文件:您编写和维护的 Markdown 文件,其中包含 Claude 应遵循的指令、规则和偏好设置。
这两种记忆类型在每次会话开始时都会被加载到 Claude 的上下文中。不过,自动记忆只加载其主文件的前 200 行。
Claude Code 提供了层次化的多种记忆位置,每种位置都有不同的用途:
| 记忆类型 | 位置 | 用途 | 使用案例示例 | 共享对象 |
|---|---|---|---|---|
| 管理策略 | • macOS: /Library/Application Support/ClaudeCode/CLAUDE.md • Linux: /etc/claude-code/CLAUDE.md • Windows: C:\Program Files\ClaudeCode\CLAUDE.md | 由 IT/运维团队管理的组织级指令 | 公司编码标准、安全策略、合规要求 | 组织内所有用户 |
| 项目记忆 | ./CLAUDE.md 或 ./.claude/CLAUDE.md | 团队共享的项目指令 | 项目架构、编码标准、通用工作流程 | 通过源代码控制共享给团队成员 |
| 项目规则 | ./.claude/rules/*.md | 模块化的、特定主题的项目指令 | 特定语言指南、测试约定、API 标准 | 通过源代码控制共享给团队成员 |
| 用户记忆 | ~/.claude/CLAUDE.md | 适用于所有项目的个人偏好 | 代码样式偏好、个人工具快捷键 | 仅您自己(所有项目) |
| 项目记忆(本地) | ./CLAUDE.local.md | 特定项目的个人偏好 | 您的沙箱 URL、首选测试数据 | 仅您自己(当前项目) |
| 自动记忆 | ~/.claude/projects/ /memory/ | Claude 的自动笔记和学习内容 | 项目模式、调试洞察、架构笔记 | 仅您自己(每个项目) |
在工作目录之上的目录层次结构中的 CLAUDE.md 文件会在启动时完整加载。子目录中的 CLAUDE.md 文件会在 Claude 读取这些目录中的文件时按需加载。自动记忆只加载 MEMORY.md 的前 200 行。更具体的指令优先于更宽泛的指令。
自动记忆是一个持久性目录,Claude 在此记录其工作过程中的学习内容、模式和洞察。与包含您为 Claude 编写的指令的 CLAUDE.md 文件不同,自动记忆包含 Claude 根据会话中发现的内容为自己记录的笔记。
在 Claude 工作时,它可能会保存以下内容:
每个项目在 ~/.claude/projects/ /memory/ 中都有自己独立的记忆目录。路径基于 git 仓库根目录,因此同一仓库内的所有子目录共享一个自动记忆目录。Git 工作树会获得独立的记忆目录。在非 git 仓库中,则使用工作目录作为路径。
该目录包含一个 MEMORY.md 入口点和可选的主题文件:
~/.claude/projects/<project>/memory/
├── MEMORY.md # 简洁的索引,每次会话都会加载
├── debugging.md # 调试模式的详细笔记
├── api-conventions.md # API 设计决策
└── ... # Claude 创建的任何其他主题文件
MEMORY.md 作为记忆目录的索引。在整个会话过程中,Claude 会读取和写入此目录中的文件,并使用 MEMORY.md 来跟踪内容存储的位置。
每次会话开始时,MEMORY.md 的前 200 行会被加载到 Claude 的系统提示中。超过 200 行的内容不会自动加载,Claude 被指示保持简洁,将详细笔记移动到单独的主题文件中。
主题文件(如 debugging.md 或 patterns.md)不会在启动时加载。当 Claude 需要这些信息时,它会使用其标准文件工具按需读取这些文件。
在您的会话过程中,Claude 会读取和写入记忆文件,因此您会看到记忆更新在您工作时发生。
自动记忆文件是您可以随时编辑的 Markdown 文件。使用 /memory 打开文件选择器,该选择器包括您的自动记忆入口点以及您的 CLAUDE.md 文件。/memory 选择器还包括一个自动记忆开关,用于开启或关闭此功能。
要要求 Claude 保存特定内容,请直接告诉它:"记住我们使用 pnpm 而不是 npm"或"将 API 测试需要本地 Redis 实例的信息保存到记忆中"。
您还可以通过设置或环境变量控制自动记忆。
通过将 autoMemoryEnabled 添加到您的用户设置中,可以为所有项目禁用自动记忆:
// ~/.claude/settings.json
{
"autoMemoryEnabled": false
}
通过将 autoMemoryEnabled 添加到项目设置中,可以为单个项目禁用自动记忆:
// .claude/settings.json
{
"autoMemoryEnabled": false
}
使用 CLAUDE_CODE_DISABLE_AUTO_MEMORY 环境变量覆盖所有其他设置。这优先于 /memory 开关和 settings.json,使其在 CI 或托管环境中很有用:
export CLAUDE_CODE_DISABLE_AUTO_MEMORY = 1 # 强制关闭
export CLAUDE_CODE_DISABLE_AUTO_MEMORY = 0 # 强制开启
CLAUDE.md 文件可以使用 @path/to/import 语法导入其他文件。以下示例导入了 3 个文件:
参见 @README 了解项目概述,以及 @package.json 了解此项目的可用 npm 命令。 # 附加说明 - git 工作流 @docs/git-instructions.md
允许使用相对路径和绝对路径。相对路径相对于包含导入的文件解析,而不是相对于工作目录。对于不应提交到版本控制的私人项目特定偏好,请优先使用 CLAUDE.local.md:它会自动加载并添加到 .gitignore。
如果在多个 git 工作树之间工作,CLAUDE.local.md 只存在于一个中。请使用主目录导入,以便所有工作树共享相同的个人指令:
# 个人偏好
- @~/.claude/my-project-instructions.md
为避免潜在的冲突,导入在 Markdown 代码跨度(code spans)和代码块中不会被评估。
此代码跨度不会被当作导入处理`@anthropic-ai/claude-code`
导入的文件可以递归地导入其他文件,最大深度为 5 层。您可以通过运行 /memory 命令查看加载了哪些记忆文件。
Claude Code 递归读取记忆:从当前工作目录(cwd)开始,Claude Code 向上递归到(但不包括)根目录 /,并读取它找到的任何 CLAUDE.md 或 CLAUDE.local.md 文件。这在大型存储库中特别方便,您可以在 foo/bar/ 中运行 Claude Code,同时在 foo/CLAUDE.md 和 foo/bar/CLAUDE.md 中都有记忆。 Claude 还会发现当前工作目录下的子树中的 CLAUDE.md。它们不会在启动时加载,而是在 Claude 读取这些子树中的文件时包含在内。
--add-dir 标志让 Claude 可以访问主工作目录之外的其他目录。默认情况下,这些目录中的 CLAUDE.md 文件不会被加载。
要也从其他目录加载记忆文件(CLAUDE.md、.claude/CLAUDE.md 和 .claude/rules/*.md),请设置 CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD 环境变量:
CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1 claude --add-dir ../shared-config
在会话期间使用 /memory 命令,可以在系统编辑器中打开任何记忆文件,以便进行更全面的添加和组织。
假设您想要设置一个 CLAUDE.md 文件来存储重要的项目信息、约定和常用命令。项目记忆可以存储在 ./CLAUDE.md 或 ./.claude/CLAUDE.md 中。
使用以下命令为您的代码库引导一个 CLAUDE.md:
对于较大的项目,您可以使用 .claude/rules/ 目录将指令组织到多个文件中。这使得团队可以维护专注、组织良好的规则文件,而不是单个大的 CLAUDE.md。
将 Markdown 文件放在项目的 .claude/rules/ 目录中:
your-project/
├── .claude/
│ ├── CLAUDE.md # 主要项目指令
│ └── rules/
│ ├── code-style.md # 代码风格指南
│ ├── testing.md # 测试约定
│ └── security.md # 安全要求
.claude/rules/ 中的所有 .md 文件都会自动作为项目记忆加载,优先级与 .claude/CLAUDE.md 相同。
规则可以使用 YAML 前置元数据中的 paths 字段限定特定文件。这些条件规则仅在 Claude 处理匹配指定模式文件时适用。
---
paths:
- "src/api/**/*.ts"
---
# API 开发规则
- 所有 API 端点必须包含输入验证
- 使用标准错误响应格式
- 包含 OpenAPI 文档注释
没有 paths 字段的规则会无条件加载,适用于所有文件。
paths 字段支持标准通配符模式:
| 模式 | 匹配内容 |
|---|---|
| **/*.ts | 任何目录中的所有 TypeScript 文件 |
| src/**/* | src/ 目录下的所有文件 |
| *.md | 项目根目录中的 Markdown 文件 |
| src/components/*.tsx | 特定目录中的 React 组件 |
可以指定多个模式:
---
paths:
- "src/**/*.ts"
- "lib/**/*.ts"
- "tests/**/*.test.ts"
---
支持花括号扩展,用于匹配多个扩展名或目录:
---
paths:
- "src/**/*.{ts,tsx}"
- "{src,lib}/**/*.ts"
---
# TypeScript/React 规则
这将 src/**/*.{ts,tsx} 扩展为同时匹配 .ts 和 .tsx 文件。
规则可以组织到子目录中以获得更好的结构:
.claude/rules/
├── frontend/
│ ├── react.md
│ └── styles.md
├── backend/
│ ├── api.md
│ └── database.md
└── general.md
所有 .md 文件都会递归发现。
.claude/rules/ 目录支持符号链接,允许您在多个项目之间共享通用规则:
# 链接共享规则目录
ln -s ~/shared-claude-rules .claude/rules/shared
# 链接单个规则文件
ln -s ~/company-standards/security.md .claude/rules/security.md
符号链接会被解析,其内容会正常加载。循环符号链接会被检测并优雅处理。
您可以在 ~/.claude/rules/ 中创建适用于所有项目的个人规则:
~/.claude/rules/
├── preferences.md # 您的个人编码偏好
└── workflows.md # 您的首选工作流
用户级规则会在项目规则之前加载,让项目规则具有更高的优先级。
组织可以部署集中管理的 CLAUDE.md 文件,适用于所有用户。 要设置组织级记忆管理:
在上述记忆类型表格中显示的管理策略位置创建管理记忆文件。
通过您的配置管理系统(MDM、组策略、Ansible 等)部署,确保在所有开发机器上的一致分发。
具体明确:"使用 2 空格缩进"比"正确格式化代码"更好。
使用结构组织:将每个记忆格式为项目符号,并在描述性 Markdown 标题下分组相关记忆。
定期审查:随着项目演进更新记忆,确保 Claude 始终使用最新信息和上下文。