Claude Code 要让每个新会话自动读取项目记忆,可以同时使用 CLAUDE.md 与 auto memory。前者由开发者维护,保存必须长期遵守的项目规则;后者由 Claude 自动记录有复用价值的构建命令、调试经验和偏好。每次新会话启动时,Claude Code 会加载适用的 CLAUDE.md,并读取项目 auto memory 的入口文件,从而在新的上下文窗口中恢复必要知识。
Claude Code 不会把上一会话的完整聊天记录原样塞进新会话。新会话拥有新的上下文窗口,旧消息、临时工具输出和没有保存的讨论细节不会自动全部继承。
跨会话延续依赖外部持久化:项目指令文件、自动记忆、代码、Git 历史和任务交接。把这些机制称为“记忆”很方便,但它们本质上仍是会话启动时重新读取的文件。
CLAUDE.md 是人工编写的持久指令,适合编码标准、工作流、项目架构、构建测试命令和硬性限制。团队可以将项目文件提交到 Git,所有成员共享并审查。
Auto memory 是 Claude 自己维护的笔记,适合它在工作中发现的调试方法、常用命令、架构线索和用户偏好。它不会每轮都写入,而是判断某条经验是否可能在未来会话中有用。
两者都会进入新会话,但用途不同。必须遵守的团队规则应由人写入 CLAUDE.md;可以被审计和修正的经验性发现则适合 auto memory。
每个项目对应用户目录下的一份记忆目录,默认结构位于 ~/.claude/projects/<project>/memory/。项目标识根据 Git 仓库生成,因此同一仓库的不同子目录和工作树共享一份 auto memory。
目录中有一个 MEMORY.md 入口文件,还可以包含 debugging.md、api-conventions.md 等主题文件。MEMORY.md 负责索引与精简摘要,详细内容按主题拆分,Claude 需要时再读取。
~/.claude/projects/<project>/memory/
├── MEMORY.md
├── debugging.md
├── api-conventions.md
└── workflows.md
官方文档说明,新会话只自动加载 MEMORY.md 的前 200 行或前 25KB,以先达到的限制为准。超过部分不会在启动时自动进入上下文。
主题文件也不会全部预加载。Claude 通过 MEMORY.md 的索引发现相关主题,再使用普通文件工具按需读取。这个设计避免项目记忆不断增长后挤占整个上下文窗口。
CLAUDE.md 的规则不同:适用文件会完整加载,因此仍应保持简洁。把它拆成导入文件可以改善组织,但若启动时全部导入,并不能减少上下文占用。
Auto memory 默认开启,并要求 Claude Code 版本达到官方规定的最低版本。可以先运行版本命令确认客户端是否支持。
claude --version
在会话中运行 /memory,可查看记忆文件并切换 auto memory。也可以在用户或项目设置中配置 autoMemoryEnabled。需要全局禁用时,官方还提供相应环境变量。
组织环境应通过受控设置决定是否启用,不要让仓库内的不可信配置任意把记忆重定向到敏感目录。
运行 /memory 会列出当前会话加载的 CLAUDE.md、CLAUDE.local.md、规则文件和 auto memory,并提供打开记忆目录的入口。所有 auto memory 都是普通 Markdown,可以阅读、编辑或删除。
界面出现“Writing memory”时,说明 Claude 正在写入项目记忆;出现“Recalled memory”时,说明它正在读取。团队不应把自动写入当作不可见黑箱,应定期审查内容是否准确、必要且不含敏感信息。
某个构建命令反复使用、一次调试发现了稳定原因、同类错误需要遵循固定处理方式,或用户多次纠正相同偏好时,适合进入 auto memory。可以直接告诉 Claude“记住 API 测试需要本地 Redis”。
如果内容是必须由整个团队遵守的规则,应要求把它加入项目 CLAUDE.md,而不是只留在个人机器的 auto memory。例如“禁止测试访问生产数据库”必须是共享且可审查的约束。
Auto memory 保存在本机用户目录,不会自动提交 Git,也不会自动同步到另一台机器或云环境。同一仓库在笔记本、CI 和远程开发机上可能拥有不同记忆。
需要团队共享的知识应写入仓库文档、CLAUDE.md、Issue 或运行手册。不要依赖某位开发者机器上的 auto memory 作为唯一项目知识来源。
官方说明,同一 Git 仓库的多个 worktree 共享 auto memory。这有利于在不同分支继续使用构建和调试经验,但也可能让只适用于某一分支的临时事实影响其他工作树。
记忆中应优先保存跨分支稳定信息,并为版本相关内容标注条件。分支当前进度和未合并设计更适合放在任务交接或分支文档中。
项目可以把共享指令放在根目录的 CLAUDE.md 或 .claude/CLAUDE.md。用户目录下的 CLAUDE.md 保存个人跨项目偏好,子目录中的文件则在 Claude 读取该目录时按需加载。
个人项目偏好可以放在 CLAUDE.local.md 并加入忽略列表,避免提交到团队仓库。外部文件导入首次使用时需要用户批准,防止仓库静默读取任意本地文件。
在项目中运行 /init,Claude 会分析代码库并生成 CLAUDE.md 初稿,包含构建命令、测试说明和检测到的约定。已有文件时,工具应提出改进建议,而不是直接覆盖。
自动生成后必须人工审查并实际运行命令。Claude 能从代码发现的信息有限,安全边界、发布流程和组织要求仍需开发者明确补充。
根项目 CLAUDE.md 在执行上下文压缩后会重新从磁盘注入,因此其中的稳定规则不会只依赖早期聊天。子目录 CLAUDE.md 不会立刻全部重新注入,要等 Claude 再次读取对应目录。
只在聊天里说过的约束可能在压缩后变弱。真正重要的规则应写入 CLAUDE.md,当前任务状态应写入交接文件或 Issue,不能指望压缩摘要保留每个细节。
CLAUDE.md 和 auto memory 作为上下文提供给模型,不是操作系统权限或确定性策略。模糊、冲突或过长的指令可能被忽略。运行 /memory 能确认文件是否加载,却不能保证每条规则都严格执行。
必须在固定时点执行的行为应使用 Hook;不能执行的命令应使用权限拒绝规则;行为正确性应由测试、静态检查和代码审查保证。记忆负责指导,控制机制负责约束。
先运行 /memory 查看目标文件是否列出,再检查当前工作目录与仓库识别是否正确。若使用子目录规则,确认新会话已经读取该目录中的文件。Auto memory 还要确认版本支持且功能没有被设置或环境变量关闭。
如果文件已经加载但行为不一致,检查是否存在相互冲突的全局、项目和子目录指令。把“保持代码整洁”改成“使用两空格缩进并运行指定格式化命令”这类可执行表述。
MEMORY.md 超过启动限制后,后部内容不会自动加载。应把详细经验拆入主题文件,并让入口只保留短摘要和索引。删除已经失效的版本信息与重复条目。
CLAUDE.md 超过约 200 行时也应精简,把目录特定规则移入 path-scoped rules,把复杂流程做成 Skill 或文档。每次都加载的内容必须有足够高的信息价值。
不要让 auto memory 保存密钥、访问令牌、客户数据或完整生产日志。虽然文件默认只在本机,但它仍可能被备份、诊断工具或本机其他进程读取。
团队应定期审计记忆目录,并在机器移交、项目结束或权限撤销时清理。自定义记忆目录必须由用户或策略级配置控制,避免克隆的仓库把记忆写向敏感路径。
CLAUDE.md:团队共享的稳定规则
CLAUDE.local.md:个人项目偏好
MEMORY.md:自动记忆的精简入口
memory/*.md:按需读取的经验主题
Issue / handoff:当前任务进度
tests / hooks / permissions:验证与强制控制
分层后,新会话先获得稳定规则与记忆索引,需要细节时再读取主题文件,并从任务系统恢复当前进度。这样既能持续学习,也能控制上下文噪声。
Claude Code 每个新会话都使用新的上下文窗口,但可以自动加载 CLAUDE.md 和项目 auto memory。CLAUDE.md 由人维护并可随仓库共享,auto memory 由 Claude 写入本地项目记忆目录,启动时只加载 MEMORY.md 的前 200 行或 25KB,再按需读取主题文件。
要让这套机制可靠,需通过 /memory 审计加载内容,保持入口简洁,及时删除过期信息,并把硬约束落实到 Hook、权限和测试中。项目记忆能减少重复解释,却不能替代当前代码、任务交接和真实验证。