ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Claude Code配置DeepSeek后claude-mem插件“No previous sessions found for this project”的问题:把settings改到TaoTok

Claude Code配置DeepSeek后claude-mem插件“No previous sessions found for this project”的问题:把settings改到TaoTok 1. Claude Code 接 DeepSeek 后 claude-mem 报 No previous sessions found for this project 是什么No previous sessions found for this project是 claude-mem 插件在 dashboard 里最常见、也最容易被误判的一条提示。它字面意思是当前项目没有找到历史会话记录但真正的原因往往不是你没聊过而是记忆根本没写进索引。claude-mem 的工作链路是Claude Code 会话产生上下文 → 插件通过 Anthropic SDK 调用模型生成结构化 observation → 写入本地会话索引 → 下次会话把历史记忆注入 system prompt。只要中间任何一环静默失败dashboard 就会显示这条提示。我遇到这个问题的场景很典型Claude Code 后端换成了 DeepSeekANTHROPIC_BASE_URL指向 DeepSeek 的 Anthropic 兼容端点插件安装正常、MCP server 正常启动、worker 进程也在跑http://127.0.0.1:37777的 dashboard 能打开但无论聊多少轮记忆永远是空的。更坑的是 Claude Code 里对话完全流畅没有任何报错属于典型的表面正常、实际一条没落库。这篇文章适合三类人一是已经把 Claude Code 接到 DeepSeek 或其它兼容端点、发现 claude-mem 不工作的二是刚装 claude-mem 就报No previous sessions found for this project、不知道从哪查的三是想用统一 Key/API 通道管理多个模型、避免每个插件单独配鉴权的。核心检索词就是 Claude Code、DeepSeek、claude-mem 和这条报错本身。下面我会从 settings 配置和项目会话索引路径两条线入手给出可复制的配置片段和逐步验证动作。2. 前置准备TaoToken 统一 Key 与 API 通道接入 claude-mem在动手改 claude-mem 之前先把鉴权通道理顺。claude-mem 默认走的是 Claude Code 系统钥匙串里的 OAuth token向 Anthropic 官方 API 鉴权。你把底座换成 DeepSeek 后这个 OAuth token 在 DeepSeek 网关上根本不认SDK 每次请求都返回Not logged in · Please run /login然后被 parser 当成非 XML 空响应静默丢弃。所以第一步是把鉴权从 OAuth 切成 API Key并让 Base URL 指向一个稳定的兼容端点。这里我用 TaoToken 作为统一通道。它的价值在于一个 Key 就能覆盖 Claude Code、claude-mem 以及其它走 Anthropic 兼容协议的插件不用每个工具单独配一套鉴权。官网入口是 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 端点是 https://taotoken.net/api 。注意 API 地址不带 UTM 参数配置里直接写这个就行。你需要先拿到 Key。登录后进控制台在 API Keys 页面创建一个新 Key复制出来备用。控制台地址是 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API Keys 页面是 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。如果你还没决定用哪个模型可以先去模型对话页试一下 https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 确认 DeepSeek 系列能正常返回再往下配。这里有个关键认知claude-mem 的 SDK spawn 子进程时会优先从~/.claude-mem/.env读环境变量其次才回退到系统钥匙串的 OAuth。所以只改settings.json不够.env必须同时存在否则子进程仍然走 OAuth问题照旧。这一点我在后面第 4 节会重点讲。另外提醒一句claude-mem 的记忆生成任务本质是摘要 分类不需要强推理。用 DeepSeek 的 flash 档就够速度快、成本低pro 档属于过度配置。模型 ID 要写 API 实际接受的名称别自己编。3. 可复制配置settings.json 与 .env 双文件改法这一节是全文最核心的部分配置写错一个字段问题就复现。claude-mem 的配置分两个文件~/.claude-mem/settings.json管插件行为~/.claude-mem/.env管子进程环境变量。两个都要改缺一不可。先看settings.json。路径是~/.claude-mem/settings.jsonWindows 下就是C:\Users\你的用户名\.claude-mem\settings.json。完整片段如下{ CLAUDE_MEM_PROVIDER: claude, CLAUDE_MEM_MODEL: deepseek-v4-flash, CLAUDE_MEM_CLAUDE_AUTH_METHOD: api-key, ANTHROPIC_AUTH_TOKEN: sk-你的TaoToken-Key, ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_API_KEY: , CLAUDE_MEM_OPENROUTER_API_KEY: , CLAUDE_MEM_OPENROUTER_MODEL: }逐字段说明这几个是排查时最容易搞错的CLAUDE_MEM_PROVIDER必须是claude表示走 Anthropic SDK 兼容通道而不是 OpenRouter。写成别的值插件会走另一套鉴权逻辑.env里的 Key 读不到。CLAUDE_MEM_MODEL填模型 ID要和 API 实际接受的名称一致。这里用deepseek-v4-flash记忆生成够用。如果你在 TaoToken 模型列表里看到的是别的命名以列表为准。CLAUDE_MEM_CLAUDE_AUTH_METHOD是本次修复的开关必须从默认的 OAuth 改成api-key。不改这一项后面配再多也白搭SDK 仍然去钥匙串读 OAuth。ANTHROPIC_AUTH_TOKEN填你刚创建的 TaoToken Key作为 bearer token 传给 SDK。ANTHROPIC_BASE_URL填https://taotoken.net/api这是兼容端点。注意不要带 UTM 后缀配置里写干净地址。ANTHROPIC_API_KEY留空避免和 AUTH_TOKEN 冲突。OpenRouter 两个字段也留空因为 provider 不是它。再看.env。路径是~/.claude-mem/.env内容更简单ANTHROPIC_AUTH_TOKENsk-你的TaoToken-Key ANTHROPIC_BASE_URLhttps://taotoken.net/api为什么两个文件都要因为 claude-mem 在 spawn 子进程调用 Claude SDK 时子进程的环境变量来自.env。只配settings.json而缺.env子进程会回退到 OAuth token 鉴权日志里你会看到authMethodClaude Code OAuth token然后继续报Not logged in。我踩过的坑就是只改了 settings折腾半天没效果补上.env才通。如果你同时用 Claude Code 本体它的配置在~/.claude/settings.jsonBase URL 和 Key 也要指向同一通道保持三件套一致Base URL 用https://taotoken.net/apiKey 用同一个 TaoToken KeyModel ID 用deepseek-v4-flash。三件套对齐后Claude Code 和 claude-mem 走同一条鉴权链路不会出现一个通一个不通。改完配置别急着测先确认文件编码是 UTF-8 无 BOMJSON 不能有尾逗号否则插件解析失败会静默回退默认值问题更难查。4. 验证请求重跑会话、检查索引路径、确认记忆落库配置改完必须重启 worker 并重跑会话否则旧进程还拿着旧配置。这一步分四个动作逐个做。第一步杀掉旧 worker。先读 PID 文件# Windows PowerShell Get-Content ~/.claude-mem/worker.pid # 输出类似 {pid:9908,port:37777,startedAt:...} Stop-Process -Id 9908 -Force Remove-Item ~/.claude-mem/worker.pid# macOS / Linux cat ~/.claude-mem/worker.pid kill -9 PID rm ~/.claude-mem/worker.pid删 PID 文件是可选的worker 会自动处理 stale PID但手动删更干净。第二步重跑一次 Claude Code 会话。新会话启动时 worker 会自动 spawn。然后看日志确认鉴权方式变了# 日志路径 ~/.claude-mem/logs/claude-mem-YYYY-MM-DD.log Select-String -Path ~/.claude-mem/logs/claude-mem-*.log -Pattern authMethod期望看到的是[SDK] Starting SDK query { authMethodGateway auth token (from ~/.claude-mem/.env) }如果还是authMethodClaude Code OAuth token说明.env没生效回去检查文件路径和内容。第三步检查 SDK 返回长度。这是判断记忆有没有真正生成的关键指标Select-String -Path ~/.claude-mem/logs/claude-mem-*.log -Pattern Response received修复前所有记录都是(33 chars)因为返回的是Not logged in · Please run /login这句纯文本。修复后应该出现(750 chars)、(1203 chars)、(2687 chars)这类长度说明模型正常返回了 XML 结构的 observation。第四步检查项目会话索引路径。claude-mem 按项目目录哈希存会话记录路径大致在~/.claude-mem/projects/项目哈希/sessions/下。如果这个目录一直是空的说明记忆没落库。你可以直接列目录看文件数ls -la ~/.claude-mem/projects/正常情况下跑过几轮会话后对应项目目录下会出现 session 文件。如果目录存在但为空回到第三步看返回长度大概率还是鉴权问题。最后打开 dashboard 确认# Windows Start-Process http://127.0.0.1:37777 # macOS open http://127.0.0.1:37777dashboard 里No previous sessions found for this project应该消失取而代之的是 observation 列表。如果还在刷新页面并确认 worker 是新起的那个进程。5. 本篇常见错排查401、local proxy failed、reading choices、OAuth 回退排查过程中我见过几类高频报错逐个对照。401 Unauthorized。日志里出现 401通常是 Key 写错或 Base URL 不对。检查ANTHROPIC_AUTH_TOKEN有没有多余空格ANTHROPIC_BASE_URL是不是https://taotoken.net/api。如果 Key 是从控制台复制的注意别把前后引号也复制进去。401 和Not logged in不同前者是 Key 无效后者是鉴权方式没切过来。local proxy failed。这个报错一般出现在你本地还挂着别的代理配置时SDK 尝试走本地代理但连不上。检查环境变量里有没有残留的HTTP_PROXY、HTTPS_PROXY清掉再重启 worker。claude-mem 的 SDK 子进程会继承这些变量残留代理会干扰请求。reading choices 相关报错。这类报错通常出现在响应格式不符合预期时parser 尝试读choices字段但拿不到。根因还是鉴权失败导致返回了错误文本而非正常结构。回到第 4 节确认返回长度长度正常了这类报错自然消失。OAuth 回退。最隐蔽的一种日志显示authMethodClaude Code OAuth token说明.env没被读到。可能原因有三个.env文件路径不对必须在~/.claude-mem/下、文件权限问题导致子进程读不到、或者settings.json里CLAUDE_MEM_CLAUDE_AUTH_METHOD没改成api-key。三个都检查一遍。Codex auth.json 场景。如果你同时用 Codex 类工具它的鉴权文件在~/.codex/auth.json和 claude-mem 是两套。别把 Codex 的配置混进 claude-mem两者独立。Codex 那边同样要保证三件套一致Base URL、Key、Model ID。CC Switch / Cline MCP 场景。如果你用 CC Switch 或 Cline 的 MCP 配置管理注意它们的配置文件路径和 claude-mem 不同。CC Switch 一般管 Claude Code 本体的切换Cline MCP 管编辑器侧。claude-mem 的配置始终在~/.claude-mem/下别改错文件。三件套Base URL Key Model ID在每套配置里都要写全缺一个就会回退默认值。排查顺序建议先看日志 authMethod → 再看 Response received 长度 → 再看项目索引目录 → 最后看 dashboard。按这个顺序走基本十分钟内能定位。6. 长期使用建议与统一通道收尾修好之后日常使用还有几个点值得注意。claude-mem 的记忆生成是异步的会话结束后 worker 会排队处理 observationdashboard 不会立刻刷新等几秒再刷。如果长时间不落库优先看日志而不是反复重装插件。模型选择上记忆生成用 flash 档足够别用 pro 档烧成本。实测每次 observation 生成约 500 到 2000 token延迟 1 到 3 秒flash 完全胜任。如果你有大量项目并行统一走 TaoToken 一个 Key 管理比每个项目单独配鉴权省心得多。对于长期编码和 Agent 场景可以考虑 Coding Plan入口是 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 适合需要稳定通道和额度管理的用法。接入文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 配置字段有疑问时对照文档核对。Claude Code 相关的接入说明在 https://taotoken.net/claude-code?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 里面有三件套的完整示例。最后强调一遍核心No previous sessions found for this project不是没历史会话而是记忆没落库。根因九成是鉴权方式没从 OAuth 切到 API Key或者.env缺失导致子进程回退。把settings.json和.env两个文件配对改好重启 worker看日志里authMethodGateway auth token和返回长度超过 33 chars问题就解决了。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进