Flexus应用服务器L实例,2核 | 2GiB | 系统盘 40GiB | 流量包 400GB | 峰值带宽 3Mbit/s,云商店的OpenClaw镜像版本还停留在2026.3.2,为了能升级到后续的2026.3.13版本尝试了很多方法,几乎都是以 JavaScript heap out of memory 错告终,让我一度以为2G内存根本就升不上去2026.3.13版本。不过失败乃成功之母,最终还是靠总结多次失败的经验教训,摸索出了可以成功升级的方法步骤。
首先我们要清楚,华为云服务器商店的openclaw版本是如何运行的:
- pnpm wrapper:
~/.local/share/pnpm/openclaw(调用openclaw.mjs) - systemd 服务:直接跑
/home/openclaw/.nvm/versions/node/v22.22.1/bin/node /home/openclaw/openclaw/dist/index.js gateway
安装方式:pnpm 全局安装(~/.local/share/pnpm/openclaw → 软链接到源码)
运行方式:systemd 用户服务(openclaw-gateway)
源码路径:/home/openclaw/openclaw
具体的升级步骤如下:
环境是 pnpm 源码安装 + systemd 服务,升级步骤:
1. 进入源码目录拉最新代码
cd /home/openclaw/openclaw && git pull
完成这一步命令后,终端会弹出目前的版本分支信息
- [new branch] vk/revert_last_clean -> origin/vk/revert_last_clean
- [new tag] v2026.3.11 -> v2026.3.11
- [new tag] v2026.3.11-beta.1 -> v2026.3.11-beta.1
- [new tag] v2026.3.12 -> v2026.3.12
- [new tag] v2026.3.13-1 -> v2026.3.13-1
- [new tag] v2026.3.13-beta.1 -> v2026.3.13-beta.1
- [new tag] v2026.3.7 -> v2026.3.7
- [new tag] v2026.3.7-beta.1 -> v2026.3.7-beta.1
- [new tag] v2026.3.8 -> v2026.3.8
- [new tag] v2026.3.8-beta.1 -> v2026.3.8-beta.1
You are not currently on a branch.
Please specify which branch you want to merge with.
See git-pull(1) for details.
git pull <remote> <branch>
当前版本是 v2026.3.2(detached 状态),最新 tag 是 v2026.3.13-1。
升级步骤:
cd /home/openclaw/openclaw
# 先暂存本地改动
git stash push pnpm-lock.yaml
# 切换到最新版
git checkout v2026.3.13-1
终端提示root@hcss-ecs-f53d:/home/openclaw/openclaw# git checkout v2026.3.13-1
Previous HEAD position was 85377a2817 chore(release): cut 2026.3.2
HEAD is now at 61d171ab0b fix(browser): restore batch playwright dispatch
需要的话,之后可以 git stash pop 恢复本地改动(如果升级后有问题,不出问题不用管)。
2. 重新安装依赖并构建
pnpm install && pnpm build
注意:因为部分包会比较大,可能会导致响应超时,建议切换到国内镜像站点(install过程要等很久,一定要等程序跑完)
pnpm config set registry https://registry.npmmirror.com
pnpm install
装完后再切回官方源:(也可以不切,看你服务器在国内还是国外)
pnpm config set registry https://registry.npmjs.org
重点来了,执行过程中会出现报错,因为内存不够!
<--- Last few GCs --->
[24096:0x18dd0000] 28738 ms: Mark-Compact 882.6 (890.6) -> 875.3 (890.6) MB, pooled: 0 MB, 779.54 / 0.00 ms (average mu = 0.206, current mu = 0.038) allocation failure; scavenge might not succeed
FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
----- Native stack trace -----
1: 0x735eec node::OOMErrorHandler(char const*, v8::OOMDetails const&) [node]
2: 0xbafc40 [node]
3: 0xbafd2f [node]
4: 0xe48825 [node]
5: 0xe48852 [node]
6: 0xe48b4a [node]
7: 0xe5906a [node]
8: 0xe5d410 [node]
9: 0x18efec1 [node]
Aborted (core dumped)
构建时 Node.js 内存不足了。v24.14.0 用的是 1GB 堆内存,当前环境撑不住。
处理方案:增加内存限制
export NODE_OPTIONS="--max-old-space-size=4096"
pnpm install && pnpm build
执行上面的操作后,基本上就宣布升级成功了
当前的版本和状态:
- 已运行版本:v2026.3.13-1 + Node.js v24.14.0 ✅
- 服务状态:active (running)
确认正常的话不用动,等几分钟看看内存使用稳不稳。
3. 如果构建后 UI 有变化,还需要跑一下:
pnpm ui:build
另外,升级完成后建议跑一遍 openclaw doctor 检查状态:
openclaw doctor
4. 验证
systemctl --user status openclaw-gateway
openclaw gateway health
知识点:Node.js 本身不会主动用 swap——它是在物理内存不够时由系统决定换页。问题不是 swap 没有,而是 Node.js 的堆内存上限太小,爆了。需要通过 NODE_OPTIONS 告诉它可以用更大的内存:
# 在 gateway 环境里设置更大的堆上限
openclaw gateway stop
# 临时生效——重启 gateway 时带上这个变量
NODE_OPTIONS="--max-old-space-size=4096" openclaw gateway restart
# 之后升级也同理
NODE_OPTIONS="--max-old-space-size=4096" openclaw update --yes
持久化设置(每次启动都生效):
# 编辑 systemd 服务环境
sudo systemctl edit openclaw-gateway
加入:
[Service]
Environment="NODE_OPTIONS=--max-old-space-size=4096"
然后 reload:
sudo systemctl daemon-reload && sudo systemctl restart openclaw-gateway
简单说——--max-old-space-size=1024 是告诉 Node.js "你可以用最多 4GB 堆内存",物理内存不够时系统会自动走 swap。这样更新就不会爆了。
查看 OpenClaw Gateway Token 的方法:
方法1:查看配置文件中的 token
grep -A 2 '"auth"' /home/openclaw/.openclaw/openclaw.json
方法2:查看环境变量中的 token
echo $OPENCLAW_GATEWAY_TOKEN
方法3:查看进程环境中的 token
ps aux | grep openclaw-gateway | grep -v grep | awk '{print $2}' | xargs -I {} sudo cat /proc/{}/environ 2>/dev/null | tr '\0' '\n' | grep -i token
方法4:检查 Gateway 状态(会显示配置信息)
openclaw gateway status
方法5:直接查看配置文件
cat /home/openclaw/.openclaw/openclaw.json | python3 -m json.tool | grep -A 5 -B 5 "auth"
使用这个 token 访问前端:
http://127.0.0.1:18789/chat?token=”你的token”
此内容已加密
输入密码即可查看隐藏内容
暂无评论