Claude Code 文档 Skill 第五弹:AI 也能有记忆?跨会话记住你的所有工作

发布时间:2026/10/7 19:57:24
Claude Code 文档 Skill 第五弹:AI 也能有记忆?跨会话记住你的所有工作 1. 为什么你的 Claude Code 每次开新会话都像失忆你有没有过这种体验上周花了一整个下午定位的那个登录超时 bug今天想复用当时的修复思路结果翻 Git log 只看到一句「fix login timeout」翻聊天记录又不知道当时是在哪个群聊的。最后只能重新读一遍代码重新推理一遍。这不是你记性差是 Claude Code 默认的会话机制决定的——每个新会话都是白纸一张上下文窗口一关之前聊过的架构决策、踩过的坑、试过但放弃的方案全部清零。这个问题的本质是大模型的「记忆」和「上下文」是两回事。上下文窗口再大也只覆盖当前这一次会话会话结束token 释放信息就没了。而开发者真正需要的是跨会话的持久记忆——我三个月前为什么选 Redis 而不是 Memcached我上个月修过哪些认证相关的 bug我上周到底推进了哪几件事。这些信息散落在 commit、聊天记录、邮件里检索成本极高。Claude Code 的文档 Skill 体系里mem-search 就是专门解决这件事的。它不是让你手动维护一个笔记文件而是在后台持续记录你的工作内容然后提供一套三层检索工作流搜索Search→ 时间线Timeline→ 获取详情Fetch。你不需要主动保存任何东西AI 自动把每个会话里的 bug 修复、功能开发、架构决策记下来之后用关键词就能秒级召回。这篇文章面向的是已经在用 Claude Code 做日常开发、但还没把记忆能力跑通的开发者。我会把 mem-search 的配置片段、验证步骤、以及我实际踩过的几个报错都写清楚你照着做就能在自己的工作流里落地跨会话记忆。核心检索词就是 Claude Code、Skill、mem-search、跨会话记忆这几个词后面会反复出现因为它们对应的正是你要配置和验证的东西。先说清楚 mem-search 能做什么、适合谁。它适合三类人一是项目周期长、决策多的开发者需要回溯「当时为什么这么设计」二是同时维护多个项目的人需要按 project 过滤记忆三是经常和 AI 协作、希望 AI 记住自己工作习惯的人。它不适合的场景也很明确如果你只是偶尔跑个一次性脚本那记忆系统带来的收益有限反而多一层配置成本。mem-search 的三层工作流设计得很克制这是它比「把所有历史塞进上下文」聪明的地方。第一层 Search 只返回摘要级结果每条约 50 到 100 tokens包含 ID、标题、类型、时间戳。你一次搜 20 条也就花 500 tokens 左右不会把上下文撑爆。第二层 Timeline 以某条记录为锚点向前向后各展开几条把观察记录、会话、提示词按时间交错排列还原「这个 bug 是怎么发现的、怎么修的、修完又做了什么」。第三层 Fetch 才真正拉全文而且支持批量一次请求拿多个 ID 的详情。这个分层的关键价值在 token 节省上。直接拉 20 条全文大概要 20000 tokens而 Search 浏览 20 条摘要只要 500 tokens筛出 3 条相关的再 Fetch 也就 3000 tokens 左右整体省下大约 83%。在大上下文场景下这个差距直接决定你还能不能在同一会话里继续干活。我实测下来最舒服的节奏就是先 Search 定位、再 Timeline 看上下文、最后 Fetch 拿细节三步走完基本不用重读代码。2. TaoToken 前置把 Base URL、Key、Model ID 三件套配好在讲 mem-search 的具体配置之前得先把运行环境搭好。Claude Code 本身要能正常调用模型mem-search 才有意义。这里我用 TaoToken 作为接入层来演示因为它对 Claude Code 的兼容做得比较直接Base URL、API Key、Model ID 三件套配好就能跑。官网入口是 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 地址是 https://taotoken.net/api 注意 API 地址不带 UTM 参数配置的时候别把查询串带进去。先说清楚为什么要用接入层。Claude Code 默认走官方端点但很多开发者的网络环境、计费方式、或者团队统一管理需求会希望走一个可控的 API 网关。TaoToken 在这里扮演的就是这个角色它提供兼容 Anthropic 协议的接口你把 Claude Code 的请求指向它模型调用、Key 管理、用量查看都在一个控制台里完成。这不是「中转」意义上的灰色操作而是一个正常的 API 服务接入配置方式和任何兼容端点一致。三件套具体是什么Base URL 填 https://taotoken.net/api API Key 在控制台的 API Keys 页面生成Model ID 填你要用的 Claude 模型标识。这三个值缺一不可而且必须成对出现——只改 Base URL 不改 Key会直接 401Key 对了但 Model ID 写错会报模型不存在或者 reading choices 之类的解析错误。我见过最常见的翻车就是只配了 Base URL以为能复用官方 Key结果请求全挂。配置的落点有两个地方取决于你用哪种方式跑 Claude Code。如果你用的是 Claude Code CLI配置写在 settings 文件里如果你用的是 Cline、CC Switch 这类带 MCP 的客户端配置写在对应的 MCP 或 provider 配置里。下面两节我会分别给出可复制的片段。这里先强调一个原则Base URL、Key、Model ID 这三件套在任何一种配置里都要写全不能只写其中一两个然后指望客户端自动补全。还有一个前置动作是确认 claude-mem 已经就绪。mem-search 是 Claude Code 文档 Skill 体系里的原生能力不需要你额外装一个独立 Skill 包但它依赖 claude-mem 这个记忆层在后台运行。你可以先在会话里直接问一句「帮我找一下上次修过的登录超时 bug」如果 AI 能自动触发 mem-search 的三层工作流并返回结果说明记忆层是通的如果它回复说没有相关记录或者根本没调用检索那就要回头检查 claude-mem 的配置。关于 Key 的获取路径是控制台的 API Keys 页面生成后复制保存因为它只显示一次。模型对话的入口在 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi_keysutm_campaignrewrite 接入文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 这两个链接后面 CTA 部分还会用到。如果你打算长期用 Claude Code 做编码和 Agent 任务Coding Plan 页面 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite 值得看一眼它针对的就是这种持续编码场景。配好三件套之后先别急着上 mem-search先用一个最简单的请求验证模型通道是通的。这一步能帮你把「接入层问题」和「记忆层问题」分开不然出了错你不知道是 Key 配错了还是 mem-search 没生效。验证方法下一节会给具体命令。3. 可复制配置settings 与 MCP 两种落点这一节是全文最需要你动手的部分。我把两种常见配置方式的完整片段都写出来你按自己用的客户端选一种。所有片段里的 Base URL、Key、Model ID 三件套都写全了直接替换成你自己的值就能用。先说 Claude Code CLI 的 settings 配置。Claude Code 读取的配置文件通常在用户目录下的.claude/settings.json如果你用的是项目级配置则在项目根目录的.claude/settings.json。内容结构如下{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_API_KEY: sk-你的TaoToken密钥, ANTHROPIC_MODEL: claude-sonnet-4-20250514 }, permissions: { allow: [ Bash, Read, Write, Edit ] } }这里三个环境变量的作用要分清楚ANTHROPIC_BASE_URL指向 TaoToken 的 API 地址注意结尾不要带斜杠也不要带任何查询参数ANTHROPIC_API_KEY填你在控制台生成的 KeyANTHROPIC_MODEL填你要用的模型 ID。Model ID 必须和 TaoToken 支持的模型列表一致写错了会直接报模型不存在。我建议第一次配置时先用一个你确定可用的模型 ID跑通之后再换。如果你用的是 Cline 或者带 MCP 的客户端配置落在 MCP provider 那一块。以 Cline 的 MCP 配置为例结构大致是这样{ mcpServers: { claude-mem: { command: npx, args: [-y, claude-mem], env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_API_KEY: sk-你的TaoToken密钥, ANTHROPIC_MODEL: claude-sonnet-4-20250514 } } } }注意这里的env块同样要把三件套写全。MCP 客户端在启动 claude-mem 这个 server 时会把这些环境变量传进去claude-mem 再用它们去调用模型。如果你只写了 Base URL 没写 Keyclaude-mem 启动时不会报错但第一次检索请求会返回 401这个坑我在第五节会详细讲。如果你用的是 CC Switch 这类切换工具配置思路是一样的只是落点不同。CC Switch 的配置文件通常在~/.cc-switch/config.json里面按 provider 分组每个 provider 里写 Base URL、Key、Model ID。片段如下{ providers: [ { name: taotoken, baseUrl: https://taotoken.net/api, apiKey: sk-你的TaoToken密钥, model: claude-sonnet-4-20250514 } ], active: taotoken }CC Switch 的好处是可以在多个 provider 之间切换比如你同时有官方端点和 TaoToken可以配两组用active字段决定当前走哪个。但要注意切换 provider 之后mem-search 的记忆库不会跟着切换——记忆是按项目和工作内容记录的不是按 provider 隔离的。这一点在设计工作流时要想清楚。还有一种情况是用 Codex 的 auth.json。如果你在 Claude Code 之外还用 Codex 做辅助auth.json 里的配置结构是这样的{ openai: { baseURL: https://taotoken.net/api, apiKey: sk-你的TaoToken密钥, model: claude-sonnet-4-20250514 } }这里字段名是baseURL和apiKey和 Claude Code 的ANTHROPIC_BASE_URL、ANTHROPIC_API_KEY不一样别混用。Codex 的 auth.json 通常放在~/.codex/auth.json改完之后要重启 Codex 才生效。配置写完先别急着测 mem-search先用一个最小请求验证通道。如果你用 CLI可以直接跑curl https://taotoken.net/api/v1/messages \ -H x-api-key: sk-你的TaoToken密钥 \ -H anthropic-version: 2023-06-01 \ -H content-type: application/json \ -d { model: claude-sonnet-4-20250514, max_tokens: 64, messages: [{role: user, content: ping}] }如果返回里能看到正常的 content 字段说明 Base URL、Key、Model ID 三件套是通的。如果返回 401检查 Key如果返回模型不存在检查 Model ID如果连接超时检查 Base URL 是否写成了带斜杠或带参数的版本。这一步跑通再进下一节验证 mem-search。4. 验证 mem-search写入、检索、跨会话召回三步走配置通了之后接下来验证 mem-search 的三层工作流是不是真的在工作。我把它拆成三步先确认记忆写入再验证检索最后测跨会话召回。每一步都有可观察的结果不用猜。第一步确认记忆写入。mem-search 是后台自动记录的你不需要手动调用保存接口。但你要给它一点素材。开一个新会话让 Claude Code 做一件有明确结果的事比如修一个小 bug 或者做一个小的功能改动。做完之后在同一个会话里问一句「帮我找一下刚才这个改动」。如果 mem-search 正常工作AI 会调用 search 工具返回一条刚记录的条目包含 ID、标题、类型比如 bugfix 或 feature和时间戳。这一步的关键观察点是返回的条目类型对不对。如果你刚做的是 bug 修复类型应该是 bugfix如果是新增功能应该是 feature如果是讨论了一个方案但没写代码可能是 decision。类型不对说明 claude-mem 的观察分类没生效通常是 Model ID 配错了导致分类逻辑跑偏。第二步验证三层检索。先测 Searchsearch(queryauthentication, limit20, projectmy-project)返回的应该是摘要级列表每条约 50 到 100 tokens包含 ID、标题、类型、时间戳。注意这里不要期待返回全文Search 的设计就是只给摘要全文留给 Fetch。如果你看到返回里带了大量代码说明配置有问题可能是把 Fetch 的行为混进了 Search。然后测 Timeline。挑一条刚才返回的 ID比如 11131展开它前后的上下文timeline(anchor11131, depth_before3, depth_after3, projectmy-project)返回的应该是按时间排序的完整时间线观察记录、会话、提示词交错排列。你能看到「这个 bug 是怎么被发现的、怎么修的、修完之后又做了什么」。如果 Timeline 返回的条目顺序乱了或者只返回了锚点那一条说明时间索引没建好通常是 claude-mem 的存储层没初始化完整。最后测 Fetch。把筛选出来的几个 ID 批量拉全文get_observations(ids[11131, 10942, 10855])这一步才是真正花 token 的地方但因为你已经用 Search 筛过了只拉 3 条而不是 20 条整体消耗可控。返回的应该是这几条记录的完整详情包含当时的代码片段、决策理由、修改前后的对比。第三步测跨会话召回。这是 mem-search 最核心的能力也是标题里「跨会话记住你的所有工作」的落点。关掉当前会话重新开一个全新的会话然后直接问「上次那个登录超时的 bug 怎么修的」注意新会话里没有任何上下文AI 完全不知道你之前做过什么。如果 mem-search 正常工作它会自动调用 search用「login timeout bug」作为关键词加上typeobservations和obs_typebugfix过滤返回类似这样的结果ID #11234: Fixed login timeout by increasing session TTL to 24h然后你可以继续让它 fetch 这条记录的详情拿到完整的修复方案。整个过程你不需要重新解释项目背景AI 自己从记忆库里把上下文捞回来了。我实测下来跨会话召回的成功率取决于两个因素一是关键词选得准不准二是 project 过滤有没有配对。如果你有多个项目检索时一定要带上project参数不然会把其他项目的记忆也混进来。另外dateStart 和 dateEnd 这两个参数在回顾「上周做了什么」这类场景里特别好用search(dateStart2026-05-04, dateEnd2026-05-10, projectmy-project)这会返回指定日期范围内的所有工作记录一目了然。比起翻 Git log 猜上下文这种方式直接给你按时间排列的工作流水。还有一个进阶用法是/knowledge-agent。它不是简单的检索而是构建一个可查询的知识库。你可以问「过去一个月我修过哪些认证相关的 bug」知识代理会读取所有匹配的观察记录用对话方式给出综合答案而不是丢给你一堆原始记录。这个适合做阶段性复盘比如写周报或者季度总结的时候直接问它就行。验证完这三步你的 mem-search 就算真正落地了。接下来是排错环节我把几个高频报错和对应的排查路径写清楚。5. 常见报错排查401、local proxy failed、reading choices、OAuth这一节按真实报错来组织每个报错给出触发场景、原因和修复动作。这些是我在实际配置过程中遇到过的不是理论推演。401 Unauthorized。最常见的报错触发场景是第一次调用模型或者第一次触发 mem-search 检索。原因几乎都是 Key 没配对或者没传进去。分两种情况如果你用的是 CLI settings检查ANTHROPIC_API_KEY是不是写成了官方 Key 而不是 TaoToken 的 Key如果你用的是 MCP 配置检查env块里有没有把 Key 传进去MCP server 启动时如果 env 缺失claude-mem 拿不到 Key请求就会 401。修复动作重新生成一个 Key确认复制完整然后重启客户端。注意 Key 只在控制台显示一次丢了就重新生成。local proxy failed。这个报错通常出现在你本地有代理设置、或者 Base URL 指向了一个不可达的地址时。触发场景是 Claude Code 启动时尝试连接 Base URL 失败。原因可能是 Base URL 写成了带斜杠的版本比如https://taotoken.net/api/或者带了查询参数。修复动作把 Base URL 改成https://taotoken.net/api去掉结尾斜杠和所有参数。如果你本地有环境变量HTTP_PROXY或HTTPS_PROXY也要检查它们有没有干扰请求。这个报错和网络环境有关但排查方向是配置格式不是网络本身。reading choices 相关报错。这个报错出现在模型返回的响应结构不符合预期时通常是 Model ID 配错了。触发场景是你填了一个 TaoToken 不支持的模型标识或者填了一个格式不对的字符串。Claude Code 在解析响应时期望看到标准的 choices 或 content 结构模型不对就会解析失败。修复动作对照 TaoToken 的模型列表确认 Model ID 拼写正确。如果你不确定用哪个先用一个确定可用的模型跑通再换。OAuth 相关报错。这个报错出现在你用了需要 OAuth 认证的客户端但配置里写的是 API Key 模式时。触发场景是 CC Switch 或某些 MCP 客户端在启动时尝试走 OAuth 流程但你的配置里只有 Key。修复动作确认客户端的认证模式设置如果是 API Key 模式确保没有残留的 OAuth token 文件干扰如果是 OAuth 模式那就不适用 API Key 配置需要换一种接入方式。这个报错的关键是分清认证模式别把两种混在一起。除了这四个还有一个隐性问题是「检索返回空」。这不是报错但结果不对。原因通常是 project 参数没配对或者记忆库还没积累足够数据。修复动作先确认 claude-mem 在后台正常运行然后做一次有明确结果的工作再检索。如果还是空检查 project 名称是否和记录时一致。排查的时候有个原则先把接入层和记忆层分开。用第 3 节的 curl 命令验证接入层如果 curl 通了但 mem-search 不工作问题在记忆层如果 curl 都不通问题在 Base URL、Key、Model ID 三件套。这个分法能帮你快速定位不用在两层之间来回猜。6. 把记忆能力接进你的日常编码流配置和验证都跑通之后最后说说怎么把它用起来。mem-search 的价值不在于「多了一个搜索工具」而在于它改变了你和 AI 协作的方式。以前你开新会话第一件事是解释项目背景、上次做到哪、有什么约束现在你可以直接问「上次那个认证 bug 怎么修的」AI 自己从记忆库里把上下文捞回来。我自己的用法是把它嵌进几个固定场景。第一个是 bug 回溯遇到一个似曾相识的报错先 search 一下关键词加obs_typebugfix看有没有历史修复记录。第二个是架构决策回顾当你要改一个设计时先 search 一下obs_typedecision看看当时为什么这么选避免重复踩坑。第三个是周报素材用 dateStart 和 dateEnd 拉一周的记录直接就是工作流水。如果你打算长期用这套工作流Coding Plan 页面 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite 值得看一下它针对的就是持续编码和 Agent 任务场景。模型对话入口在 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/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite Key 管理和用量查看都在那里。最后一个实用技巧mem-search 的记忆是按项目积累的项目越活跃记忆库越有价值。所以别等到需要的时候才想起来配从现在开始让它后台记录三个月后你回头看会发现它帮你省下的解释成本远超配置成本。跨会话记忆这件事早配早受益。