当前位置: 首页 > news >正文

Claude Code配置DeepSeek后claude-mem插件“No previous sessions found for this project“的问题

claude-mem 默认使用系统钥匙串中的 OAuth Token 向 Anthropic API 鉴权。当你把 API 底座换成 DeepSeek 后,这个鉴权方式会直接失效,SDK 对每一次记忆生成请求都返回Not logged in · Please run /login,然后被 parser 当作"空响应"静默丢弃——表面上一切正常,实际一条记忆都没落库。解决方案就是把鉴权从 OAuth token 切换为 API Key,并将 Base URL 指向 DeepSeek 的 Anthropic 兼容端点。


1. 背景

claude-mem 是 Claude Code 生态中最流行的记忆插件之一,它会在每次会话中自动捕捉你的操作上下文、生成结构化记忆(observation),并在后续会话中将这些记忆注入 system prompt,实现"跨会话记忆"。

我日常使用 DeepSeek v4 系列模型作为 Claude Code 的后端,API 底座是https://api.deepseek.com/anthropic(DeepSeek 提供的 Anthropic Messages API 兼容端点)。在安装 claude-mem 之后,插件本身的安装和 MCP server 启动一切正常,/mem-search技能也能成功加载——但无论经过多少次会话,dashboard 中始终看不到任何新产生的记忆,在设置面板中发现了No previous sessions found for this project yet.提示

这篇文章记录了我从发现问题到最终修复的完整过程。


2. 故障现象

检查项状态说明
claude-mem 插件安装OK13.2.0 版本,.claude/plugins/cache中完整缓存
MCP server 启动OKSearch server 正常启动,无 crash
bun worker 进程OKPID 正常,端口 37777 监听中
Worker dashboardOKhttp://127.0.0.1:37777可访问,UI 完整渲染
Chroma MCP 向量搜索FAILMCP error -32000: Connection closed(次要问题,不阻塞记忆生成)
记忆生成FAIL所有 session 均无 observation 产生

最令人困惑的是:插件没有任何报错信息暴露给用户。你在 Claude Code 中正常使用,对话一切流畅,只是记忆永远不产生。


3. 排查过程

3.1 确认 worker 是否存活

第一步检查 worker 进程和其 dashboard:

# 检查 worker PID 文件Get-Content~/.claude-mem/worker.pid# → {"pid":9908,"port":37777,"startedAt":"2026-05-21T07:23:48.616Z"}# 检查进程是否存在Get-Process-Id 9908

Dashboard 在http://127.0.0.1:37777正常渲染,说明 worker 本身没有问题。

3.2 检查 worker 日志——发现关键线索

日志位置:~/.claude-mem/logs/claude-mem-YYYY-MM-DD.log

# 每次 SDK 调用的返回都是完全相同的一句话(33 个字符): [SDK] ← Response received (33 chars) Not logged in · Please run /login # Parser 收到非 XML 响应后直接丢弃: [PARSER] SDK returned non-XML/empty response — ignoring queued batch

这个错误重复了上百次——每一个 observation 的生成请求都以Not logged in被拒绝,而 parser 静默丢弃了这些非 XML 响应,导致用户层面完全无感知。

3.3 定位根因:鉴权方式不兼容

进一步查看 SDK 启动日志:

# 修复前(session-17/18): [SDK] Starting SDK query { authMethod=Claude Code OAuth token (read from system keychain at spawn) } # → "Not logged in · Please run /login"

关键发现:claude-mem 默认使用“Claude Code OAuth token”鉴权方式——它从系统钥匙串中读取 Claude Code 的 OAuth token,然后向 Anthropic API 发起请求。这个 token 自然只在 Anthropic 的官方 API 上有效。当你把ANTHROPIC_BASE_URL指向 DeepSeek 后,DeepSeek 的 API 网关根本不认识这个 OAuth token,直接返回Not logged in

# 修复后(session-19): [SDK] Starting SDK query { authMethod=Gateway auth token (from ~/.claude-mem/.env) } # → observations 正常生成,Response 长度从 33 chars 跃升至 750~2687 chars

4. 解决方案

核心思路:将鉴权方式从 OAuth Token 切换为 API Key,并确保.env文件同时存在(claude-mem 的 SDK spawn 子进程需要从.env读取环境变量)。

4.1 修改~/.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-你的DeepSeek-API-Key","ANTHROPIC_BASE_URL":"https://api.deepseek.com/anthropic","ANTHROPIC_API_KEY":"","CLAUDE_MEM_OPENROUTER_API_KEY":"","CLAUDE_MEM_OPENROUTER_MODEL":""}

每个字段的意义:

字段为什么
CLAUDE_MEM_PROVIDER"claude"使用 Anthropic SDK 兼容通道,而非 OpenRouter
CLAUDE_MEM_MODEL"deepseek-v4-flash"模型名必须与 DeepSeek API 接受的名称一致。推荐 flash 版——记忆生成任务不需要强推理能力,速度快 3-5 倍且成本极低
CLAUDE_MEM_CLAUDE_AUTH_METHOD"api-key"这是本次修复的关键——从 OAuth token 切换为 API Key 鉴权
ANTHROPIC_AUTH_TOKENDeepSeek API Key作为 bearer token 传递给 Anthropic SDK
ANTHROPIC_BASE_URL"https://api.deepseek.com/anthropic"DeepSeek 的 Anthropic Messages API 兼容端点

4.2 创建~/.claude-mem/.env

这是必须步骤——claude-mem 在 spawn 子进程调用 Claude SDK 时,会从.env文件读取环境变量。仅配置 settings.json 而缺少.env会导致子进程仍然回退到 OAuth token 鉴权。

# ~/.claude-mem/.envANTHROPIC_AUTH_TOKEN=sk-你的DeepSeek-API-KeyANTHROPIC_BASE_URL=https://api.deepseek.com/anthropic

4.3 重启 worker

配置修改后,必须杀掉旧 worker 并重新启动:

# 1. 找到并杀掉旧 workerGet-Content~/.claude-mem/worker.pid# 获取 PIDStop-Process-Id <PID>-Force# 2. 清理 PID 文件(可选,worker 会自动处理 stale PID)Remove-Item~/.claude-mem/worker.pid# 3. 重新触发 Claude Code 会话——worker 会自动启动

新的 Claude Code 会话启动后,worker 会自动 spawn。你可以在日志中验证:

# 期望看到的日志行: [SDK] Starting SDK query { authMethod=Gateway auth token (from ~/.claude-mem/.env) } # ↑ "Gateway auth token" 说明已切换到 .env 中的 API Key

4.4 验证修复

# 检查日志中的 SDK 返回长度——应该远超 33 charsSelect-String-Path ~/.claude-mem/logs/claude-mem-*.log-Pattern"Response received"# 修复前:全部是 "(33 chars)"# 修复后:出现 "(750 chars)"、"(1203 chars)"、"(2687 chars)" 等# 打开 dashboard 确认 observation 已落库Start-Process"http://127.0.0.1:37777"

5. 为什么这个 bug 如此隐蔽?

整个故障链路中有三个"静默失败"层叠在一起:

OAuth Token → DeepSeek API → SDK 返回 "Not logged in" (纯文本,非 XML) → Parser 判定为 "non-XML/empty response" → 静默丢弃,不报错,不告警 → 用户界面无任何异常提示

claude-mem 的 parser 设计假设 SDK 返回的一定是合法 XML。当 API 返回纯文本错误消息时,parser 直接丢弃该批次,不会向上游报告错误。这是一个合理的"脏数据防御"策略,但在鉴权失败场景下会导致问题完全不可见。


6. 延伸:模型选择建议

对于记忆生成(observation generation)这个任务:

模型适用性理由
deepseek-v4-flash推荐记忆生成本质是"摘要+分类"任务,不需要深度推理。flash 模型速度快、成本极低,完全胜任
deepseek-v4-pro过度该任务不需要 1M context 和强推理能力,浪费成本和延迟
deepseek-chat(V3)可用成本低于 pro,但相比 flash 仍偏高

实际测试中,deepseek-v4-flash每次 observation 生成约 500-2000 个 token(包含 XML 标记),延迟在 1-3 秒以内,效果完全满足需求。


http://www.jsqmd.com/news/862694/

相关文章:

  • 等保2.0操作系统基线检查:身份鉴别从静态密码到双因素认证的完整合规升级路径
  • Gemini 3.5 Flash发布后,Gemini是否有被踢出大模型御三家的风险?
  • CW-DAPLINK调试器开箱体验:从拆包到点亮第一个LED灯的全过程
  • 课堂教学PPT模板平台深度测评与选用指南
  • 2026最新诚信优选 保定市竞秀区黄金回收白银回收铂金回收彩金回收门店TOP5排行榜+联系方式推荐_转自TXT - 盛世金银回收
  • 2026最新诚信优选 承德市双桥区黄金回收白银回收铂金回收彩金回收门店TOP5排行榜+联系方式推荐_转自TXT - 盛世金银回收
  • 每日 AI 研究简报 · 2026-05-21
  • 嵌入式工业主板MB-B150P-12CPC拆解:从接口设计到实战选型指南
  • 别再死记公式了!用Python手把手实现粒子群算法(PSO)优化函数寻优
  • Linux内核Bug导致微服务随机掉线:一次完整的线上故障排查实录
  • 大模型的“文字障眼法“:FlipAttack 文本反转越狱技术全解析
  • 2026最新诚信优选 承德市鹰手营子矿区黄金回收白银回收铂金回收彩金回收门店TOP5排行榜+联系方式推荐_转自TXT - 盛世金银回收
  • 手把手:Spring Boot接入凭据管理服务完整代码 + 5个踩坑记录
  • FinalBurn Neo:一场跨越时空的街机游戏考古之旅
  • 从点灯到跑起来:用STM32CubeMX生成代码后,如何在Keil里完成编译与一键烧录?
  • ARMv8 AArch32虚拟内存系统与异常处理机制详解
  • ELR-SELLM-碳硅协同智能系统-演示对话
  • 2026最新诚信优选 大同市平城区黄金回收白银回收铂金回收彩金回收门店TOP5排行榜+联系方式推荐_转自TXT - 盛世金银回收
  • 2026最新诚信优选 大同市新荣区黄金回收白银回收铂金回收彩金回收门店TOP5排行榜+联系方式推荐_转自TXT - 盛世金银回收
  • 别再硬算方向了!Fluent局部坐标系三种方向设置方法(Diffusion/Base Vector/Vector Projection)保姆级详解
  • 从自动化运维到自动化人生:让技术提升生活品质
  • Bifrost终极指南:跨平台三星固件下载解密工具深度解析
  • Spring Boot 2.7 项目用内置 Tomcat 配置 SSL 证书,yml 文件怎么写?
  • RK3588多摄调试避坑实录:当5M和2M摄像头共用ISP时,为什么系统APK打不开?
  • 2026最新诚信优选 大同市云冈区黄金回收白银回收铂金回收彩金回收门店TOP5排行榜+联系方式推荐_转自TXT - 盛世金银回收
  • Autosar诊断开发避坑指南:CANFD升级后ECU不响应?可能是你的CANTP帧头格式搞错了!
  • 警惕AI领域虚构技术名词:Mythos等未证实概念辨析
  • 从论文AI率96%降至0?维普AIGC检测红黑榜实测,2026年5月最新
  • 工业防爆监控选型参考:辽宁及周边企业技术能力梳理
  • 微服务监控:Prometheus与Grafana实战