ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Claude Code记忆系统实战:用CLAUDE.md与auto memory打造持久上下文

Claude Code记忆系统实战:用CLAUDE.md与auto memory打造持久上下文 1. 多轮开发会话里上下文为什么总是断片如果你用 Claude Code 写过稍大一点的项目大概率遇到过这种场景昨天刚跟它讲清楚「这个仓库用 pnpm 不用 npm测试跑 vitestAPI 层统一走 src/api/handlers」今天新开一个会话它又开始用 npm install测试文件给你塞进tests目录API 处理逻辑随手丢在路由文件里。你不得不把昨天说过的话再打一遍运气不好它还会「礼貌地」问你要不要初始化项目。这不是模型变笨了而是 LLM 本身无状态。每个新会话都是一个全新的上下文窗口上一次对话里你辛苦建立的共识随着窗口关闭就烟消云散了。Claude Code 作为 CLI 编程助手把「跨会话记忆」这件事拆成了两条腿走路一条是你手写的 CLAUDE.md另一条是它自己维护的 auto memory。前者像项目的正式规章制度后者像它给自己贴的便利贴。我试过在一个中型前端仓库里连续一周不写 CLAUDE.md结果每天平均要花 8 到 10 分钟重复交代背景Token 消耗也肉眼可见地涨。后来把项目约定沉淀进 CLAUDE.md再打开 auto memory同样的任务链条顺畅了很多。这篇就把这套双层记忆体系的落地配置讲透包括可复制的模板、启用参数、验证步骤以及几个我踩过的坑。核心检索词先摆出来Claude Code 记忆系统由 CLAUDE.md手动记忆和 auto memory自动记忆组成前者适合放项目级硬规则后者适合让 AI 自己积累调试心得和偏好。适合谁适合所有在多轮会话里被上下文丢失折磨过的开发者尤其是维护中大型仓库、需要团队协作的场景。2. TaoToken 前置把模型通道先打通在折腾记忆系统之前得先保证 Claude Code 能稳定连上模型。Claude Code 默认走 Anthropic 官方通道但很多团队会用统一的 API 网关来管理额度和密钥TaoToken 就是这样一个入口。它的 API 地址是 https://taotoken.net/api官网在 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content。这里要强调一点TaoToken 是合规的 API 服务入口不是所谓的中转代理配置方式就是标准的 Base URL 替换。你需要准备三件套Base URL、API Key、Model ID。Base URL 填 https://taotoken.net/apiAPI Key 在控制台的 API Keys 页面生成Model ID 按你订阅的模型填比如 claude-sonnet 系列。拿到 Key 之后Claude Code 的接入有两种常见方式。第一种是环境变量适合临时会话export ANTHROPIC_BASE_URLhttps://taotoken.net/api export ANTHROPIC_API_KEYsk-你的key export ANTHROPIC_MODELclaude-sonnet-4-5 claude第二种是写进配置文件适合长期使用。Claude Code 会读取 ~/.claude/settings.json你可以把 env 段写进去{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_API_KEY: sk-你的key, ANTHROPIC_MODEL: claude-sonnet-4-5 } }如果你用的是 Codex 或 Cline 这类工具配置逻辑类似Codex 走 ~/.codex/auth.jsonCline 走 MCP 配置里的 baseUrl 字段三件套缺一不可。配好之后先跑一个最小验证确认通道没问题再去动记忆系统否则后面排查会分不清是记忆没生效还是通道没通。验证命令很简单进 Claude Code 后问一句「你现在用的模型是什么」或者直接发一个 hello。如果返回正常说明 Base URL 和 Key 都对。这一步别省我见过太多人 CLAUDE.md 写得漂漂亮亮结果压根没连上模型白折腾。3. 可复制配置CLAUDE.md 模板与 auto memory 启用记忆系统的配置分两块先讲 CLAUDE.md 的目录结构和模板再讲 auto memory 的开关。CLAUDE.md 有四个作用域层级优先级从低到高分别是企业级、用户级、项目级、本地级。企业级在 macOS 是 /Library/Application Support/ClaudeCode/CLAUDE.mdLinux 和 WSL 是 /etc/claude-code/CLAUDE.mdWindows 是 C:\Program Files\ClaudeCode\CLAUDE.md由 IT 统一部署。用户级在 ~/.claude/CLAUDE.md放你个人的全局偏好。项目级在 ./CLAUDE.md 或 ./.claude/CLAUDE.md提交到 git 团队共享。本地级在 ./CLAUDE.local.md加进 .gitignore放个人项目偏好。一个可直接复制的项目级 CLAUDE.md 模板长这样# 项目概述 这是一个基于 React TypeScript 的电商后台包管理用 pnpm。 # 构建与测试 - 安装依赖pnpm install - 本地开发pnpm dev - 运行测试pnpm test - 提交前必须跑pnpm lint pnpm test # 代码规范 - 使用 2 空格缩进 - 组件文件用 PascalCase工具函数用 camelCase - API 处理逻辑统一放在 src/api/handlers/ - 所有 API 端点必须包含输入校验 # 架构决策 - 状态管理用 Zustand不用 Redux - 请求封装在 src/lib/request.ts不要直接调 fetch # 工作流 - 提交信息遵循 Conventional Commits - 不要直接 push 到 main 分支这个模板控制在 30 行以内符合「200 行以内」的建议。如果你项目大可以把细分规则拆到 .claude/rules/ 目录比如 testing.md、api-design.md每个文件聚焦一个主题。带路径限定的规则用 YAML frontmatter--- paths: - src/api/**/*.ts --- # API 开发规则 - 所有端点必须包含输入校验 - 使用标准错误响应格式这种规则只在 Claude 读取匹配文件时才加载不占常驻上下文。auto memory 的启用更简单它默认就是开的需要 Claude Code v2.1.59 以上版本。检查版本claude --version要关闭的话在项目设置里写{ autoMemoryEnabled: false }或者用环境变量 CLAUDE_CODE_DISABLE_AUTO_MEMORY1。auto memory 的存储位置在 ~/.claude/projects/项目路径/memory/里面有个 MEMORY.md 作为索引加上若干主题文件如 debugging.md、api-conventions.md。这些文件是私有的不会进 git。想换存储位置在 ~/.claude/settings.json 里设 autoMemoryDirectory。4. 验证请求确认记忆真的生效了配置写完不代表生效得动手验证。Claude Code 提供了 /memory 命令这是排查记忆问题的第一入口。第一步启动 Claude Code 后输入 /memory它会列出当前加载的所有 CLAUDE.md 和 CLAUDE.local.md 文件。如果你刚写的项目级 CLAUDE.md 没出现在列表里说明路径不对或者文件没被识别。检查一下是不是放在了项目根目录文件名大小写是否正确。第二步验证指令是否被遵循。在会话里问一个只有 CLAUDE.md 里才有答案的问题比如「这个项目用什么包管理器」。如果它回答 pnpm说明项目级指令加载成功。再问「API 处理逻辑放在哪个目录」答对 src/api/handlers/ 就说明架构决策段生效了。第三步验证 auto memory。先让 Claude 记住一件事比如「记住我偏好用 tabs 缩进」然后退出会话重新启动问它「我的缩进偏好是什么」。如果它答 tabs说明自动记忆写入并读取成功。你也可以直接打开 ~/.claude/projects/项目路径/memory/MEMORY.md 看内容所有记忆都是纯 Markdown可读可编辑。第四步验证路径范围规则。创建一个 .claude/rules/api.md 带 paths 限定然后在会话里让它读一个 src/api/ 下的文件观察规则是否被触发。这个验证稍微麻烦点但能确认条件加载机制正常工作。实测下来最容易出问题的是项目级 CLAUDE.md 的位置。有人放在 .claude/CLAUDE.md有人放在根目录 CLAUDE.md两个都行但别放错到 .claude/rules/ 里当规则用那加载时机不一样。5. 本篇常见错排查401、local proxy failed、reading choices配置记忆系统时报错往往不在记忆本身而在通道或加载机制。下面几个是我和身边人真实遇到过的。第一个401 Unauthorized。这通常是 API Key 没配对或者 Base URL 写错了。检查 ~/.claude/settings.json 里的 ANTHROPIC_API_KEY 是不是完整的 sk- 开头字符串ANTHROPIC_BASE_URL 是不是 https://taotoken.net/api注意结尾不要多加斜杠。如果用的是环境变量确认当前 shell 会话里 export 生效了可以 echo $ANTHROPIC_API_KEY 看一眼。第二个local proxy failed。这个报错一般出现在网络层说明 Claude Code 尝试连接 Base URL 时失败了。先确认网络能通再确认 Base URL 拼写。如果你在 settings.json 里同时配了 env 和系统环境变量可能冲突建议只保留一处。第三个reading choices 相关报错。这通常出现在模型返回格式异常时根源可能是 Model ID 填错了。检查 ANTHROPIC_MODEL 是不是你订阅的模型名别把 claude-sonnet 写成 claude-3-sonnet 这种不存在的 ID。Model ID 错了请求能发出去但返回内容解析不了。第四个OAuth 相关报错。如果你之前用官方账号登录过本地可能残留 OAuth 凭证和 API Key 模式冲突。清理 ~/.claude/ 下的凭证缓存或者用 --setting-sources 明确指定配置来源。第五个CLAUDE.md 不生效。先跑 /memory 看文件有没有被列出。没列出就查路径列出了但指令不遵循就查指令是否太模糊或存在冲突。多个 CLAUDE.md 对同一行为给了不同指导Claude 可能随机选一条。用 claudeMdExcludes 排除无关文件{ claudeMdExcludes: [ **/monorepo/CLAUDE.md, /home/user/monorepo/other-team/.claude/rules/** ] }第六个/compact 之后指令丢失。项目根目录的 CLAUDE.md 有持久性压缩后会从磁盘重新读取。但子目录里的嵌套 CLAUDE.md 不会自动重新注入只有 Claude 再次读取该子目录文件时才加载。所以关键指令一定放根目录。6. 把记忆系统用成项目基础设施记忆系统配好之后它不该是一次性设置而应该跟着项目一起演进。我的习惯是每次 Claude 第二次犯同一个错误就往 CLAUDE.md 里加一条每次在对话里重复解释同一个背景就把它沉淀成规则。auto memory 则交给它自己积累定期用 /memory 翻一翻它记了什么把有价值的提炼进 CLAUDE.md把过时的删掉。如果你还在选模型通道可以先用模型对话快速验证一下 https://taotoken.net/api 的连通性确认没问题再进 Claude Code 配置。长期做编码和 Agent 任务的话Coding Plan 会比按量更划算适合把记忆系统当成日常基础设施来用。接入文档里有完整的 Base URL、Key、Model ID 三件套说明照着配就行。最后留一个实用技巧CLAUDE.md 里的块级 HTML 注释在注入上下文前会被自动剥离你可以用!-- 维护者备注 --给人类同事留话不占 Token。代码块里的注释则会保留别把敏感信息写进去。
返回列表