
1. 为什么你的 Claude Code 总是“失忆”从上下文丢失到持久记忆的完整解法用 Claude Code 写代码最让人抓狂的瞬间往往不是它写不出来而是它明明上一轮还记得“这个项目用 pnpm 不用 npm”下一轮又开始npm install刚跟它强调过“测试文件别动”转头就把tests/目录重构了一遍。这种上下文丢失不是模型变笨了而是你还没把 Claude Code 的记忆机制用起来。Claude Code 其实内置了两套互补的记忆系统一套是你主动写给它的CLAUDE.md相当于项目的“员工手册”另一套是它自己写给自己的auto memory相当于它的“工作笔记”。再配合斜杠命令和 checkpoint 回滚就能形成一套可复用的持久上下文工作流。这篇内容我会把 CLAUDE.md 模板、auto memory 触发条件、checkpoint 验证步骤全部拆开讲目标是你照着配置一次之后长期受益。适合谁看已经在用 Claude Code 做日常开发、但每次会话都要重复交代项目背景的开发者团队里想把 AI 编码规范沉淀下来的技术负责人以及刚接触 Claude Code、想少踩坑的新手。核心检索词就三个Claude Code、CLAUDE.md、auto memory全文围绕它们展开。先说清楚一个前提Claude Code 的模型调用需要一个稳定的 API 入口。我这边一直用 TaoToken 作为接入层它的 Base URL 和 Key 配置方式在下面第二节会给出完整片段你照着填就行。下面进入正题。2. CLAUDE.md 项目记忆配置让 Claude Code 一次读懂你的项目约定CLAUDE.md 是 Claude Code 启动时自动读取的“项目说明书”。它会在会话开始时把几个位置的 CLAUDE.md 内容拼进上下文所以你提前写好的规则不用每次重复交代。2.1 四个加载位置优先级要搞清楚Claude Code 读取 CLAUDE.md 的位置有四个层级从团队共享到个人偏好依次是位置路径作用范围是否进仓库项目级当前工作目录./CLAUDE.md团队共享记录架构、命令、规范是项目本地级./CLAUDE.local.md个人临时偏好否建议加.gitignore用户级~/.claude/CLAUDE.md个人全局偏好所有项目生效否子目录级monorepo各子目录CLAUDE.md读到该目录文件时才加载视情况简单说项目级放团队共识本地级放你自己的小习惯用户级放跨项目的通用偏好。monorepo 场景下子目录的 CLAUDE.md 只在 Claude 读到那个目录的文件时才顺带加载不会一股脑塞进上下文。2.2 一份可直接复制的 CLAUDE.md 模板下面这份模板我实测下来覆盖了大多数 Next.js 全栈项目你可以直接改# 项目说明 这是一个 Next.js 全栈项目前后端同仓库。 ## 开发命令 - npm run dev 启动本地开发服务器端口 3002 - npm run build 生产构建 - npm run typecheck 类型检查提交前必跑 - npm run test:unit 只跑单元测试 ## 代码约定 - 组件用 TypeScript 函数式写法禁用 class component - 样式统一用 Tailwind CSS不要写 inline style - 不要在客户端组件里直接 import 服务器模块 - 所有 API 请求走 src/lib/api-client.ts不要裸写 fetch ## 提交规范 - commit message 用 feat: / fix: / chore: 前缀 - 提交前必须通过 typecheck 和 unit test ## 环境变量 - 本地开发读 .env.local不要提交 - 新增环境变量必须同步更新 .env.example这份文档相当于一份长期生效的系统提示词。你写进去的每一条都是省下来的重复解释。2.3 用 /init 生成初版再手动精简懒得手写也没关系。在 Claude Code 会话里输入/init它会自己扫一遍项目总结架构和命令生成一份初版 CLAUDE.md你在这个基础上改就行。官方给的经验是CLAUDE.md 越短越好。它每次会话都加载写得臃肿反而会让重要规则被淹没。适合写进去的是 Claude 猜不到的东西内部自定义脚本、特殊 build 流程、测试运行方式、提交规范、项目特有的环境变量和隐含约束。不适合写的是Claude 读代码就能看出来的目录结构、详细 API 文档链接过去就行、频繁变动的任务进度以及“写干净的代码”这种废话。我踩过的一个坑早期我把整个 API 文档贴进 CLAUDE.md结果每次会话上下文被占掉一大块真正重要的“别动 tests 目录”反而被淹没。后来改成只留一句“API 文档见 docs/api.md”效果立刻好转。2.4 一个让 CLAUDE.md 越用越准的习惯每当发现 Claude 反复犯同一个错就把“正确的做法”加一条到 CLAUDE.md下次不用再重复纠正。久了它就像一份项目的用户手册团队其他成员也能用。这个习惯配合下面的 auto memory基本能解决 80% 的上下文丢失问题。3. auto memory 自动记忆机制Claude 自己写的笔记怎么触发与维护CLAUDE.md 是你写给 Claude 的指令auto memory 是 Claude 自己写给自己的笔记两者互补。理解它们的差异是用好这套机制的关键。3.1 CLAUDE.md 与 auto memory 的关键差异维度CLAUDE.mdauto memory谁写你也可让 Claude 帮你更新Claude 自己内容规则、架构、约定观察到的经验、偏好、调试思路触发时机你手动编辑Claude 自动判断是否值得记加载方式每次会话全量加载索引文件加载topic 文件按需读比如你随口一句“这个项目以后用 pnpm 不用 npm”或者告诉它“每次改完要跑npm run typecheck”Claude 觉得值得记住时就会把这条笔记写进 memory 文件下次会话自动加载。你不用主动维护它自己会维护这套 memory。3.2 memory 文件的目录结构与加载规则记忆文件按项目目录区分每个项目有独立目录~/.claude/projects/项目路径/memory/ ├── MEMORY.md # 索引每次会话启动时加载前 200 行 ├── debugging.md # 按主题分的笔记文件 ├── api-conventions.md └── ...其中项目路径是把项目绝对路径里的/替换成-得到的名字。比如/Users/alice/code/myapp对应的目录就是~/.claude/projects/-Users-alice-code-myapp/memory/。MEMORY.md是索引文件启动时自动加载上限是前 200 行或 25KB。其他 topic 文件不会一股脑塞进上下文Claude 按需读取保证启动成本可控。所有文件都是普通 Markdown你随时可以打开看、改、删。3.3 触发 auto memory 的三种方式第一种是自然语言触发。你直接说“把 xxx 记到 memory 里”Claude 就会写入。第二种是隐式触发Claude 在对话中判断某条信息值得长期保留自动记录。第三种是通过/memory命令手动管理。日常管理用/memory命令输入后会列出当前会话加载的所有 CLAUDE.md、CLAUDE.local.md、auto memory 文件选中就能直接在编辑器里打开。这个面板里也能一键开关 auto memory。3.4 两个必须知道的限制auto memory 的文件是本地存储的不会跨机器同步。换一台电脑或者在云端跑memory 要重新积累。另外 memory 目录是按项目路径存的如果你把项目文件夹改了名或者挪了位置Claude 会把它当成一个新项目之前积累的 memory 就找不到了。我个人觉得这套机制挺有用它能帮你积累那些自己都没意识到的习惯比如某个项目的特定测试命令、某个库的坑点。隔一段时间/memory看看你会发现 Claude 记下的东西比你想象的多。4. 斜杠命令与 checkpoint 配合打造可复用的持久上下文工作流光有记忆还不够日常开发中真正让上下文“活”起来的是斜杠命令和 checkpoint 回滚的配合。这一节给出可复制的配置和验证步骤。4.1 接入配置Base URL Key Model ID 三件套在开始之前先把 Claude Code 的接入配置写对。我用的是 TaoToken 的 API 入口配置文件放在~/.claude/settings.json完整片段如下{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_AUTH_TOKEN: sk-你的TaoToken密钥, ANTHROPIC_MODEL: claude-sonnet-4-6 } }三个字段缺一不可ANTHROPIC_BASE_URL指向 API 入口ANTHROPIC_AUTH_TOKEN填你在控制台生成的 KeyANTHROPIC_MODEL指定模型 ID。Key 的获取入口在 TaoToken 控制台的 API Keys 页面生成后复制粘贴即可。配置完成后在会话里输入/status确认 Anthropic base URL 显示的是你填的地址。这一步是后面所有验证的前提。4.2 值得记住的斜杠命令清单进入 Claude Code 之后这几个斜杠命令值得记一下/model查看和切换当前模型。上下方向键切换模型左右方向键调整推理强度reasoning effort共 low/medium/high/xhigh/max 五档。强度越高效果越好但速度更慢、token 消耗更多。/clear清除当前上下文重新开始一轮新对话。做完一个任务换下一个时一定要/clear否则旧上下文堆着会干扰 Claude 的判断还白白消耗 token。/compact手动压缩当前对话。上下文快满时 Claude 会自动压缩你也可以主动触发。可以加参数指导它侧重保留什么比如/compact 侧重 API 改动相关的部分但它只是影响摘要的侧重点不能精确裁剪。/status打开设置面板查看版本、模型、账号和连接状态最常用的是确认 base URL 是不是对的。/init生成项目的 CLAUDE.md。/simplify让 Claude 审查你最近改动过的文件从代码复用、质量和效率三个角度找问题并自动修复。写完一段代码之后跑一下相当于让 Claude 帮你做一轮 code review 加自动重构。/insights生成一份当前项目的使用报告分析你和 Claude 的交互模式、常碰到的摩擦点、项目里哪些区域改动最多。适合隔一段时间跑一次。在输入框里用可以引用具体文件比如src/auth.ts让 Claude 直接读这个文件的内容比让它自己搜快得多也更准。要输入长 prompt 时按Ctrl G可以把当前输入丢到默认编辑器里打开编辑完保存关闭内容会回填到输入框。4.3 checkpoint 回滚验证步骤按两下Esc或者输入/rewind会打开撤销菜单列出之前所有的检查点checkpoint。checkpoint 是 Claude Code 在本地自动保存的对话状态和文件快照选中某个检查点对话会退回到那个时刻Claude 之前改过的代码文件也会一起自动撤销不用你手动git checkout。每次你提交一条 prompt 都会自动存一个 checkpoint相当于一张安全网。验证步骤我建议这样走第一步让 Claude 改一个文件比如“把src/utils/format.ts里的日期格式化函数改成用 dayjs”。第二步等它改完按两下Esc打开撤销菜单确认列表里出现了刚才那个 checkpoint。第三步选中它观察对话是否退回文件是否恢复原样。第四步用git diff确认工作区干净。有两个坑要注意checkpoint 只追踪 Claude 通过 Edit / Write 工具直接改的文件。如果 Claude 是执行rm、mv这种 bash 命令改的不在追踪范围内也就没法 rewind 回来。另外 checkpoint 不是 git 的替代品默认保留 30 天左右就会清理关键代码还是要靠版本控制。4.4 恢复历史会话与多任务并行关掉终端、电脑重启、第二天接着干活会话不会丢。Claude Code 自动保存每个会话的记录# 继续当前目录下最近一次会话 claude --continue # 从最近的会话列表里挑一个 claude --resume注意--continue只认当前目录下最近的那次会话。如果你到了别的项目目录下跑这条命令它不会把你带回“上次那个项目”。多任务并行时用/rename命令给会话起个描述性的名字比如oauth-migration或debug-memory-leak之后--resume时就能一眼找到想要的那个。我的习惯是把每个待办事项当成一个独立会话跑像 git 分支一样管理不同任务的上下文互不污染切回来继续也没有额外心智成本。5. 常见报错排查401、local proxy failed、reading choices 与 OAuth 问题配置和使用过程中最容易卡住的就是接入层的报错。这一节对照真实报错给出排查路径。5.1 401 Unauthorized报错长这样API Error: 401 Unauthorized - invalid x-api-key原因通常是 Key 填错、Key 过期或者ANTHROPIC_AUTH_TOKEN和ANTHROPIC_API_KEY两个字段混用了。排查步骤打开~/.claude/settings.json确认ANTHROPIC_AUTH_TOKEN的值是完整的 Key没有多余空格去 TaoToken 控制台的 API Keys 页面确认这个 Key 还在有效期内如果同时存在ANTHROPIC_API_KEY删掉它只保留ANTHROPIC_AUTH_TOKEN。5.2 local proxy failed报错长这样Error: local proxy failed to start这个通常是本地端口被占用或者 settings.json 里配置了冲突的代理字段。排查检查settings.json里有没有残留的HTTP_PROXY/HTTPS_PROXY字段有就删掉确认没有其他进程占用 Claude Code 需要的端口重启终端再试。5.3 reading choices 相关报错报错长这样Error: reading choices: unexpected end of JSON input这多半是响应体被截断常见于网络不稳定或 Base URL 配错。排查用/status确认 base URL 是https://taotoken.net/api注意结尾不要多加/v1检查模型 ID 是否拼写正确比如claude-sonnet-4-6不要写成claude-sonnet-4.6如果持续出现换一个网络环境重试。5.4 OAuth 相关报错报错长这样OAuth error: invalid_grant如果你用的是 API Key 模式不应该触发 OAuth 流程。出现这个报错说明 Claude Code 还在尝试走账号登录。排查确认settings.json里已经配置了ANTHROPIC_AUTH_TOKEN删除~/.claude/下残留的 OAuth 凭证文件重新启动 Claude Code。5.5 排查通用原则所有接入层报错先跑/status看 base URL 和模型 ID再看settings.json的字段拼写最后看 Key 的有效期。这三步能解决绝大多数问题。如果还不行去 TaoToken 的接入文档对照最新的配置示例文档会随版本更新。6. 把记忆工作流沉淀成团队资产从一次配置到长期受益走到这里你已经有了 CLAUDE.md 模板、auto memory 触发方式、checkpoint 验证步骤以及一套报错排查路径。最后说几个让它真正“长期受益”的实操建议。第一把 CLAUDE.md 当成代码来维护。每次发现 Claude 重复犯错就加一条规则进去提交到仓库。团队其他人拉下来就自动生效相当于把 AI 编码规范沉淀成了项目资产。第二定期跑/memory和/insights。前者让你看到 Claude 自己记了什么后者让你看到自己的交互模式。我实测下来每隔两周看一次总能发现几条被忽略的高频摩擦点。第三会话管理像 git 分支一样做。一个任务一个会话用/rename起名用--resume切换。上下文互不污染切回来继续也没有额外心智成本。第四checkpoint 是安全网不是保险箱。关键改动前还是先git commitcheckpoint 只兜底 Claude 通过 Edit / Write 改的文件bash 命令改的它管不了。如果你还没配好接入层先去 TaoToken 控制台生成一个 API Key把settings.json的三件套填上跑一次/status确认连通。然后从/init生成第一份 CLAUDE.md 开始把你这周跟 Claude 重复交代过的话写进去。一周之后你会发现重复解释的次数明显少了Claude 对项目的理解也稳定多了。