ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Claude-Mem Worker 启动报端口占用失败怎么排查与换端口

Claude-Mem Worker 启动报端口占用失败怎么排查与换端口 Claude-Mem Worker 启动报端口占用失败怎么排查与换端口【免费下载链接】claude-memPersistent Context Across Sessions for Every Agent – Captures everything your agent does during sessions, compresses it with AI, and injects relevant context back into future sessions. Works with Claude Code, OpenClaw, Codex, Gemini, Hermes, Copilot, OpenCode More项目地址: https://gitcode.com/GitHub_Trending/cl/claude-mem当 Claude-Mem 的 Worker负责处理观察记录、生成摘要并对外提供 HTTP API 的常驻进程启动时如果目标端口已被其他进程占用Worker 会直接启动失败常见报错为 port already in use 或EADDRINUSE: address already in use。Claude-Mem 的 Worker 默认使用按用户分配的端口37700 (uid % 100)同一 OS 用户的不同 OS 账号天然错开但在同 UID 下跑多套配置、或机器上已有其他进程占着该端口时仍会冲突。本文基于 troubleshooting 文档、配置文档 和 Worker 架构文档 说明完整的排查与换端口操作。先确认 Worker 当前配置的是哪个端口排查的第一步是搞清楚报错的端口到底是多少。端口可能来自三处优先级从高到低环境变量CLAUDE_MEM_WORKER_PORT~/.claude-mem/settings.json中的CLAUDE_MEM_WORKER_PORT配置项未配置时的 per-user 默认值37700 (uid % 100)。PORT这个变量在后续命令中反复出现先执行一次取出实际值PORT$(jq -r .CLAUDE_MEM_WORKER_PORT ~/.claude-mem/settings.json) echo $PORT如果输出为空说明没有显式配置实际生效的就是默认公式算出的端口可以自己按uid算一下。此外运行中的 Worker 会在~/.claude-mem/.worker.port里记录当前端口Worker 健康后也可以通过GET /api/health响应里的port字段确认。检查占用端口的进程拿到端口号后用lsof看是谁占着它lsof -i :$PORT输出会列出监听该端口的进程 PID 和进程名。根据结果分两条路如果占着端口的是一个旧的 Claude-Mem Worker 残留进程可以走「杀掉冲突进程」路径在原文端口上重启如果是别的服务或者你本来就希望 Claude-Mem 固定用一个自己的端口走下面「换端口」路径不要动别人的进程。路径一杀掉冲突进程后在原文口重启适用于确认占用者是 Claude-Mem 自己的残留 Worker 的情况。注意kill -9会强制终止该端口上的进程不可撤销。执行前务必用上一条lsof的输出确认 PID 属于残留的 claude-mem Worker而不是其他服务。kill -9 $(lsof -t -i:$PORT) npm run worker:restartnpm run worker:restart会重启 Claude-Mem 的 Worker 服务是 troubleshooting 文档 中「Port Allocation Failed」一节给出的标准操作。重启后按下一节验证。路径二换端口重启如果冲突进程不该被杀或你想让 Claude-Mem 固定占用一个端口避免再次碰撞就通过CLAUDE_MEM_WORKER_PORT指定新端口。文档示例中使用的示例值是38000你可以选一个机器上空闲的端口export CLAUDE_MEM_WORKER_PORT38000 npm run worker:restart两点说明export只影响当前 shell 会话。要让端口配置持久化把CLAUDE_MEM_WORKER_PORT写入~/.claude-mem/settings.json配置文档 中展示了CLAUDE_MEM_WORKER_PORT: 38000的配置示例之后通过环境变量或配置文件都能被 Worker 读取。如果端口号本身不合法比如非数字、超范围日志中会出现Invalid port X此时按 pm2-to-bun-migration 文档 的错误表处理检查并更新CLAUDE_MEM_WORKER_PORT的取值。验证新端口已生效换端口或重启完成后请求 Worker 的健康检查接口确认curl -s http://127.0.0.1:$CLAUDE_MEM_WORKER_PORT/api/health | jq .portWorker 架构文档给出的健康检查响应示例文档示例port值随你的配置不同而变化{ status: ok, uptime: 12345, port: 37742 }判断方式响应中status为ok且port字段等于你刚设置的端口值说明 Worker 已在新端口上正常监听。另外两个辅助确认手段# 查看 Worker 运行状态 npm run worker:status # 查看 Worker 日志确认无端口相关报错 npm run worker:logs限制与补充说明端口被占用时 Worker 的行为是直接启动失败不会自动换端口重试必须按上述两条路径之一处理后npm run worker:restart。production-guide 记录过一个历史场景两个会话同时启动时可能各自认为端口空闲HTTP 检查非原子导致启动冲突表现为Worker failed to start... Is port 37777 in use?。该问题在后续版本中已通过原子 socket bind 修复如果你升级后仍偶发此类报错且lsof查不到占用进程先升级到包含该修复的版本再排查。~/.claude-mem/目录下还有worker.pid进程跟踪文件和logs/按天滚动的 Worker 日志。如果npm run worker:status显示异常但端口实际空闲查日志确认具体错误后再操作不要盲目清理文件。【免费下载链接】claude-memPersistent Context Across Sessions for Every Agent – Captures everything your agent does during sessions, compresses it with AI, and injects relevant context back into future sessions. Works with Claude Code, OpenClaw, Codex, Gemini, Hermes, Copilot, OpenCode More项目地址: https://gitcode.com/GitHub_Trending/cl/claude-mem创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表