跳到主要内容

CM-002:claude-mem Worker 假死导致 Claude Code 卡死

字段内容
影响组件claude-mem、Claude Code CLI
发现版本claude-mem v5.x → v10.5.2 升级后
系统环境Windows 11,Claude Code v2.1.71
解决人天程君(QQ:2459221653)
发现日期2026-03-12

问题现象

  • 输入命令后终端不报错,长时间无返回(几秒到数十秒)
  • Claude Code 响应越来越慢,但看不到任何错误提示
  • curl http://127.0.0.1:37777/api/healthTCP 可连通,但 HTTP 响应永不返回
  • Get-NetTCPConnection -LocalPort 37777显示端口在监听,但反查 PID 在 tasklist 中不存在

根因分析

根本原因:升级导致 worker 挂死,端口残留未清,进程处于假活状态。

升级 claude-mem 版本
→ 旧 worker 进程挂死(无响应)
→ 端口 37777 残留占用,但进程已死
→ 新 worker 启动时误判"端口被占",反复重启失败
→ hook 每次工具调用都尝试连 worker
→ 连接超时拖慢整个 CLI
→ Claude Code 看起来"变慢了"

两个常见弯路:

弯路错误做法正确做法
直接启动 workerpython -m claude_mem.worker进插件目录用 npm 命令启动
进错目录执行命令cache/目录执行npm run worker:statusmarketplaces/目录

修复步骤

1. 确认 worker 是否假活

# TCP 能连通但 HTTP 不返回 = 假活
curl.exe -m 8 -sv http://127.0.0.1:37777/api/health

2. 清理残留进程和端口

在 PowerShell 中查找并结束占用 37777 端口的进程:

# 查看占用端口的 PID
Get-NetTCPConnection -LocalPort 37777 | Select-Object OwningProcess

# 结束对应进程(替换 <PID>)
Stop-Process -Id <PID> -Force

如果 Stop-Process 提示进程不存在,直接在任务管理器里结束所有node.exepython.exe残留进程。

3. 进正确目录重启 worker

# ✅ 正确:marketplaces 目录
cd ~/.claude/plugins/marketplaces/thedotmack
npm run worker:status
npm run worker:restart

❌ 不要进cache/thedotmack/claude-mem/版本号/目录,那里没有 worker 脚本。

4. 验证修复

curl.exe -m 5 -sv http://127.0.0.1:37777/api/health

正常返回:

HTTP/1.1 200 OK
{ "status": "ok", "initialized": true, "mcpReady": true }

预防措施

  • Claude Code 变慢先查 worker,不要先怀疑 API 或模型
  • 升级 claude-mem 后主动验证 health 接口,别等症状出现
  • 区分两个目录:
目录用途有 worker 脚本
~/.claude/plugins/marketplaces/thedotmack插件主目录✅ 有
~/.claude/plugins/cache/thedotmack/claude-mem/<版本>运行时依赖缓存❌ 没有