本页内容
本页内容
CLI 命令
更新状态和运行历史记录
可用性检查和每次更新留下的持久记录。 openclaw update 参考的一部分。
update status
显示活动更新通道、git tag/branch/SHA(仅限源签出)、更新可用性以及活动或最新更新报告。当更新处于活动状态时,该表会显示其阶段而不是通告另一个更新,并且最后一行指向 openclaw update status。 JSON 仍包括与 activeRun 分开的 registry/Git availability。
当包发布日志不再与其安装相匹配时,状态会使用其记录的当前 dev:ino 值来命名已更改的父目录、控制目录或日志绑定。它会识别仅设备编号的更改,并引导您前往 openclaw update repair 进行验证恢复。
Git可用性检查,包括网关启动后的后台检查,仅刷新选定的上游。它们不会导入其他远程分支或标签、修剪现有引用或更改浅历史记录边界。新的分离开发签出可以发现其配置的 main 上游,而无需首先获取远程的完整引用库存。本地上游不需要获取;未知的上游始终是未知的。所选上游自身丢失的历史记录仍可能被下载。当浅历史记录没有合并基础时,Ahead/behind 计数仍然不可用。
准备后启动工作完成后,网关初始化本地更新事实。本地 Git 发现使用每个命令的托管网关启动限额(45 秒,或 Windows 上的 90 秒),并在超时后退避一秒后重试一次。如果两次尝试都超时,则会记录一个初始化警告,并且 update.status RPC 报告 schedule.install.git.status: "unavailable",原因为 "git-unavailable"。状态读取重用该结果;显式的开发签出刷新可以恢复它。没有 Git 元数据的包目录会跳过 Git 发现子过程。
重新连接 Control UI 客户端共享网关重启通知快照的一份准备工作。当更新发生变化时,更新生产者和更新运行观察者会刷新该快照;普通状态读取不会重新读取或完成通知。观察程序还会等待分离更新程序的延迟终端通知长达 30 分钟,然后如果仍处于待处理状态,则记录警告。运行历史记录继续独立报告记录的结果。
对于使用 update.channel: "stable" 或 "beta" 配置的干净源签出,update status --json 可以包括 update.git.preferredTarget 和 channel、tag 以及确切的提交 sha。这使用更新程序的发布选择器并获取到临时私有 Git 存储库,保留已安装的引用和签出。所选标签仍必须解析为发布远程处的提交;保留的仅本地标签不算作新目标。
缺失字段意味着未知。 Default/dev 目标、显式引用、不支持的通道、脏检查和不成功的检查不会产生此事实。它描述了观察到的配置通道的首选选择,而不是候选构建成功、降级批准、服务准备情况或安全状态恢复。显式更新调用可以选择不同的目标或安装方法。较早安装的状态命令无法从候选代码中获取此观察结果。
即使没有本机采用,由外部部署所有者管理的根拥有的、受保护的不可变布局也会报告主机管理的安装。启动状态不会运行 Git 发现或启用这些布局的自动更新。使用部署所有者来更新它们;在先前的更新程序停止后,本机准备和激活仍然需要明确采用。
对于采用的不可变安装,安装投影包括activationEnabled仅当明确启用时。activation报告保留操作的operationId, phase, previousSha, 和candidateSha,加上可选的保险箱failure并准确保留recoveryCommand. lastActivation记录历史验证(outcome, selectedSha, 和verifiedAtMs),包括可选网关version, buildId, pid, 和bootId。文本状态标签成功公认和回滚恢复了;恢复前任并不是候选人的成功。较旧的收据可能会省略网关字段。即使存在历史收据,待恢复仍保持独立。请阅读以下内容update.immutable in CLI JSON or schedule.install.immutable在网关update.status。有准备的一代或starting阶段未激活成功。使用openclaw update recover --root <installation-root>协调保留的操作。一旦网关识别出采用的不可变安装,普通update.status请求刷新其本机激活事实;呼叫者不需要refreshCheckout: true观察相变。该安装的本机记录优先于外部更新管理器。
对于 Git 安装,update status --json 可以包含 update.git.artifacts。在本机验证程序检查观察到的源提交、构建标记、运行时条目和 Control UI 资产后,ready: true 包括已安装的工件 version 和不可变的 buildId。 ready: false表示验证失败;缺少字段意味着工件准备情况未知。此观察不会建立远程目标的新鲜度、候选验证或正在运行的网关的身份或运行状况,并且不会授权状态恢复。该版本更喜欢记录的构建元数据,并在构建没有版本时回退到包版本,遵循 CLI 的版本优先级。
如果更新需要后台助手进行,则该命令尚未完成更新。按照最后的 openclaw update status 命令检查进度和结果。 openclaw gateway status --deep 检查网关运行状况,而不是更新进度。
状态还显示未完成的插件 data/settings 升级及其修复命令,包括较旧的更新程序未在其运行历史记录中记录这些警告的情况。在主动更新期间,请先完成更新,然后再遵循插件修复建议。现有插件数据和设置将保留,直到升级完成。 JSON 将这些消息公开为 migrationWarnings;当插件迁移完成时它们会清除。此检查也适用于直接 Git/source 或程序包管理器升级而不运行更新。升级后运行 openclaw doctor --fix;正常命令和网关启动不会检查或应用延迟的插件迁移。如果无法读取迁移状态,migrationWarningsError 会报告失败,但可用性和运行历史记录仍然可见。
最终更新摘要在上次修复通过后将插件迁移警告与待处理的分类帐进行协调。已完成的义务留下最终总结和持续的警告步骤;待处理的义务保留其重试命令。如果无法读取分类帐,摘要会保留警告。在早期阶段已经打印的消息可以保留在终端回滚中。重复警告在最终报告中出现一次。如果更新 Doctor 延迟代理数据库路径修复以保留回滚库存,其警告将指向 openclaw doctor --fix,而不告诉您等待更新完成。
当网关可达时,状态还会读取其记录的通道警告,而不检查通道服务。 JSON 将这些公开为 channelIssues。这包括本地插件请求可信运行时状态后阻止通道启动,以及源和支持的安装补救措施。不可用的网关不会阻止可用性或运行历史记录输出。
对于本地网关,状态还会显示其上次关闭记录安装替换的时间,即使在后继网关启动之后也是如此。 JSON 将记录的原因和完成时间公开为 lastGatewayInstallationReplacement。这是历史信息,而不是当前的健康状况判断或更新运行;手动包管理器替换不会创建更新程序历史记录。
| 标志 | 默认值 | 描述 |
|---|---|---|
--json |
false |
输出机器可读的状态 JSON。 |
--timeout <seconds> |
300 |
检查超时时间。 |
显式超时取代默认超时。本地安装发现保留自己的检查预算。
对于 extended-stable 软件包安装,状态会执行与前台更新相同的公共选择器和精确软件包验证。当已安装版本较新时,它可以报告 ahead of extended-stable。JSON 失败信息包含 registry.reason(selector_missing、selector_query_failed、exact_package_mismatch 或 unsupported_git_channel)。
运行历史记录和报告
每个承认的更新都有一个持久的 runId,包括聊天请求的更新、Control UI、CLI 和自动更新活动。使用现有运行时数据库对配置文件进行试运行预览,并在准入后拒绝更新,并保留跳过或失败的记录及其原因。新配置文件的试运行会使数据库不存在并且不记录任何运行。 CLI 调用在准入前被拒绝,保持状态不变。相同的 ID 遵循分离的更新程序和重新启动的网关,因此重新连接不会丢失结果。核心完成后子级向其父级报告,而不创建单独的更新运行,包括当较旧的更新程序无法转发运行 ID 时。
在现有配置文件上,更新历史记录准入使用更新步骤超时(默认情况下为 30 分钟,或 --timeout)等待数据库编写器。如果等待到期,命令将成功退出,并显示延迟的 update-ledger-busy 结果和重试指导。它不声明更新已完成或创建运行;以前的历史仍然清晰可见。试运行报告 notes 中的预览不完整。 Repair 将其现有的飞行前预算用于相同的入场。状态和后台历史记录工作保留了较短的等待预算。当准入耗尽时,隐藏的核心后终结会返回一个非零退出,并具有相同的延迟原因。其网关父级记录跳过的结果并让重新启动挂起,直到稍后的更新完成插件收敛。公众update、--dry-run、update repair保持成功延期退出。此行为需要更新的 CLI:以前安装的更新程序在其自己的历史记录许可完成之前无法使用候选代码。
分类保留原始更新报告。修复期间启动的任何更新都会获得单独的 runId。
意外的自动更新活动失败会在运行历史记录和网关日志中保留错误代码(如果存在)和经过编辑的诊断。活动清除后,状态和有界运行报告会显示原因。这需要更新网关;较旧的运行无法恢复从未记录的原因。
安承认openclaw update --json包括runId和run记录。openclaw update status --json包括activeRun当跑步正在进行时并且lastRun当历史存在时。自动更新活动在其自身承认的运行完成时停止显示为应用,包括在重新启动网关之前托管切换失败时。网关会协调确切的营销活动运行,因此较新的不相关运行不会使已完成的营销活动保持忙碌或清除不同的活动营销活动。
保留的试运行预览仍然可以通过历史查询查询,但不会替换 lastRun,因此预览无法隐藏上次真正的更新失败。如果无法读取或分类历史记录,状态仍会显示更新可用性和运行时结果。人工输出说明运行状态不可用; JSON 包含 runStatusError 并省略运行字段。这并不意味着没有活动或过去的运行,并且状态不会修复不可读的历史记录。
如果状态保持在其初始 requested/in_progress 步骤并且没有保留的恢复描述符,则状态可以在超过 24 小时后协调未受影响的无身份遗留准入。该行在历史记录中保留为 failed,原因为 legacy-driver-expired。当该行是当前运行时,状态显示重试指导。当另一次运行当前时,状态会保留历史通知,而无需重试指令,包括在以后成功更新之后。其他历史记录仍然是只读的。
当活动行处于非活动状态超过 30 分钟并且其记录的驱动程序可验证已死亡时,状态还会报告 abandonedRun 及其 runId 和协调 rule。对于这些行,状态保持只读:存储的行保留在 activeRun 中,直到网关或显式修复提交结果。旧版到期形状之外的无身份行不会自动协调。对于那些过时的无标识行,JSON 包括 staleRun、runId 和 guidance;人员状态和医生预检报告“自 <time> 以来没有任何活动;如果没有更新正在运行,请运行 openclaw update repair 或启动新的 openclaw update”。
仅当它是唯一的活动运行、没有记录的驱动程序身份并且超过 30 分钟没有活动时,显式新 openclaw update(包括 --dry-run)才会取代旧行。准入以 failed 原子方式完成该行,原因为 superseded 和保留的 reconcile:superseded 步骤,然后创建新的运行。最近的行和具有记录身份的行将被保留。继承的更新延续和自动活动不会取代旧历史记录。配置写入保持挂起状态,直到活动行得到协调。
OpenClaw 2026.9.2 可以在旧行保持运行的同时接纳新的 CLI 更新;过时的行不会阻止更新程序准入。正常升级,然后如果状态仍显示旧运行,则从更新的安装运行 openclaw update repair。请参阅 Updating。
聊天完成通知显示简短的结果和下一步。有关诊断和恢复说明,请在 Control UI 中打开 Settings → Updates 或在终端中运行 openclaw update status。人员状态输出、Control UI 更新视图和 openclaw status 更新行使用详细报告,包括成功情况。报告显示记录的事实;缺少验证事实意味着未遵守检查。
如果恢复验证网关在更新失败后仍在服务,则终端和保存的 Markdown 指导会命名该版本,并指导您在重试 openclaw update 之前修复更新失败。更新依然失败;服务运行状况不授予重新启动或回滚的权限。重新启动安全和迁移状态约束仍然单独可见。
仅当保存的观察值和预期值不一致时,不成功的身份检查才会报告为版本或构建不匹配。丢失的身份证据被报告为不可用,包括更新程序仅保存 versionMatch: false 的旧运行。 Control UI 的版本徽章显示 Not verify(表示不可用的身份证据)和 Failed(表示观察到的版本或版本不匹配)。这不会改变记录的更新结果。
对于失败的运行,人员状态和审查的故障报告也会尝试向记录的网关端口发出只读运行状况请求。响应取代了网关已停止的历史声明;它不会更改失败的更新结果或验证回滚安全性。保存的恢复建议被标记为历史,保留配置和迁移约束。如果无法读取当前健康状况,报告会这样说明。 JSON运行记录仍保留原始历史事实。
当更新程序观察到特定检查、医生发现、包管理器错误、服务检查原因或插件故障时,失败的步骤包括有限的 failureFacts。每个事实都会命名检查和原因代码,并带有可选的受影响的配置密钥、插件 ID 以及一个最多 200 个字符的诊断行。这些事实保留在运行分类帐中,并出现在本地摘要和经过审查的 GitHub 故障报告中。秘密和私人路径在录制前经过编辑;公共报告包括已识别的错误原因而不是任意命令或用户文本,并显示配置键系列而不是操作员定义的名称。仅包含目录确认的公共检查和插件 ID;未知的 ID 和代码在本地保持完整并公开编辑。较早的运行无法恢复其更新程序未记录的事实。现有的历史记录和报告大小限制仍然适用。
失败的更新始终保留原因代码和失败事实,包括第一个命令运行之前的失败。 Git 失败使用 fetch-failed、git-root-unresolved、unsupported_git_channel 和 snapshot-capacity-insufficient 等代码。在恢复仍拥有运行时拒绝使用 update-recovery-pending;否则未分类的故障使用 update-failed。当必须编辑私人诊断文本时,检查和代码仍然可见。
npm 故障记录按顺序保留前五个已清理的错误行。超过 200 UTF-8 字节的行保留前缀,后跟空格和该预算内的显式 …[truncated] 标记。失败的包基线扫描会记录 baseline-scan-failed 以及扫描的原始原因,包括其身份回退也失败的时间。成功回退后的超时仍然是一个警告。
恢复权限拒绝标识对象角色和基本名称、观察模式、链接计数和所有者 UID,以及所需的私有模式和文件链接计数。省略安装路径和文件内容。保存回收证据;在未识别其所有者的情况下,请勿删除链接或更改权限。这些诊断需要更新安装的更新程序;候选者无法将它们添加到已经运行的旧更新程序中。
当托管服务切换无法启动或转移所有权时,网关会在失败的 requested 步骤上记录拒绝。状态包括原因代码后记录的诊断;聊天和故障报告使用相同的事实。公共报告保留已识别的切换诊断,包括在找不到已安装的更新程序时运行 openclaw doctor 的指令。一旦网关运行更新的代码,这将适用;较旧的报告无法恢复缺失的事实。
失败的最终确定步骤会在失败报告开始之前记录其原因代码。独立完成还记录包或 Git 安装类型。对于软件包安装,它记录了软件包回滚是不必要的,因为最终确定不会替换核心软件包;这并不表明 Doctor 保持配置或状态不变,或者网关健康状况已得到验证。故障报告包括已识别的错误代码和失败步骤的保留诊断的原因,包括进程退出代码(例如,exit 1 (EACCES; Permission denied))。任意日志文本保持私密;没有识别诊断的步骤仅显示其退出。
即使更新成功,可恢复的维护故障也会显示为记录的警告。最终控制台摘要、保存的 Markdown 报告和人类 update status 显示每个记录的警告。成功的运行会在信息诊断之前发出警告,包括禁用的自动数据库恢复和保留但未重新应用的本地更改及其记录的恢复路径。简短的聊天摘要仍然受到大小限制。每个维护警告都会列出跳过的工作、原因和修复命令。 Doctor 还将最近一次运行的警告显示为历史观察结果:稍后的修复可能已经解决了这些问题。现有的报告和历史记录大小限制仍然适用。
前台更新程序在所需的最终确定工作及其本地执行程序解决后发布其最终结果。较晚的所有权或发布失败会返回错误,而不是发布较早的成功。现有的终端历史记录不会被覆盖。
意外的执行程序准入、结算或报告发布失败还会记录最后到达的阶段、编辑的错误以及在提供交互式失败报告之前是否需要或尝试回滚。如果所有权丢失或挂起的恢复阻止安全历史记录写入,则该命令会报告恢复挂起并为其所属更新程序保留现有历史记录,而不是启动交互式分类。
激活有一个根据更新的现有阶段预算得出的最终期限。如果过期,更新程序将取消拥有的工作并在该预算内等待其子进程解决,然后将 update-activation-timeout 记录为失败结果。未停止的子级保留其所有权和恢复状态。检查 openclaw update status 和 openclaw doctor,并等待所属更新程序及其子项停止,然后再运行 openclaw update repair。超时并不授权回滚或删除保留的更新状态。如果迁移或挂起的恢复阻止安全历史记录写入,则更新程序会报告超时并保留该状态以供其所属的运行时进行协调。
成功的安装验证并不意味着过时的软件包备份已被删除。如果包所有者确认只有过时的备份清理处于挂起状态,JSON、历史记录和人工报告将包含一条带有保留路径和后续指导的警告。未经验证的恢复、不可读的备份状态和未知的完成失败仍然是错误。在手动删除过时的备份之前检查保留的路径;未解决的回收材料不符合此次清理的资格。
使用 operator.admin 的网关客户端可以检查历史记录:
update.runs.list 返回 { runs }; limit 默认为 20,上限为 100。update.runs.get 返回 { run },当 ID 未知时返回 run: null。 update.status 保留其现有字段并添加可选的 activeRun 和 lastRun 记录。当运行处于活动状态时,网关将 update.run.changed 与 runId、phase、status 和 updatedAtMs 进行广播。重新连接并读取该行以恢复重新启动期间丢失的更改。
网关的 update.status 报告当前的自动更新策略和任何实时活动,与结账发现无关。安装详细信息稍后会提供;阅读状态不会开始安排或清除活动的活动。如果无法解析更新通道,则 schedule 保持缺席状态,而不是声明调度程序空闲。
最近的缓存检查可以跳过另一次注册表查找,但仍会发布启动时已发现的安装详细信息。因此,即使自动更新已关闭,当前的软件包安装也会在“设置”→“更新”中显示 Up to date。缺少安装详细信息并不意味着安装是最新的。
当历史请求需要只读快照时,网关会异步准备它,以便其他请求可以继续。快照保留源数据库及其附属文件。网关的 update.status 通过已打开的数据库(如果可用)读取其两条运行记录,从而避免每次轮询时复制完整数据库。冷状态读取准备一个私有快照。启用诊断后,状态请求将持续至少一秒日志阶段持续时间,用于哨兵刷新、签出刷新、安装身份、协调、历史记录和响应。
本机服务停止观察不会提前更新的记录阶段。如果 Control UI 无法读取最新进度,则会在上次记录的运行旁边显示读取错误;使用 Check status 重试而不开始另一次更新。
相位为 requested、staging、validating、activating、restarting、verifying 和 finished。状态为 running、succeeded、failed、rolled-back 或 skipped。较旧的更新程序记录还可以包含 repairing 和推理修复尝试。当前的推理修复属于故障后分类,不会重写更新结果。仅在观察到时才包含阶段时间、修复尝试和验证事实。聊天报告限制为 1,500 个字符; update.runs.get 保留有界记录以供详细检查。
如果准备就绪时间结束时稳定网关仍在启动,则运行将完成 skipped,原因为 gateway-readiness-unverified。这意味着安装已完成,未确认准备情况,并保留恢复备份。 finishedAtMs 观察结束时记录; confirmedAtMs 仍为 null。警告日志保留已用的限额和最后的 service/HTTP 观察结果。不承诺任何背景准备持续。使用openclaw gateway status --deep检查当前健康状况;后来的健康并没有改写这个历史结果。当达到准备状态时,在限额记录 succeeded 和 confirmedAtMs 内准备就绪的网关。
独立完成和修复记录Doctor运行之前安装的目标版本。失败的 Doctor 步骤保留观察到的子退出代码以及有限的、经过编辑的失败原因;终止的子进程可以有 null 退出代码。状态和故障报告使用这些相同的记录事实。安装的版本并不能证明当前正在处理请求的版本。可选的 Doctor 诊断失败仍然是警告,而拒绝配置写入和不完整的所需迁移仍然是错误。历史运行无法恢复其更新程序从未记录的事实。
如果候选检查通过信号退出,则其失败步骤将保留 termination、signal 和经过编辑的 stderrTail(最多 80 行,每行 512 个字符,总共 8,192 个字符,在存在时保留致命标头)。该报告命名了检查,包括 检查数据迁移 for Doctor,并在相邻插件警告之前显示本机诊断。终端和本地Markdown报告保留摘录;简短的状态报告可以将其截断。 JSON历史保留有界摘录,审阅的公开报告保留终止类别和识别信号。此捕获需要更新的更新程序;候选者无法恢复旧安装的驱动程序丢弃的诊断信息。
当前的更新程序会记录其进程身份,并在漫长的构建、安装和最终确定阶段每 30 秒刷新一次账本。每当 Doctor 子级处于修复状态时,这些写入都会暂停:最终确定会暂停它们以进行修复 Doctor,包括后插件 Doctor,并且安装会暂停它们以进行激活 Doctor 步骤。这些阶段记录了它们的开始和完成;记录的驱动程序身份可以保护正在运行的更新,同时其上次活动时间戳保持不变。网关在启动时和跟踪活动更新时检查放弃的运行。当验证的完成无法恢复时,超过 30 分钟没有步骤或心跳活动以及可验证的死记录驱动程序允许网关以 failed 的形式完成运行,原因为 abandoned 和命名规则的 reconcile:abandoned 步骤。活动的、不可读的或外部主机驱动程序会阻止协调。每个帮助者或终结子都会记录自己的身份并保留较早的驱动程序,因为分离的子代可能比其父代更长寿。如果进程身份记录不可用,则更新将继续并发出一个警告,并且运行需要显式恢复。已知的父身份仍然受到保护,并且自动协调对于该运行保持禁用状态。每次驱动程序运行时,心跳写入错误都会发出一次警告,并且不会中断正在运行的构建、安装或终结阶段。
更新后的候选者会在核心后工作完成后记录其已安装的版本和构建标识,然后将完成结果交还给已安装的更新程序。如果更新程序在重新启动验证期间退出,则在重新检查确认已安装和服务版本与记录的目标匹配且网关已准备就绪后,网关或医生可以以 succeeded 的身份完成运行。这还允许更正匹配的 abandoned 结果,并将对账记录在历史记录中。实时或不可观察的驱动程序、保留的恢复工作以及记录的修复、故障或回滚证据仍然受到保护。
中断的完成检查在设置、服务和端口检查、健康结算和最终身份检查方面共享一个 50.5-second 截止日期。报告和警告日志记录结算、经过时间和阶段的超时或未经验证的观察结果。超时是一种警告,并使运行有资格稍后进行协调;重复诊断不会更新其放弃计时器。在没有记录的已完成托管服务重新启动的情况下运行,跳过检查并记录该跳过。任何新的服务状态读取都不能永久排除托管运行。如果本机检查清理在截止日期前仍未完成,则完成情况仍未知。稍后的清理确认保留原始超时;清理失败在报告和警告日志中记录事实并命名失败。未知的清理永远不会成功。恢复前检查openclaw update status;重复诊断不会延长放弃计时器。
较旧的中断运行可能缺少该检查所需的目标构建标识。医生命名了废弃的运行并解释了为什么它无法解决它;仅匹配版本号是不够的。检查运行记录的步骤,并在需要恢复时使用 openclaw update repair。
传统到期形状之外的历史无身份行需要显式 update repair 或新的操作员启动的 openclaw update。旧的 requested 行本身并不能证明其更新程序已退出:2026.9.2 更新程序在记录其第一个暂存步骤之前仍然可以等待程序包管理器或注册表预检。在显式恢复其陈旧行之前停止未记录的旧更新程序。请参阅 数据库架构。
运行会记录服务停止请求中的 downtimeMs,直到验证网关正在运行。不包括分期、候选验证和预激活修复。验证记录包括服务 PID/port、version/build 身份、稳定运行状况、插件激活错误、通道准备情况和 /readyz。
通过从 2026.9.3 开始的事务更新程序,候选者的新流程在实时数据库迁移后完成验证,并将最终结果写入同一运行。它推进激活步骤;架构升级不会创建单独的报告或让旧的更新程序重新打开较新的数据库。
2026.9.2 更新程序保留其自己的完成路径。对于共享状态迁移,候选者应用架构内容,但延迟版本发布,直到每个受影响的终端运行至少五分钟,或者每个仍在运行的行在超过 30 分钟内保持不变。医生报告延期;新网关已使用迁移的内容并在截止日期后发布版本。挂起的代理数据库迁移、丢失的状态元数据和失败的内容迁移仍然会产生 update-schema-bump-unfenced 和 手动更新命令。请参阅 Database schemas 了解确切的发布规则以及停滞的旧 CLI 最终报告的剩余风险。