最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Claude Code 如何让每个新会话自动读取项目记忆?
时间:2026-09-16 11:18:01 编辑:袖梨 来源:一聚教程网
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。
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
Auto memory 默认开启,并要求 Claude Code 版本达到官方规定的最低版本。可以先运行版本命令确认客户端是否支持。
claude --version
在会话中运行 /memory,可查看记忆文件并切换 auto memory。也可以在用户或项目设置中配置 autoMemoryEnabled。需要全局禁用时,官方还提供相应环境变量。
组织环境应通过受控设置决定是否启用,不要让仓库内的不可信配置任意把记忆重定向到敏感目录。
如何查看 Claude 记住了什么
运行 /memory 会列出当前会话加载的 CLAUDE.md、CLAUDE.local.md、规则文件和 auto memory,并提供打开记忆目录的入口。所有 auto memory 都是普通 Markdown,可以阅读、编辑或删除。
界面出现“Writing memory”时,说明 Claude 正在写入项目记忆;出现“Recalled memory”时,说明它正在读取。团队不应把自动写入当作不可见黑箱,应定期审查内容是否准确、必要且不含敏感信息。
什么时候应该让 Claude 记住
某个构建命令反复使用、一次调试发现了稳定原因、同类错误需要遵循固定处理方式,或用户多次纠正相同偏好时,适合进入 auto memory。可以直接告诉 Claude“记住 API 测试需要本地 Redis”。
如果内容是必须由整个团队遵守的规则,应要求把它加入项目 CLAUDE.md,而不是只留在个人机器的 auto memory。例如“禁止测试访问生产数据库”必须是共享且可审查的约束。
Auto memory 默认不会跨机器同步
Auto memory 保存在本机用户目录,不会自动提交 Git,也不会自动同步到另一台机器或云环境。同一仓库在笔记本、CI 和远程开发机上可能拥有不同记忆。
需要团队共享的知识应写入仓库文档、CLAUDE.md、Issue 或运行手册。不要依赖某位开发者机器上的 auto memory 作为唯一项目知识来源。
同一仓库的多个工作树如何处理
官方说明,同一 Git 仓库的多个 worktree 共享 auto memory。这有利于在不同分支继续使用构建和调试经验,但也可能让只适用于某一分支的临时事实影响其他工作树。
记忆中应优先保存跨分支稳定信息,并为版本相关内容标注条件。分支当前进度和未合并设计更适合放在任务交接或分支文档中。
CLAUDE.md 的加载层级
项目可以把共享指令放在根目录的 CLAUDE.md 或 .claude/CLAUDE.md。用户目录下的 CLAUDE.md 保存个人跨项目偏好,子目录中的文件则在 Claude 读取该目录时按需加载。
个人项目偏好可以放在 CLAUDE.local.md 并加入忽略列表,避免提交到团队仓库。外部文件导入首次使用时需要用户批准,防止仓库静默读取任意本地文件。
用 init 创建基础项目说明
在项目中运行 /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、权限和测试中。项目记忆能减少重复解释,却不能替代当前代码、任务交接和真实验证。