Claude Code 的记忆术:用 Auto-Memory 与 MEMORY.md 给 AI 装上长期记忆
1. 每次开新会话都要重新自我介绍问题出在哪如果你用 Claude Code 写过几天代码大概率经历过这个场景新开一个会话第一句话不是让它干活而是先交代背景——「这个项目用 PostgreSQL 16不是 MySQL」「测试命令要带 --coverage」「包管理用 bun别给我 npm install」。说一次还行说到第十次你开始怀疑它到底有没有记忆。答案是有但默认那本「笔记本」是空的得你先教会它怎么记。Claude Code 的记忆体系分两层一层是你手写的 CLAUDE.md相当于贴在工位上的团队规章另一层是 Auto-Memory相当于 Claude 自己随身带的笔记本会把跨会话学到的项目事实、你的个人偏好记下来下次会话自动翻出来看。这篇就聚焦第二层把 Auto-Memory 和 MEMORY.md、CLAUDE.md 三者的协作关系讲清楚并给出一套可以直接复制的配置骨架最后演示一次「写入 → 重启会话 → 验证生效」的完整动作。适合谁看已经在用 Claude Code 做日常开发、但每次都要重复交代项目约定的开发者或者刚接触 Claude Code想一开始就把记忆机制搭对的同学。读完你能拿到三样东西一份能直接抄的 MEMORY.md 骨架、一份 CLAUDE.md 骨架、以及一套判断「什么该记、什么不该记」的标准。2. 先把 TaoToken 的接入准备好Claude Code 本身是个命令行工具它要调用模型能力需要一个稳定的 API 入口。我这边习惯用 TaoToken 来做统一接入原因是它同时提供 Anthropic 兼容接口和 OpenAI 兼容接口Claude Code 走 Anthropic 协议那条路就行配置一次后面不用反复折腾。你需要先拿到一个 API Key。打开控制台地址 https://taotoken.net/api-keys 登录后创建一个 Key复制出来存好。注意这个 Key 只在创建时完整显示一次关掉页面就看不到了建议直接写进环境变量而不是硬编码到配置文件里。拿到 Key 之后Claude Code 侧需要配置两个环境变量一个是 API 地址一个是认证 Key。地址用 https://taotoken.net/api 这是不带任何追踪参数的干净入口Claude Code 会在这个地址后面自动拼接 /v1/messages 之类的路径。Key 就填你刚才复制的那串。如果你还没装 Claude Code先确认 Node 环境然后用 npm 全局装一下node -v # 建议 18 以上 npm install -g anthropic-ai/claude-code claude --version装完之后先别急着配记忆把基础连通性跑通否则后面记忆不生效你分不清是配置问题还是网络问题。配置方式有两种一种是写进 shell 的 profile一种是 Claude Code 自己的 settings 文件。我推荐后者因为项目之间可以隔离。3. 可复制的配置骨架CLAUDE.md 与 MEMORY.md这一节是重点直接给骨架。先理解分工再抄配置。CLAUDE.md 是你手写的放在项目根目录会被 git 跟踪团队所有人共享。它写的是「规则」——必须遵守的硬约束。Auto-Memory 是 Claude 自动维护的存在本地用户目录下不进 git写的是「经验」——它观察到的稳定事实和你的个人偏好。两者互补不是备份关系。先看 CLAUDE.md 的骨架放在项目根目录# 项目约定 ## 技术栈 - 后端Go 1.22 Gin - 数据库PostgreSQL 16迁移文件在 db/migrations/ - 前端React 18 TypeScript - 包管理pnpm禁止使用 npm 或 yarn ## 开发规范 - 提交前必须执行 pnpm test --coverage - 禁止直接 push main所有改动走 PR - 提交信息遵循 conventional commits 格式 ## 禁止事项 - 禁止 force push 到共享分支 - 禁止在代码中硬编码密钥这份文件每次会话都会被完整加载所以它要短、要硬、要全是「必须」。凡是「建议」「偏好」这类软性的东西不要往这里塞交给 Auto-Memory。再看 Auto-Memory 的目录结构。它按项目路径哈希存放大致长这样~/.claude/projects/-Users-zhangsan-projects-my-app/ └── memory/ ├── MEMORY.md # 核心索引每次会话自动加载前 200 行 ├── architecture.md # 主题文件按需读取 └── patterns.md # 主题文件按需读取关键点MEMORY.md 的前 200 行会在每次会话开始时自动注入上下文超出的部分被截断。所以 MEMORY.md 必须精炼只放索引和最高频的事实详细内容拆到主题文件里MEMORY.md 里留指针。一份可以直接抄的 MEMORY.md 骨架# My-App 项目记忆 ## 技术栈 - 后端Go 1.22 Gin - 数据库PostgreSQL 16迁移文件在 db/migrations/ - 前端React 18 TypeScript - 包管理pnpm不是 npm 或 yarn ## 用户偏好 - 解释代码时用后端类比用户是 Go 背景 - 不要在回复末尾总结「我做了什么」 - 先跑测试再看 diff ## 反复出现的问题 - M1 芯片上编译需要 CGO_ENABLED1 - 详见 patterns.md ## 架构决策 - 详见 architecture.md注意最后两行这就是「索引指针」的写法。主题文件里可以写得很长比如 architecture.md 记录为什么选 PostgreSQL 而不是 MySQL、分表策略怎么定的这些不需要每次会话都加载Claude 需要时会自己去读。4. 写入一次重启会话验证记忆生效配置写好了怎么确认它真的生效走一遍完整动作。第一步启动 Claude Code进入你的项目目录cd ~/projects/my-app claude第二步主动写入一条记忆。在会话里直接说记住这个项目用 bun 而不是 npm测试命令是 bun test --coverageClaude 会把它写进 MEMORY.md。你可以立刻让它确认把当前 MEMORY.md 的内容读出来给我看正常的话你会看到刚才那条被追加进去了格式类似## 用户偏好 - 包管理用 bun测试命令 bun test --coverage第三步退出会话重新启动。这一步是关键因为 Auto-Memory 的加载发生在会话初始化阶段不重启验证不了跨会话持久性。# 退出当前会话 /exit # 重新进入 claude第四步验证。新会话里不要提任何背景直接问这个项目的测试命令是什么如果记忆生效它会回答bun test --coverage而不是反问你「请问你用什么包管理器」。这一步跑通说明 Auto-Memory 的写入、持久化、加载三个环节都正常。第五步测试遗忘。有时候约定变了你得让它忘掉旧的别再记着用 bun 了我们已经切回 npmClaude 会从 MEMORY.md 里删掉相关条目。同样重启会话验证问它包管理用什么应该回答 npm。如果你还想验证模型侧的连通性可以打开模型对话页面 https://taotoken.net/api 对应的对话入口单独发一条消息确认 Key 和额度都正常这样能把「记忆问题」和「接入问题」彻底分开排查。5. 本篇常见错误排查配置过程中最容易踩的坑我按出现频率排一下。记忆写了但下次会话不生效。九成是没重启会话。Auto-Memory 在会话初始化时加载同一个会话里写入的内容不会自动重新注入。先 /exit 再进这是硬性动作。MEMORY.md 太长后面的内容被截断。前 200 行是硬限制超出的部分不会加载。如果你发现某些记忆时灵时不灵去数一下 MEMORY.md 的行数。解决办法是把详细内容拆到主题文件MEMORY.md 只留索引。和 CLAUDE.md 写重复了。有人把「必须用 ESLint」同时写进两个文件结果改了一处忘了另一处行为不一致。记住判断标准需要团队所有人遵守的规则 → CLAUDE.md只是你个人的偏好或 Claude 观察到的经验 → Auto-Memory。两者不要交叉。把临时信息写进记忆。比如「当前正在修登录 bug」这种下次会话这个 bug 早修完了记忆里还留着反而干扰判断。记忆文件是长期记忆不是工作台便签。一次性的任务细节不要记。从未验证就写入。Claude 有时会主动问「需要我记住这个偏好吗」如果你没在多次交互中确认过别急着答应。记错的东西比不记更麻烦因为它会持续影响后续所有会话。找不到记忆目录。路径是按项目绝对路径哈希生成的不同机器、不同用户名下路径不一样。用ls ~/.claude/projects/列出来找和你项目路径对应的那个目录。如果目录不存在说明这个项目还没产生过任何记忆正常写入一次就会创建。Key 或地址配错导致会话直接报错。这种报错通常发生在会话启动阶段和记忆无关。检查环境变量里的地址是不是 https://taotoken.net/api Key 有没有多余空格。接入层面的问题去接入文档 https://taotoken.net/api 对照排查别和记忆问题混在一起查。6. 把记忆机制用成习惯Auto-Memory 这套东西价值不在配置那一刻而在你养成习惯之后。我的做法是项目启动第一天就把 CLAUDE.md 写好把硬规则钉死然后在头几次会话里凡是发现自己重复交代了同一件事就顺手说一句「记住这个」。一周下来MEMORY.md 自然就长成了一本贴合你工作方式的笔记。如果你打算长期用 Claude Code 做编码和 Agent 类任务可以考虑 Coding Plan 这类按周期计费的方式比按量付费更适合高频会话场景具体在 https://taotoken.net/api 的套餐页能看到。接入文档在 https://taotoken.net/api 也有完整说明遇到协议层的报错先去那里对照。最后留一个动作给你现在打开你最常用的那个项目执行ls ~/.claude/projects/看看有没有已经存在的记忆目录。如果有读一遍 MEMORY.md把过时的条目清掉如果没有就在下一次会话里对 Claude 说一句「记住这个项目用 XXX」然后重启验证。这一步做完你才算真正把长期记忆这件事跑通了。