管理 Claude 的记忆

分类技术博客
作者Anthropic
来源跳转
发表时间

内容

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 工作时,它可能会保存以下内容:

  • 项目模式:构建命令、测试约定、代码风格偏好
  • 调试洞察:棘手问题的解决方案、常见错误原因
  • 架构笔记:关键文件、模块关系、重要抽象
  • 您的偏好:沟通风格、工作流习惯、工具选择

自动记忆的存储位置

每个项目在 ~/.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 导入

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 如何查找记忆

Claude Code 递归读取记忆:从当前工作目录(cwd)开始,Claude Code 向上递归到(但不包括)根目录 /,并读取它找到的任何 CLAUDE.md 或 CLAUDE.local.md 文件。这在大型存储库中特别方便,您可以在 foo/bar/ 中运行 Claude Code,同时在 foo/CLAUDE.mdfoo/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 直接编辑记忆

在会话期间使用 /memory 命令,可以在系统编辑器中打开任何记忆文件,以便进行更全面的添加和组织。

设置项目记忆

假设您想要设置一个 CLAUDE.md 文件来存储重要的项目信息、约定和常用命令。项目记忆可以存储在 ./CLAUDE.md./.claude/CLAUDE.md 中。 使用以下命令为您的代码库引导一个 CLAUDE.md:

使用 .claude/rules/ 进行模块化规则管理

对于较大的项目,您可以使用 .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 始终使用最新信息和上下文。

评论

(0)
未配置登录方式
暂无评论