来源:官方文档 https://code.claude.com/docs/en/memory (2026 年版本) 一句话本质:自动记忆 = 给模型多配了几个指向 ~/.claude/projects/<项目>/memory/ 的文件读写工具。 “提取记忆”是模型在每轮正常推理时自己完成的,没有 daemon / 后台线程


一、两套记忆的对比#

CLAUDE.md 文件自动记忆(Auto Memory)
谁写Claude 自己
内容指令、规则学习到的偏好、纠正、项目上下文
作用域project / user / org 分级按 git 仓库,一个仓库一份(worktree/子目录共享)
加载方式每次会话开头全量注入每次会话开头注入 MEMORY.md 前 200 行 或 25KB(先到先得)
本质上下文,不是强制配置上下文,不是强制配置

CLAUDE.md 加载顺序(宽→窄,同一目录内 CLAUDE.local.md 追加在 CLAUDE.md 之后):

  1. Managed policy(机器级,IT 下发,不可排除):macOS /Library/Application Support/ClaudeCode/CLAUDE.md
  2. 用户级 ~/.claude/CLAUDE.md + ~/.claude/rules/
  3. 项目级 ./CLAUDE.md./.claude/CLAUDE.md
  4. 本地级 ./CLAUDE.local.md(默认建议加 .gitignore)

二、自动记忆的完整生命周期(按时间顺序)#

阶段 0:配置发现(进程启动)#

CLI 按作用域合并设置(managed policy → user → project → local): autoMemoryEnabledautoMemoryDirectoryclaudeMdExcludes 等。

阶段 1:会话启动加载(launch)#

  1. CLI 定位 memory 目录:~/.claude/projects/<项目>/memory/
    • <项目> 由 git 仓库推导 → 同一仓库的所有 worktree / 子目录共享一份记忆;非 git 目录用目录根
    • 可用 autoMemoryDirectoryCLAUDE_CODE_PROJECT_DIR_NAME 改位置
  2. MEMORY.md 前 200 行 / 25KB(索引),随 CLAUDE.md 一起注入上下文
  3. topic 文件(如 user_role.mdfeedback_testing.md不预载,按需读

阶段 2:对话主循环(每一轮)#

用户输入 → 模型生成 →(可选)调用工具 → 回复。记忆读写就发生在模型自己的工具调用里:

阶段 3:会话结束#

阶段 4:下一次会话#

回到阶段 1:MEMORY.md 索引注入 → 模型按需读 topic 文件 → 新信息写回。


三、记忆分类(写入时记在 frontmatter 的 type 字段)#

type含义例子
user你的角色、专长、工作偏好用 pnpm 不用 npm
feedback你给出的纠正、确认过的做法”API 测试要本地 Redis”
project进行中的工作、截止时间、代码/git 推不出来的决策下周三上线、某模块重构方向
reference项目外信息去哪找issue 系统地址、看板链接

不记:能从代码库/架构/文件路径/调试修复推导出的东西;CLAUDE.md 里已经写过的。


四、存储结构#

~/.claude/projects/<项目>/memory/
├── MEMORY.md # 索引,一行一条,每次会话注入前 200 行/25KB
├── user_role.md # 一条记忆一个文件
├── feedback_testing.md
└── ...

五、子代理(subagent)#


六、常用命令与开关#

操作方式
查看/编辑记忆、开关自动记忆/memory(列出所有记忆文件位置,可开文件夹/用编辑器打开)
查看实际加载了什么/context → Memory files 列表
生成初始 CLAUDE.md/init(自动分析代码库)
关闭自动记忆CLAUDE_CODE_DISABLE_AUTO_MEMORY=1,或 settings.json 设 "autoMemoryEnabled": false(可只对单项目)
自定义记忆目录settings.json 设 "autoMemoryDirectory": "~/my-memory"(任何作用域都行)
排查加载问题/context 确认文件确实加载;InstructionsLoaded hook 可打日志

七、排错速查#