claude-mem 插件问题
知识库无产出,pending_messages 大量堆积
现象:observations 表为 0 条(使用多天没有提取出任何知识点),pending_messages 大量堆积状态全为 pending,sdk_sessions 无任何 completed 记录,worker_port 全为 None。
原因:worker 使用的模型通道下线(如 claude-sonnet-4-5 返回 503),SDK 子进程持续崩溃,积压数据被误判为「消息队列垃圾」后一键清空,导致知识原材料永久丢失。
修复步骤:
- 确认管道状态(清理前必查):
observations为 0 说明管道坏了,不是「该清理了」的信号;pending全堆积是异常信号,先查 worker 状态而非删除 - 修改模型配置:编辑
~/.claude-mem/settings.json,将模型改为当前可用的稳定版本
json
{
"CLAUDE_MEM_MODEL": "claude-haiku-4-5-20251001"
}- 重启 worker:删除旧 PID 文件
rm ~/.claude-mem/worker.pid,下次 hook 触发自动用新配置重启 - 安全清理:只删已完成/已失败的消息,绝不删除 pending 状态的消息
python
# Python 安全清理示例
cur.execute("DELETE FROM pending_messages WHERE status IN ('completed', 'failed')")
conn.commit()表结构速查:
pending_messages:知识提取输入队列(原材料),别当垃圾删observations:提取出的知识点(输出),为 0 说明管道坏了sdk_sessions:子进程会话状态,worker_port全 None 即异常
Windows 上运行 Python 记得加 sys.stdout.reconfigure(encoding='utf-8'),否则中文报 GBK 错误。
Claude Code 命令卡死不返回 — Worker 假死
现象:输入命令后终端不报错但长时间无返回,Claude Code 响应越来越慢。curl http://127.0.0.1:37777/api/health TCP 可连但 HTTP 永不返回,端口在监听但对应 PID 进程已不存在。
原因:升级 claude-mem 后旧 worker 挂死,端口 37777 残留占用但进程已死,新 worker 启动误判「端口被占」反复失败,hook 每次工具调用都尝试连接超时拖慢整个 CLI。
检测方法:
bash
curl -m 8 -sv http://127.0.0.1:37777/api/health
# TCP 能连但 HTTP 不返回 = 假活修复步骤:
- 清理残留进程和端口
powershell
# PowerShell 查看占用端口的 PID
Get-NetTCPConnection -LocalPort 37777 | Select-Object OwningProcess
# 结束进程
Stop-Process -Id <PID> -Force如果 Stop-Process 提示进程不存在,直接在任务管理器结束所有 node.exe 和 python.exe 残留进程。
- 进正确目录重启 worker
bash
# 正确:marketplaces 目录
cd ~/.claude/plugins/marketplaces/thedotmack
npm run worker:status
npm run worker:restart
# 错误:不要进 cache/ 目录,那里没有 worker 脚本- 验证修复
bash
curl -m 5 -sv http://127.0.0.1:37777/api/health
# 正常返回:{"status":"ok","initialized":true,"mcpReady":true}两个目录区分:
~/.claude/plugins/marketplaces/thedotmack:插件主目录,有 worker 脚本~/.claude/plugins/cache/thedotmack/claude-mem/版本号/:运行时依赖缓存,没有 worker 脚本
预防:Claude Code 变慢先查 worker,不要先怀疑 API 或模型;升级 claude-mem 后主动验证 health 接口。