微信扫码
添加专属顾问
我要投稿
Claude Code的记忆机制大揭秘:从CLAUDE.md到Auto Memory,掌握AI笔记的层级逻辑,避免指令混乱。核心内容: 1. Claude Code的两种记忆类型:用户指令CLAUDE.md和AI自动笔记Auto Memory 2. 六层记忆结构的优先级与作用范围解析 3. 编写高效CLAUDE.md的实用技巧与最佳实践
Claude Code 刚上线了一个新功能叫 Auto Memory - 让 AI 自己记笔记,下次对话自动带上。
听起来很美好,但如果你不理解它的记忆体系是怎么分层的,很容易搞出一堆互相矛盾的指令,或者发现"明明告诉过它"的东西下次又忘了。
这篇把 Claude Code 的记忆机制从头理清。
Claude Code 的记忆分两大类:
.editorconfig 或 .eslintrc,只不过是用自然语言写的一个是你告诉它该怎么做,一个是它自己总结经验。
CLAUDE.md 不是一个文件,而是一个层级体系。从全局到局部,Claude Code 会依次加载:
/Library/Application Support/ClaudeCode/CLAUDE.md |
|||
./CLAUDE.md./.claude/CLAUDE.md |
|||
./.claude/rules/*.md |
|||
~/.claude/CLAUDE.md |
|||
./CLAUDE.local.md |
|||
~/.claude/projects/<project>/memory/ |
越具体的层级优先级越高。项目规则覆盖用户偏好,本地配置覆盖项目配置。
这个设计很像 Git 的配置层级 - --system、--global、--local。
CLAUDE.md 本质上就是 Markdown 文件,用自然语言写指令。比如:
ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(line# 项目约定- 使用 pnpm,不要用 npm- 测试命令:pnpm test- 提交前必须跑 lint# 代码风格- TypeScript 严格模式- 组件用 PascalCase,工具函数用 camelCase- 不要自动加注释和 docstring
几个实用建议:
把常用命令写进去。Claude Code 每次都要去翻 package.json 找构建命令,不如直接告诉它。
写具体的约定,不写模糊的要求。"代码要简洁" 没什么用,"函数不超过 30 行" 才有约束力。
用 /init 自动生成。Claude Code 会扫描项目结构,生成一份基础的 CLAUDE.md。不完美,但比从零开始快。
当项目变大,一个 CLAUDE.md 会变得又长又杂。.claude/rules/ 目录解决这个问题 - 按主题拆分成独立文件:
ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(line.claude/rules/├── frontend/│ ├── react.md│ └── styles.md├── backend/│ ├── api.md│ └── database.md└── testing.md
更有意思的是条件规则 - 只在处理特定文件时生效:
ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(line---paths:- "src/api/**/*.ts"---# API 开发规则- 所有端点必须做输入校验- 使用标准错误响应格式
所有 rules 文件在启动时都会被读取(包括 paths 元数据),但带 paths 的规则只在 Claude 实际读写匹配文件时才生效 - 也就是说,这条规则在你处理前端代码时不会影响 Claude 的行为,只有碰到 src/api/ 下的 TypeScript 文件时才会起作用。
这是新功能。以前所有记忆都要你手动维护,现在 Claude Code 会在工作过程中自己记笔记。
它记什么?
存在 ~/.claude/projects/<project>/memory/ 下,每个项目独立。目录结构是:
ounter(lineounter(lineounter(lineounter(lineounter(linememory/├── MEMORY.md # 索引文件,每次启动加载前 200 行├── debugging.md # 调试相关笔记├── api-conventions.md # API 设计决策└── ...
MEMORY.md 是入口。Claude Code 启动时只加载这个文件的前 200 行,所以它需要保持精简。详细内容放在独立的主题文件里,Claude 需要时再读取。
Auto Memory 默认开启。如果不想用:
/memory,有个开关可以关~/.claude/settings.json 里加 "autoMemoryEnabled": falseCLAUDE_CODE_DISABLE_AUTO_MEMORY=1 强制关闭(适合 CI)你也可以主动让它记住东西:
"记住我们用 pnpm 不用 npm" "保存到记忆:API 测试需要本地 Redis"
反过来也行:
"忘掉之前关于 Redis 的记忆"
记忆文件就是普通 Markdown,随时可以手动编辑。跑 /memory 会打开你的编辑器。
CLAUDE.md 支持 @path/to/file 语法导入其他文件:
ounter(lineounter(lineounter(lineounter(line参考 @README 了解项目概况,@package.json 查看可用命令。# 额外指令- Git 工作流 @docs/git-instructions.md
相对路径基于当前文件所在目录解析,不是工作目录。支持递归导入,最深 5 层。
一个实用场景:如果你用 Git worktree,CLAUDE.local.md 只存在于一个 worktree 里。把个人配置放到 home 目录,然后导入:
ounter(lineounter(line# 个人偏好- @~/.claude/my-project-instructions.md
这样所有 worktree 共享同一份个人指令。
理解加载时机很重要,否则你会纳闷"为什么没生效":
~/.claude/rules/*.md、Auto Memory 的 MEMORY.md 前 200 行.claude/rules/ 里有 paths 字段的规则只在匹配文件时生效这意味着你可以在 monorepo 的每个子包里放自己的 CLAUDE.md,不会一开始就把所有指令都塞进上下文。
几条建议:
.gitignore。你的测试数据路径、沙箱 URL。MEMORY.md 有没有记错的。记忆越多不代表越好。Claude Code 每次启动都会把这些内容塞进 system prompt,占的是你的上下文窗口。写得精准、组织得清楚,比写得多更重要。
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业
2026-02-28
谷歌WebMCP 现已推出抢先预览版
2026-02-28
龙虾养成日记PPT看不过瘾?内部版逐字稿来了
2026-02-28
属于Agent的文件协议来了!Selfware让Agent之间无缝传递上下文
2026-02-28
对话 PallasAI:行业对 GEO 的理解都是错误的,我们想重新定义 GEO
2026-02-28
Claude Code远程控制体验:比OpenClaw更方便,但还在限量开启
2026-02-28
斩获30.5k Star!Claude Code长期记忆插件Claude-Mem开源,实现跨会话上下文无缝保留
2026-02-28
智能体技能构建手册:让AI真正"动手"的模块化艺术
2026-02-27
硬刚OpenClaw!Perplexity全新智能体系统可并行调度19个大模型,网友:可替代3万美金年费彭博终端
2026-01-24
2026-01-10
2026-01-01
2026-01-26
2026-02-03
2025-12-09
2025-12-21
2026-01-09
2026-02-16
2026-02-17
2026-03-01
2026-02-27
2026-02-27
2026-02-26
2026-02-26
2026-02-24
2026-02-24
2026-02-20