更新

OpenClaw 迭代很快(还没到 “1.0”)。把更新当作发布基础设施一样对待:更新 → 运行检查 → 重启(或用 openclaw update,它会自动重启)→ 验证。

推荐方式:重新运行官网安装脚本(原地升级)

首选更新路径是重新运行官网的安装脚本。它会检测现有安装、原地升级,并在需要时运行 openclaw doctor

curl -fsSL https://openclaw.ai/install.sh | bash

说明:

  • 不想再跑引导向导就加 --no-onboard

  • 对于源码安装,使用:

    curl -fsSL https://openclaw.ai/install.sh | bash -s -- --install-method git --no-onboard

    安装脚本仅在仓库干净时才执行 git pull --rebase

  • 对于全局安装,脚本底层使用 npm install -g openclaw@latest

  • 历史说明:clawdbot 仍作为兼容性别名可用。

更新前的准备

  • 确认你的安装方式:全局(npm/pnpm)还是源码(git clone)。
  • 确认网关运行方式:前台终端还是托管服务(launchd/systemd)。
  • 快照你的个性化配置:
    • 配置:~/.openclaw/openclaw.json
    • 凭据:~/.openclaw/credentials/
    • 工作区:~/.openclaw/workspace

更新(全局安装)

全局安装(选一个):

npm i -g openclaw@latest
pnpm add -g openclaw@latest

不推荐用 Bun 运行 Gateway 运行时(WhatsApp/Telegram 有 Bug)。

切换更新频道(git + npm 安装均适用):

openclaw update --channel beta
openclaw update --channel dev
openclaw update --channel stable

使用 --tag <dist-tag|version> 进行一次性安装特定标签/版本。

详见开发频道了解频道语义和发布说明。

注意:npm 安装方式下,网关启动时会记录更新提示(检查当前频道标签)。通过 update.checkOnStart: false 禁用。

核心自动更新器(可选)

自动更新器默认关闭,是网关的核心功能(非插件)。

{
  "update": {
    "channel": "stable",
    "auto": {
      "enabled": true,
      "stableDelayHours": 6,
      "stableJitterHours": 12,
      "betaCheckIntervalHours": 1
    }
  }
}

行为:

  • stable:发现新版本后,OpenClaw 等待 stableDelayHours,然后在 stableJitterHours 内按每个安装实例确定性抖动(分散发布)。
  • beta:按 betaCheckIntervalHours 频率检查(默认:每小时),有更新时应用。
  • dev:不自动应用;使用 openclaw update 手动更新。

openclaw update --dry-run 预览更新操作,再决定是否启用自动化。

然后:

openclaw doctor
openclaw gateway restart
openclaw health

说明:

  • 如果网关作为服务运行,优先用 openclaw gateway restart 而非杀进程。
  • 如果你固定在特定版本,请参阅下方”回滚 / 版本锁定”。

更新(openclaw update

对于源码安装(git checkout),推荐使用:

openclaw update

它执行一个相对安全的更新流程:

  • 要求干净的工作树。
  • 切换到选定的频道(标签或分支)。
  • 从配置的上游 fetch + rebase(dev 频道)。
  • 安装依赖、构建、构建 Control UI,运行 openclaw doctor
  • 默认重启网关(用 --no-restart 跳过)。

如果你通过 npm/pnpm 安装(没有 git 元数据),openclaw update 会尝试通过包管理器更新。如果无法检测安装方式,使用上面的”更新(全局安装)“代替。

更新(Control UI / RPC)

Control UI 有 Update & Restart(RPC: update.run)。它会:

  1. 运行与 openclaw update 相同的源码更新流程(仅 git checkout)。
  2. 写入重启哨兵文件,附带结构化报告(stdout/stderr 尾部)。
  3. 重启网关并向最后活跃的会话发送报告。

如果 rebase 失败,网关会中止并在不应用更新的情况下重启。

更新(源码方式)

从仓库 checkout 目录:

推荐:

openclaw update

手动操作(大致等效):

git pull
pnpm install
pnpm build
pnpm ui:build # 首次运行时会自动安装 UI 依赖
openclaw doctor
openclaw health

说明:

  • 当你使用打包后的 openclaw 二进制(openclaw.mjs)或用 Node 运行 dist/ 时,pnpm build 很重要。
  • 如果从仓库 checkout 运行且没有全局安装,使用 pnpm openclaw ... 执行 CLI 命令。
  • 如果直接从 TypeScript 运行(pnpm openclaw ...),通常不需要重新构建,但配置迁移仍会应用 → 运行 doctor。
  • 在全局安装和 git 安装之间切换很简单:安装另一种方式,然后运行 openclaw doctor,让网关服务入口被重写为当前安装。

必做:openclaw doctor

Doctor 是”安全更新”命令。它故意很无聊:修复 + 迁移 + 警告。

注意:如果你是源码安装(git checkout),openclaw doctor 会提议先运行 openclaw update

它通常会做的事:

  • 迁移已废弃的配置键 / 旧版配置文件位置。
  • 审计 DM 策略,在有风险的”开放”设置时发出警告。
  • 检查网关健康状态,可能提议重启。
  • 检测并迁移旧版网关服务(launchd/systemd;旧版 schtasks)到当前 OpenClaw 服务。
  • 在 Linux 上确保 systemd 用户 lingering(使网关在登出后继续运行)。

详情:Doctor

启动 / 停止 / 重启网关

CLI(各操作系统通用):

openclaw gateway status
openclaw gateway stop
openclaw gateway restart
openclaw gateway --port 18789
openclaw logs --follow

如果使用了托管服务:

  • macOS launchd(应用打包的 LaunchAgent):launchctl kickstart -k gui/$UID/ai.openclaw.gateway(使用 ai.openclaw.<profile>;旧版 com.openclaw.* 仍可用)
  • Linux systemd 用户服务:systemctl --user restart openclaw-gateway[-<profile>].service
  • Windows (WSL2):systemctl --user restart openclaw-gateway[-<profile>].service
    • launchctl/systemctl 仅在服务已安装时有效;否则运行 openclaw gateway install

运维手册 + 准确的服务标签:网关运维手册

回滚 / 版本锁定(出问题时)

锁定版本(全局安装)

安装一个已知可用的版本(将 <version> 替换为上一个正常工作的版本):

npm i -g openclaw@<version>
pnpm add -g openclaw@<version>

提示:查看当前发布的版本,运行 npm view openclaw version

然后重启 + 重新运行 doctor:

openclaw doctor
openclaw gateway restart

锁定版本(源码)按日期

选择某个日期的提交(示例:“2026-01-01 时的 main 分支状态”):

git fetch origin
git checkout "$(git rev-list -n 1 --before=\"2026-01-01\" origin/main)"

然后重新安装依赖 + 重启:

pnpm install
pnpm build
openclaw gateway restart

以后想回到最新版:

git checkout main
git pull

遇到困难时

  • 再跑一次 openclaw doctor 并仔细阅读输出(它通常会告诉你修复方法)。
  • 查看:排错
  • 在 Discord 上提问:https://discord.gg/clawd