OpenClaw更新后版本号未变,原因是系统中存在多个安装路径且PATH优先级导致命令与更新目标不一致。通过which命令排查发现旧版本路径优先级更高,更新操作实际作用于其他路径。解决方案是删除旧路径软链接,确保命令指向正确的新版本安装位置,并建议统一包管理方式避免多路径冲突。
最近在更新 OpenClaw 时遇到了一个诡异的问题:openclaw update 显示更新成功,但 openclaw --version 版本号却纹丝不动,旧版本一直用了一周。折腾一番后终于找到根因,记录下来供遇到类似问题的朋友参考。
🔍 问题现象
执行 openclaw --version 显示版本为 2026.3.23-2,运行 openclaw update 后提示:
✓ Update successful
Before: 2026.4.1
After: 2026.4.1
看起来更新成功了,但再次运行 openclaw --version,版本号仍然是 2026.3.23-2。这就很奇怪了。
🔍 排查过程
第一步:检查命令路径
用 which openclaw 查看当前使用的命令路径:
$ which openclaw
/home/saiita/.npm-global/bin/openclaw
这是旧版本所在的路径。
第二步:检查更新目标路径
查看 openclaw update 实际更新的是哪里。根据 Node.js 的 npm 全局安装规则,nvm 管理的 Node 环境下,全局包会安装到:
/home/saiita/.nvm/versions/node/v22.22.1/lib/node_modules/openclaw
而 which openclaw 指向的是 ~/.npm-global/bin/openclaw,这是另一个安装路径。
第三步:全面排查安装路径
最终发现系统中竟然有 三个 OpenClaw 安装:
# 旧版本(PATH 优先级最高)
~/.npm-global/lib/node_modules/openclaw/
# 新版本(nvm 管理)
~/.nvm/versions/node/v22.22.1/lib/node_modules/openclaw/
# linuxbrew 安装(也很旧)
/home/linuxbrew/.linuxbrew/lib/node_modules/openclaw/
💡 根因分析
问题出在 PATH 环境变量的优先级。~/.npm-global/bin 在 PATH 中排在 ~/.nvm/versions/node/v22.22.1/bin 前面,所以:
openclaw命令执行的是~/.npm-global/bin/openclaw(旧版)openclaw update更新的是 nvm 路径下的版本(新版)- 两边完全不是同一个安装,自然版本号不会变
✅ 解决方法
删除旧的安装路径,让 nvm 管理的版本生效:
# 删除旧的软链接
rm /home/saiita/.npm-global/bin/openclaw
# 确认新路径生效
$ which openclaw
/home/saiita/.nvm/versions/node/v22.22.1/bin/openclaw
$ openclaw --version
2026.4.1 ✅
同时建议清理 linuxbrew 下的旧安装:
brew uninstall openclaw # 如果是通过 brew 安装的
🧹 附:清理残留配置
顺便检查了 ~/.openclaw/openclaw.json,发现有一些已卸载插件的残留配置(qwen-portal-auth、qqbot、browser 等),一并清理:
# 编辑配置文件,删除不存在的插件条目
nano ~/.openclaw/openclaw.json
📝 经验教训
- npm 全局安装可能存在多个路径冲突:nvm、npm-global、linuxbrew 都可能各自安装了一份
which是排查版本不匹配的第一利器:看到版本不对先看命令路径- 更新后务必验证:
--version确认实际运行的版本 - 统一包管理方式:建议只用 nvm 管理 Node 和全局包,避免多路径混乱
🔗 相关阅读
希望这篇排查记录对你有帮助!如果遇到类似问题,记得先 which 一下。

暂无评论
要发表评论,您必须先 登录