Claude 如何记住你的项目
使用 CLAUDE.md 文件为 Claude 提供持久指令,并让 Claude 通过自动记忆自动积累学习。
每个 Claude Code 会话都从一个全新的上下文窗口开始。两种机制可以跨会话传递知识:
- CLAUDE.md 文件:你编写的指令,为 Claude 提供持久上下文
- 自动记忆:Claude 根据你的更正和偏好自己编写的笔记
CLAUDE.md 与自动记忆对比
| CLAUDE.md 文件 | 自动记忆 | |
|---|---|---|
| 谁编写 | 你 | Claude |
| 包含内容 | 指令和规则 | 学习和模式 |
| 范围 | 项目、用户或组织 | 每个工作树 |
| 加载到 | 每个会话 | 每个会话(前 200 行) |
| 用于 | 编码标准、工作流、项目架构 | 构建命令、调试见解、偏好 |
CLAUDE.md 文件
选择 CLAUDE.md 文件的位置
| 范围 | 位置 | 目的 | 共享对象 |
|---|---|---|---|
| 托管策略 | 系统级目录 | 组织范围指令 | 组织中的所有用户 |
| 项目指令 | ./CLAUDE.md 或 ./.claude/CLAUDE.md |
项目的团队共享指令 | 通过源代码控制的团队成员 |
| 用户指令 | ~/.claude/CLAUDE.md |
所有项目的个人偏好 | 仅你(所有项目) |
| 本地指令 | ./CLAUDE.local.md |
个人项目特定偏好 | 仅你(当前项目) |
设置项目 CLAUDE.md
运行 /init 自动生成起始 CLAUDE.md。Claude 分析你的代码库并创建一个包含构建命令、测试指令和项目约定的文件。
编写有效的指令
大小:每个 CLAUDE.md 文件目标在 200 行以下。
结构:使用 markdown 标题和项目符号来分组相关指令。
具体性:编写具体到足以验证的指令:
- “使用 2 空格缩进” 而不是 “正确格式化代码”
- “在提交前运行
npm test“ 而不是 “测试你的更改” - “API 处理程序位于
src/api/handlers/“ 而不是 “保持文件有组织”
导入其他文件
CLAUDE.md 文件可以使用 @path/to/import 语法导入其他文件:
1 | 有关项目概述,请参阅 @README,有关此项目的可用 npm 命令,请参阅 @package.json。 |
CLAUDE.md 文件如何加载
Claude Code 通过从当前工作目录向上遍历目录树来读取 CLAUDE.md 文件。
工作目录上方目录层次结构中的 CLAUDE.md 文件在启动时完整加载。子目录中的 CLAUDE.md 文件在 Claude 读取这些目录中的文件时按需加载。
使用 .claude/rules/ 组织规则
对于较大的项目,使用 .claude/rules/ 目录将指令组织到多个文件中。
设置规则
1 | your-project/ |
路径特定规则
规则可以使用带有 paths 字段的 YAML frontmatter 范围限定到特定文件:
1 | --- |
路径模式示例
| 模式 | 匹配 |
|---|---|
**/*.ts |
任何目录中的所有 TypeScript 文件 |
src/**/* |
src/ 目录下的所有文件 |
*.md |
项目根目录中的 Markdown 文件 |
src/components/*.tsx |
特定目录中的 React 组件 |
使用符号链接跨项目共享规则
1 | ln -s ~/shared-claude-rules .claude/rules/shared |
自动记忆
启用或禁用自动记忆
自动记忆默认开启。要切换它:
1 | { |
或通过环境变量:
1 | CLAUDE_CODE_DISABLE_AUTO_MEMORY=1 |
存储位置
每个项目在 ~/.claude/projects/<project>/memory/ 获得自己的记忆目录:
1 | ~/.claude/projects/<project>/memory/ |
它如何工作
MEMORY.md 的前 200 行在每次对话开始时加载。Claude 通过将详细笔记移到单独的主题文件中来保持 MEMORY.md 简洁。
主题文件如 debugging.md 或 patterns.md 在启动时不加载。Claude 在需要信息时使用其标准文件工具按需读取它们。
使用 /memory 查看和编辑
/memory 命令列出在当前会话中加载的所有 CLAUDE.md 和规则文件,让你切换自动记忆开或关,并提供打开自动记忆文件夹的链接。
故障排除
Claude 不遵循我的 CLAUDE.md
- 运行
/memory验证你的 CLAUDE.md 文件被加载 - 检查相关的 CLAUDE.md 是否在为你的会话加载的位置
- 使指令更具体
- 查找跨 CLAUDE.md 文件的冲突指令
我的 CLAUDE.md 太大了
超过 200 行的文件消耗更多上下文并可能降低遵守度。将详细内容移到使用 @path 导入引用的单独文件中,或将指令拆分到 .claude/rules/ 文件中。
指令似乎在 /compact 后丢失
CLAUDE.md 完全在压缩中存活。在 /compact 后,Claude 从磁盘重新读取你的 CLAUDE.md 并将其新鲜重新注入会话。
本文档来自 Claude Code 官方文档