龙虾AI · OpenClaw 智能体生态导航 龙虾AI(OpenClaw)中文资料与下载导航
OpenClaw 官方文档 Update troubleshooting 页面:左侧目录停在 Maintenance / Update troubleshooting,正文开头讲更新失败后的自动排查,右侧本页目录列出 Doctor cannot enter maintenance during finalization、Published 2026.9.4 on large agent fleets、Reason codes 等小节
OpenClaw 官方文档的 Update troubleshooting 页,右侧本页目录里能看到 Doctor cannot enter maintenance during finalization、Published 2026.9.4 on large agent fleets、Reason codes 等小节,截图于 2026 年 9 月。

教程 · 维护

OpenClaw 9.4 升 9.5 失败后按报错码逐个处理

升级报错以后,第一条该敲的命令是 openclaw update status,看清这次失败落在哪种原因上:doctor-failed、managed-service-preflight、runtime-verification-failed,还是收尾阶段的「Doctor could not enter maintenance」。这几种的第一步处理各不相同,对上号再动手。

状态目录这时候先别恢复。官方排障页写明:更新失败后,第一反应不该是恢复状态,应当在保留现有状态的前提下,把确认能用的代码重新装回来(官方更新排障文档)。平时怎么升级、怎么回滚,在《OpenClaw 升级、回滚与彻底卸载》里;这篇接的是它后面那一截:升级已经报了错。

排障页里有好几段是专门冲着已发布的 2026.9.4 更新器写的。从 9.4 往上升,执行升级的是你机器上已经装好的那个旧更新器,它身上的限制会带进这次升级。时间线:GitHub 上 2026.9.4 发布于 9 月 11 日,2026.9.5 发布于 9 月 19 日;截至 9 月 23 日,npm 上 latest 和 beta 都指向 2026.9.5,extended-stable 是 9 月 21 日发布的 2026.7.35。

用 openclaw update status 认出原因码

在跑 Gateway 的那台机器上执行:

openclaw update status

在输出里找这次失败的原因码;收尾阶段失败的,找 finalize:doctor 后面的报错原文。开着控制台的,也可以去 Control UI 的 Settings → Updates 看,官方文档写明那里会保留最近一次尝试的时间、原因码(reason code)和失败的那一步。拿到之后对照这张表:

你看到的对应情况先做的动作
doctor-failed更新过程中的 doctor 检查没过在 Gateway 主机上跑 openclaw doctor,处理完再重试
managed-service-preflightmacOS 上由 2026.9.4 Gateway 发起的升级,交接成功,激活时失败从独立终端跑一次 openclaw update
runtime-verification-failed约 300 秒停下;快照准备和候选检查共用五分钟时限看下文五分钟时限一节,重试一次仍失败就手动升级
finalize:doctor · Doctor could not enter maintenance还有 Gateway 占着所选的状态目录停掉占着状态目录的 Gateway,再跑 openclaw update repair

表里没列到的原因码,排障页有专门的 Reason codes 一节。

doctor-failed:回到 Gateway 主机上跑 doctor

官方对 doctor-failed 的处理是:在 Gateway 所在的主机上运行 openclaw doctor,把它报出的问题逐项处理掉,然后重试更新。

openclaw doctor

「Gateway 所在的主机」要照字面执行。Gateway 跑在远程服务器上,就登录那台服务器去跑,别在自己电脑上跑完就当查过了。

doctor 报几项就处理几项,每处理完一项再跑一遍 doctor,看它还报不报;清干净了再重试更新。9 月 23 日 GitHub 上新开的 #156194,就是一台 macOS 机器在 2026.9.4 上报的 doctor-failed。

managed-service-preflight:macOS 上由 Gateway 发起升级时撞上的

官方把这种情况写在 macOS 下:2026.9.4 的 Gateway 通过它的 update.run 动作或 /update 发起升级,交接能成功,到激活那一步以 managed-service-preflight 失败(官方更新文档)。

处理办法是由这套 OpenClaw 的主人,在 Gateway 进程树之外的独立终端里,用同一个账户、同一份安装、同一套状态和配置,跑一次:

openclaw update
  • 账户不换:平时是哪个 macOS 用户在跑 Gateway,就在哪个用户下敲这条命令,别切到别的用户去执行。
  • 终端要独立:「outside the Gateway process tree」按本站理解,就是自己在 Mac 上新开一个终端窗口来敲,别让龙虾用它的 shell 工具代跑——那个 shell 是从 Gateway 那边拉起来的,还挂在它的进程树里。
  • 安装和状态对得上:机器上装过两份 OpenClaw、或者指定过别的状态目录的,要在出问题的那一份上跑,别换到另一份。

如果 2026.9.4 更新器是直接拒绝、原因写着 managed-service-preflight,官方的做法是在 Gateway 之外的 shell 里跑手动更新,把命令里的 <target> 换成拒绝信息里写明的确切目标版本。那条命令在官方更新文档里,照抄时只改这个占位符。

9 月 20 日的 #153547 是一台 macOS 机器从 2026.9.4 升 2026.9.5 时撞上这个原因码,报告里的 Node 是 26.5.0,在官方要求的范围内。FreeBSD 的读者另记一句:官方在 FreeBSD 部分写明,--no-restart 修不好旧的准入检查。

runtime-verification-failed:卡在五分钟时限上

已发布的 2026.9.4 更新器,给快照准备和候选检查共用一个五分钟的时限。runtime-verification-failed 在 300 秒上下出现,撞上的就是这道线。9 月 19 日的 #153055 报的正是状态库太大、每次卡在 300 秒升不上去。

这种时候别做这几件事:

  • 把 --timeout 调大再试。官方原句写明,就算给了更大的 --timeout,已装的更新器仍让快照和候选检查共用这段时限。
  • 为了压进五分钟去清状态库。删掉的东西,升级成功了也回不来。
  • 同一条命令原样连刷。旧更新器的时限不会因为多试几次变长。

管着一批机器的,排障页有一节 Published 2026.9.4 on large agent fleets,动手前先读。单台机器重试不过,看后面的手动升级。

收尾报「Doctor could not enter maintenance」

这条出在 finalize:doctor,也就是升级的收尾阶段。官方的解释是:还有一个 Gateway 占着所选的状态目录,doctor 进不了维护状态。

官方给的处理顺序是:先解决占用问题,再跑 openclaw update repair,然后用 openclaw update status --json 和 openclaw gateway status --deep 查还有没有挂着没做完的迁移、记录下来的警告,以及当前健康状况。占着目录的多半就是还在跑的 Gateway,先把它停掉:

openclaw gateway stop
openclaw update repair
openclaw update status --json
openclaw gateway status --deep

update repair 做的是把更新的收尾重跑一遍,核心包它不重装。官方还写明:别去删锁文件硬闯维护状态。

手动升级:官方给 root 所有的 Linux 全局安装写的步骤

runtime-verification-failed 重试一次仍在 300 秒上下失败,可以改走这套手动步骤。这套流程直接用 npm 装包,不经过已装 2026.9.4 的更新器,而卡在 300 秒上下的正是那个更新器自带的时限。

官方步骤(官方更新方式文档):

openclaw gateway stop
sudo /usr/bin/npm i -g openclaw@latest --allow-scripts=openclaw
openclaw gateway install --force
openclaw doctor --fix
openclaw gateway restart

第二行的 sudo 配 /usr/bin/npm,是官方针对 root 所有的 Linux 系统全局安装写的:用系统自带的 npm,全局目录归 root 管。

本站提醒:Node 是用 nvm 或 Homebrew 装的,用你自己那份 npm,不加 sudo,第二行换成:

npm i -g openclaw@latest --allow-scripts=openclaw

--allow-scripts=openclaw 这个参数适用于 npm 12 或 npm 11.16 以上;npm 11.15 及更早的版本,把它整个去掉再跑。Node 本身也要达标:24.x 线要 24.16 以上,或者 26.1 以上。当初是按哪种方式装的记不清了,翻《本地部署 OpenClaw 龙虾:三平台照抄教程》对一下。

五步里任何一步报错,就停在那一步,把完整输出存下来,别跳过去接着敲。走完这五步也未必就升上去了:原因码背后的问题没处理干净,照样可能卡在 doctor --fix 或重启那一步。

升完怎么确认升上去了

在跑 Gateway 的那台机器上依次执行:

openclaw --version
curl -fsS http://127.0.0.1:18789/readyz
openclaw plugins list --json
openclaw gateway status --deep --json
openclaw doctor --lint --json
命令看什么
openclaw --version版本号是不是你要升到的那一版;装的是 latest 的,按 9 月 23 日的 npm 标签,版本号应是 2026.9.5
curl -fsS …/readyz不报错退出,表示就绪接口返回了成功状态;-f 会让失败的 HTTP 状态直接报错。18789 是官方示例里的端口,你的 Gateway 不在这个端口就换成实际端口
openclaw plugins list --json升级前装过的插件是不是都还在列表里
openclaw gateway status --deep --jsonGateway 服务是否在跑、深度检查有没有报异常
openclaw doctor --lint --jsondoctor 的检查结果,升级后还遗留的问题会列在这里

五条都过了,这次升级才算落地。还有一条过不去,排障页的 Support diagnostics 一节是给要找人求助的情况准备的;GitHub 上 #153547 和 #156194 的标题都写成「Update failure: 原因码 (2026.9.4)」,拿自己的原因码搜,能找到同样处境的报告。

常见问题

更新失败后能直接恢复状态目录吗?
恢复状态放在后面,第一步是在保留现有状态的前提下,把确认能用的代码重新装回来,这是官方排障页的要求。真要回滚,先读该页的 Rollback boundary 一节。
把 --timeout 调大能解决 300 秒超时吗?
对已装的 2026.9.4 更新器没用。它让快照准备和候选检查共用五分钟时限,官方写明给了更大的 --timeout 也一样。
nvm 装的 Node 手动升级要加 sudo 吗?
本站建议不加,用你自己那份 npm。官方命令里的 sudo /usr/bin/npm 是针对 root 所有的 Linux 全局安装写的。
现在升级该升到哪个版本?
从 2026.9.4 往上升,升到 2026.9.5:截至 2026 年 9 月 23 日,npm 上 latest 和 beta 都指向它,手动升级命令里的 openclaw@latest 装的就是这一版。extended-stable 指向的 2026.7.35 版本号比 2026.9.4 低,从 9.4 装它是降级,动手前先读排障页的 Rollback boundary 一节。