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_ENABLED=1 - 详见 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」,然后重启验证。这一步做完,你才算真正把长期记忆这件事跑通了。