每次启动 Claude Code 都要从头教一遍?两行配置让它记住你的所有习惯

每次启动 Claude Code 都要从头教一遍?两行配置让它记住你的所有习惯
laude Code 内存配置文档每次用 Claude Code 启动新会话所有上下文都是空白的——上次构建的命令、调试的经验、项目的编码规范全部需要重新输入。这不仅浪费时间更容易因为遗漏导致 AI 输出不符合预期。Claude Code 提供两套互补的记忆机制解决这个问题CLAUDE.md 让你手动维护项目规范自动记忆则让 AI 从日常交互中自动积累经验两者在每次会话启动时自动加载实现跨会话知识传递。概述Claude Code 的每个会话默认都会从全新的上下文窗口开始为了实现跨会话的知识传递系统提供了两套互补的记忆机制帮助开发者持久化项目配置、工作流偏好以及自动积累的开发经验。这两套机制分别是由开发者手动维护的CLAUDE.md指令文件以及由 Claude 自动维护的自动记忆系统两者都会在每次会话启动时自动加载为后续的开发交互提供持久的上下文支持。两大记忆系统对比Claude Code 的两个记忆系统各有侧重适用于不同的场景具体对比如下对比维度CLAUDE.md自动记忆---------维护者开发者Claude 自动维护内容类型手动编写的指令和规则自动学习的模式和经验作用范围项目、用户或组织级单个工作树加载方式每个会话完整加载每个会话加载核心摘要前 200 行或 25KB适用场景编码标准、工作流、项目架构构建命令、调试见解、个性化偏好当你需要主动指导 Claude 的行为时使用CLAUDE.md文件而自动记忆则可以让 Claude 从你的日常交互中自动学习无需手动配置即可逐步适配你的开发习惯。CLAUDE.md 文件概述记忆系统工作流程图是否会话启动加载 CLAUDE.md加载自动记忆读取项目级配置读取用户级配置读取本地级配置加载 MEMORY.md 前200行合并配置到上下文开始会话交互需要记忆新内容?自动写入记忆文件继续交互CLAUDE.md是一种纯文本的 Markdown 文件用于为 Claude Code 提供持久化的指令。你可以为单个项目、个人工作流甚至整个组织创建这类文件Claude 会在每个会话启动时自动读取这些文件的内容将其作为交互的上下文参考。何时添加内容到 CLAUDE.md理解了两套记忆系统的区别后接下来的问题是什么内容该写进 CLAUDE.md你可以将CLAUDE.md看作是记录那些需要反复向 Claude 解释的内容的地方当出现以下场景时就可以考虑将相关内容添加到文件中Claude 第二次犯了同样的错误代码审查中发现了 Claude 需要了解的代码库特定规则你需要在聊天中重复输入和上一个会话相同的更正或澄清内容新加入的队友需要相同的上下文才能提升开发效率建议将文件内容保持为每个会话都需要的核心事实比如构建命令、编码约定、项目布局、固定的行为规则等。如果内容是多步骤的流程或者仅对代码库的一部分生效建议将其拆分到技能配置或路径范围规则中避免主文件过于臃肿。CLAUDE.md 文件的位置与范围CLAUDE.md文件可以存放在多个不同的位置不同的位置对应不同的作用范围更具体的位置会优先于更广泛的位置生效具体如下范围存储位置作用用例示例共享对象托管策略• macOS:/Library/Application Support/ClaudeCode/CLAUDE.md• Linux 和 WSL:/etc/claude-code/CLAUDE.md• Windows:C:\\Program Files\\ClaudeCode\\CLAUDE.md由 IT/DevOps 管理的组织范围指令公司编码标准、安全策略、合规要求组织内所有用户项目指令./CLAUDE.md或./.claude/CLAUDE.md项目团队共享的指令项目架构、编码标准、常见工作流源代码控制下的团队成员用户指令~/.claude/CLAUDE.md适用于所有项目的个人偏好代码样式偏好、个人工具快捷方式仅当前用户所有项目生效本地指令./CLAUDE.local.md个人项目特定偏好可添加到.gitignore个人沙箱 URL、首选测试数据仅当前用户当前项目生效工作目录上方目录层次中的CLAUDE.md和CLAUDE.local.md文件会在启动时完整加载而子目录中的文件则会在 Claude 读取对应目录的文件时按需加载。快速生成项目 CLAUDE.md项目级的CLAUDE.md可以存放在项目根目录的./CLAUDE.md或者./.claude/CLAUDE.md中你可以手动创建这个文件添加适用于所有团队成员的指令比如构建和测试命令、编码标准、架构决策、命名约定和常见工作流。更高效的方式是使用/init命令自动生成初始文件Claude 会自动分析你的代码库创建包含构建命令、测试指令和项目约定的基础文件。如果文件已经存在/init会建议改进而不是覆盖原有内容。你也可以设置CLAUDE_CODE_NEW_INIT1来启用交互式的多阶段配置流程逐步完成文件的初始化。编写有效的指令由于CLAUDE.md的内容是作为上下文加载的而非强制的配置因此指令的编写方式会直接影响 Claude 遵循的可靠性具体的最佳实践如下大小控制每个文件建议控制在 200 行以内过长的文件会消耗更多的上下文空间同时降低 Claude 对指令的遵守度。如果内容较多可以使用路径范围规则来实现按需加载。结构组织使用 Markdown 标题和项目符号来分组相关指令结构化的内容比密集的段落更容易被 Claude 理解和遵循。指令具体性编写足够具体、可验证的指令避免模糊的描述。比如使用 使用 2 空格缩进 代替 正确格式化代码使用 提交前运行npm test 代替 测试你的更改。规则一致性避免编写相互冲突的指令否则 Claude 可能会随机选择其中一条执行。定期审查所有的指令文件删除过时或冲突的内容。导入外部文件CLAUDE.md支持使用path/to/import语法导入其他文件导入的文件会在启动时展开并加载到上下文中支持相对路径和绝对路径也支持递归导入最大深度为 5 层。你可以用这个方式引入 README、package.json 或者其他的工作流指南有关项目概述请参阅 README有关此项目的可用 npm 命令请参阅 package.json。 # 其他指令 - git 工作流 docs/git-instructions.md对于不想提交到版本控制的个人偏好你可以创建CLAUDE.local.md文件它会和主文件一起加载并且可以添加到.gitignore中仅对当前用户生效。如果你的项目已经为其他编码代理使用了AGENTS.md你可以创建一个简单的CLAUDE.md来导入它实现两个工具的指令复用AGENTS.md ## Claude Code 对 src/billing/ 下的更改使用 Plan Mode。CLAUDE.md 文件加载机制Claude Code 会从当前工作目录向上遍历目录树检查每个目录是否存在CLAUDE.md和CLAUDE.local.md文件所有找到的文件都会被合并到上下文中而非相互覆盖。在每个目录中CLAUDE.local.md会在主文件之后加载因此个人偏好会覆盖同层级的共享指令。子目录中的文件不会在启动时加载而是在 Claude 读取对应目录的文件时按需加载。如果你使用了--add-dir标志来访问外部目录默认不会加载这些目录的记忆文件你可以设置CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD1环境变量来启用跨目录的记忆加载CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD1 claude --add-dir ../shared-config使用 .claude/rules/ 组织规则对于较大的项目你可以使用.claude/rules/目录来将指令组织为多个独立的文件实现模块化的管理让团队维护更加清晰。你可以在这个目录中按主题拆分文件比如testing.md、api-design.md等也可以创建子目录来进一步分类。没有配置路径的规则会在启动时加载和主项目指令的优先级相同而配置了路径的规则则会按需加载节省上下文空间。路径范围规则你可以为规则文件添加 YAML 前置配置通过paths字段来限定规则的适用文件这类规则仅在 Claude 处理匹配的文件时才会加载避免无关的指令占用上下文。示例如下--- paths: - src/api/**/*.ts --- # API 开发规则 - 所有 API 端点必须包括输入验证 - 使用标准错误响应格式 - 包括 OpenAPI 文档注释你可以使用 glob 模式来匹配文件支持多模式和大括号扩展--- paths: - src/**/*.{ts,tsx} - lib/**/*.ts - tests/**/*.test.ts ---跨项目共享规则.claude/rules/目录支持符号链接你可以维护一套通用的规则然后通过符号链接共享到多个项目中避免重复配置ln -s ~/shared-claude-rules .claude/rules/shared ln -s ~/company-standards/security.md .claude/rules/security.md你也可以在用户目录~/.claude/rules/中配置个人规则这些规则会适用于你机器上的所有项目用户级规则会在项目规则之前加载因此项目规则可以覆盖个人偏好。组织级集中配置对于大型团队和组织你可以部署集中化的组织范围指令统一管理所有开发者的 Claude 配置。你可以在系统级的托管策略位置创建CLAUDE.md文件通过配置管理工具分发到所有开发者的机器上这个文件无法被个人设置排除确保组织的标准始终生效。在大型 monorepo 中你可以使用claudeMdExcludes设置来跳过无关的指令文件避免加载其他团队的配置{ claudeMdExcludes: [ **/monorepo/CLAUDE.md, /home/user/monorepo/other-team/.claude/rules/** ] }自动记忆功能概述以上是 CLAUDE.md 的完整使用方法接下来看另一套记忆系统——自动记忆它让 Claude 从日常交互中自动积累知识无需手动配置。自动记忆是 Claude Code 的自动化学习功能它可以让 Claude 跨会话自动积累知识无需你手动配置任何内容。Claude 会在开发过程中自动为自己记录笔记包括常用的构建命令、调试的经验总结、架构笔记、代码样式偏好和工作流习惯它会自动判断哪些信息在未来的对话中有用仅保存有价值的内容。自动记忆需要 Claude Code v2.1.59 或更高版本你可以使用claude --version检查当前版本。启用与禁用自动记忆自动记忆默认是开启的你可以通过多种方式切换它的状态在会话中运行/memory命令使用界面中的自动记忆开关进行切换在项目设置中添加配置项{ autoMemoryEnabled: false }通过环境变量禁用设置CLAUDE_CODE_DISABLE_AUTO_MEMORY1自动记忆的存储位置每个项目都会有独立的记忆目录默认路径为~/.claude/projects/project/memory/其中项目标识来自 git 仓库因此同一个仓库的所有 worktree 和子目录会共享一套自动记忆。在 git 仓库外则会使用项目根目录作为标识。你可以在用户或本地设置中自定义存储路径{ autoMemoryDirectory: ~/my-custom-memory-dir }记忆目录的结构如下~/.claude/projects/project/memory/ ├── MEMORY.md # 简洁索引每个会话加载的核心内容 ├── debugging.md # 调试相关的详细笔记 ├── api-conventions.md # API 设计决策记录 └── ... # Claude 创建的其他主题文件自动记忆是机器本地的不会在不同机器或云环境之间共享。自动记忆的工作原理MEMORY.md的前 200 行或前 25KB以先到者为准会在每次对话启动时加载超出的内容不会在启动时加载Claude 会自动将详细的笔记拆分到独立的主题文件中保持核心索引的简洁。当 Claude 需要访问详细的主题内容时会使用标准的文件工具按需读取对应的文件。在交互过程中你可能会看到 Writing memory 或 Recalled memory 的提示这代表 Claude 正在更新或读取你的记忆文件。使用 /memory 管理记忆/memory是 Claude Code 提供的记忆管理命令它可以列出当前会话加载的所有CLAUDE.md、本地指令和规则文件同时提供自动记忆的开关以及打开记忆文件夹的快捷入口。你可以直接选择对应的文件在编辑器中打开并编辑它们。当你告诉 Claude 记住某个内容 时比如 总是使用 pnpm 而不是 npmClaude 会自动将其保存到自动记忆中。如果你想要将内容持久化到项目的CLAUDE.md中可以直接要求 Claude将其添加到 CLAUDE.md或者通过/memory命令手动编辑文件。常见问题与故障排除Claude 不遵循我的 CLAUDE.mdCLAUDE.md的内容是作为用户消息传递的而非系统级的强制配置因此 Claude 会尝试遵循但无法保证严格执行尤其是模糊或冲突的指令。你可以通过以下步骤调试运行/memory验证文件是否被正确加载如果文件未列出说明 Claude 没有找到它检查文件是否存放在正确的加载位置将指令修改得更加具体避免模糊的描述检查是否存在跨文件的冲突指令删除冲突的内容我不知道自动记忆保存了什么