
1. 为什么 Claude Code 需要一层「记忆」Claude Code 本身已经是很强的 AI 编程助手能读文件、跑命令、改代码但它有一个绕不开的硬伤会话一关上下文就清空。你昨天跟它敲定的接口字段命名、数据库索引方案、某个坑为什么不能用某个库今天开新会话它一概不知。于是你只能把需求再讲一遍把关键文件再贴一遍Token 花在重复劳动上人也被拖进「复述—纠正—再复述」的循环。Claude-Mem 解决的就是这件事。它是一个给 Claude Code 加装的记忆层插件核心逻辑是在会话的关键节点自动捕获工具输出和对话内容压缩成几百 Token 的语义化记忆按类型决策、Bug 修复、功能、重构等存进本地带全文检索的 SQLite 数据库下次会话启动时再把相关记忆注入上下文。对使用者来说效果就是 AI 编程助手开始「记得住」项目里的代码细节。这篇聚焦的是配置落地怎么在 Claude Code 的 settings.json 里把模型通道和统一 Key 写好让 Claude-Mem 的记忆读写走同一条 API 通道然后验证记忆确实被写入、也确实能被召回。适合已经在用 Claude Code、想让它跨会话记住项目细节的开发者。下面所有配置都可以直接复制改。2. 前置准备TaoToken 统一 Key 与 API 通道Claude-Mem 在压缩记忆、生成摘要时会调用模型Claude Code 本身也要调模型。如果两处各配一套 Key管理起来很乱额度也分散。更省事的做法是统一走一个 API 通道用同一个 Key 覆盖 Claude Code 和 Claude-Mem 的模型调用。TaoToken 在这里扮演的就是这个统一通道的角色它提供兼容 Anthropic 接口规范的 API 地址你申请一个 Key填进 Claude Code 的配置里Claude Code 和它加载的插件就都走这条通道。官网入口是 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 基址是 https://taotoken.net/api 。操作顺序建议这样先去控制台创建 Key。打开 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite 登录后在 API Keys 页面新建一个 Key复制出来先存到安全的地方。这个 Key 后面要同时写进 Claude Code 的环境变量和 Claude-Mem 的配置。注意Key 只显示一次复制后立刻保存。不要把它提交进 Git 仓库建议放在 shell 的环境变量或本地未跟踪的配置文件里。如果你还没装 Claude Code先按官方方式装好并确认能正常对话再往下做。Claude-Mem 是挂在 Claude Code 上的插件宿主没跑通插件也起不来。3. 可复制配置settings.json 写入统一 Key 与 API 通道Claude Code 的配置分两层一层是环境变量决定它请求哪个 API 地址、用哪个 Key一层是 settings.json决定权限、插件、钩子等。Claude-Mem 的钩子要在 settings.json 里注册而它调模型时读的是同一套环境变量所以先把通道打通。3.1 设置 API 通道环境变量在 shell 配置文件里写入下面两行macOS/Linux 写进 ~/.zshrc 或 ~/.bashrcWindows 用系统环境变量或 PowerShell profileexport ANTHROPIC_BASE_URLhttps://taotoken.net/api export ANTHROPIC_API_KEYsk-你申请到的Key写完执行source ~/.zshrc按你实际的文件名让它生效。验证一下echo $ANTHROPIC_BASE_URL echo $ANTHROPIC_API_KEY | head -c 8第一条应输出https://taotoken.net/api第二条输出 Key 的前 8 位。这一步通了Claude Code 和 Claude-Mem 就都走同一条通道了。3.2 在 settings.json 注册 Claude-Mem 钩子Claude Code 的 settings.json 一般位于~/.claude/settings.json项目级则在项目根的.claude/settings.json。Claude-Mem 安装后会把钩子写进去但如果你要手动确认或补全结构大致如下{ hooks: { SessionStart: [ { hooks: [ { type: command, command: claude-mem worker start } ] } ], PostToolUse: [ { matcher: *, hooks: [ { type: command, command: claude-mem capture } ] } ], Stop: [ { hooks: [ { type: command, command: claude-mem summarize } ] } ] } }这里三个钩子对应记忆链路的三个关键点SessionStart 启动记忆服务并注入历史上下文PostToolUse 在每次工具执行后捕获输出Stop 在会话结束时生成语义摘要。matcher 用*表示匹配所有工具你也可以收窄到特定工具减少写入量。注意不同版本的 Claude-Mem 钩子命令名可能略有差异安装后建议先看插件自带的 settings 片段以它为准上面这份是结构参考。3.3 安装 Claude-Mem 插件在 Claude Code 会话里执行插件市场安装/plugin marketplace add thedotmack/claude-mem /plugin install claude-mem装完重启 Claude Code。重启后 SessionStart 钩子会拉起记忆服务你会看到它开始加载历史上下文。如果偏好源码方式也可以克隆仓库后本地构建再启动 worker适合要改代码或调试的场景。4. 验证记忆写入与代码细节召回配置写完不算完得验证记忆真的写进去了、也真的能被召回。分两步做。4.1 验证记忆写入开一个新会话让 Claude Code 做一件会产生「决策」的事比如让它读一个接口文件并确认字段命名请阅读 src/api/user.ts确认 getUser 返回的字段命名规范并说明为什么用 camelCase。会话结束后Stop 钩子会触发摘要生成。此时去查记忆库看这条决策有没有落库。Claude-Mem 的数据库是本地 SQLite可以用它自带的搜索技能或查看器确认。如果装了 mem-search 技能直接在会话里问/mem-search camelCase 字段命名能搜到刚才那条决策记录说明写入链路通了。4.2 验证跨会话召回关掉当前会话重新开一个全新的会话然后问一个依赖上文的问题getUser 返回的字段命名规范是什么之前是怎么定的如果 Claude-Mem 正常工作Claude Code 会在 SessionStart 阶段注入相关记忆回答里会带上你上一轮定的 camelCase 规范而不是让你重新解释。这一步成功就说明「跨会话记住代码细节」这个目标达成了。4.3 用可视化查看器核对Claude-Mem 带一个基于 Web 的记忆流查看器能实时看到被记录的代码细节。启动后打开本地地址你会看到按类型分好的记忆条目决策、Bug 修复、功能、重构各成一类。核对一下刚才那条 camelCase 决策是否在「决策」分类下内容是否被压缩成了简洁的语义摘要。这一步能帮你判断压缩质量如果发现摘要丢关键信息可以调整钩子的捕获范围。5. 本篇常见错排查配置过程中最容易卡在几个地方逐个说。钩子没触发记忆库一直是空的。先确认 settings.json 的 JSON 格式没写错多一个逗号都会导致整个文件解析失败、钩子全部不生效。用cat ~/.claude/settings.json | python -m json.tool校验一下。再确认 Claude-Mem 的 worker 进程在跑SessionStart 没起来的话后面全断。记忆写入了但召回不到。多半是 SessionStart 注入没生效或者搜索时关键词和摘要里的措辞对不上。Claude-Mem 用的是全文检索搜「字段命名」比搜「camelCase」更容易命中摘要。另外确认新会话确实触发了 SessionStart可以看会话开头的上下文注入日志。模型调用报鉴权错误。检查ANTHROPIC_BASE_URL和ANTHROPIC_API_KEY是否在当前 shell 生效尤其是换了终端窗口后环境变量没继承的情况。echo一下确认必要时写进 shell 配置文件而不是临时 export。Token 消耗比预期高。记忆压缩本身要调模型PostToolUse 匹配所有工具时写入量大。可以把 matcher 收窄到关键工具或者调低捕获频率减少不必要的摘要生成。插件装了但命令找不到。确认 Claude Code 版本支持插件市场老版本可能没有/plugin命令。升级 Claude Code 后重试或改用源码方式手动注册钩子。6. 把通道和记忆一起管起来Claude-Mem 让 Claude Code 有了跨会话的记忆但记忆的压缩和召回都要调模型通道稳不稳定直接决定体验。把 Claude Code 和 Claude-Mem 的模型调用统一到一条 API 通道上Key 只维护一份额度集中排查问题也只看一个地方。如果你还没建 Key去 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite 创建一个填进上面的环境变量就能跑通。接入细节和参数说明看文档 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 里面有接口规范和常见配置示例。想先确认模型通道是否正常可以直接在模型对话页发一条测试消息 https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_contentchatutm_campaignrewrite 能正常返回就说明 Key 和通道没问题再回去配 Claude-Mem 就少一层变量。如果你打算长期用 Claude Code 做编码和 Agent 任务记忆层会越用越重建议直接上 Coding Plan https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite 把通道和额度一次性规划好省得后面记忆量涨上来再回头调。配置这件事一次做对后面就是纯收益。