跳转至

openclaw status

通道 + 会话的诊断。

任务计数和审计总计使用只读元数据摘要。保留的任务负载和投递历史不会为每个状态请求加载,重叠请求共享待处理摘要读取。数据库工作运行在共享 SQLite 工作进程上;实时任务所有权仍由 Gateway 检查。这些摘要不是完整的物理数据库完整性检查。完整注册表恢复和 Doctor 保留其完整性验证。

openclaw status
openclaw status --all
openclaw status --deep
openclaw status --usage
openclaw status --all --usage
openclaw status --usage --agent work
标志 描述
--all 完整诊断(只读,可粘贴)。包括安全审计、插件兼容性和内存向量探测。
--deep 请求通道健康状态(在支持的地方进行实时探测)。同时启用安全审计。
--usage 以 X% left 形式打印归一化的提供商用量窗口。
--agent <id> 为 --usage 选择代理身份验证/配置范围。当显式多代理集群没有默认值时必需。
--json 机器可读输出。
--timeout <ms> 探测超时时间(毫秒)(默认:60000)。
--verbose / --debug 在报告之前还打印原始 Gateway 目标解析。

状态命令在命令开始时启动一个单调的探测截止时间。本地就绪状态、Gateway 状态、提供商用量和深度健康检查会消耗剩余配额。远程目标和显式 Gateway URL 会跳过本地就绪检查,但保留相同的截止时间。本地探测在等待期间报告观察到的启动阶段。如果预算耗尽时 Gateway 仍在启动,状态命令会报告“仍在启动”而不是不可达,并跳过深度通道探测。JSON 保留状态报告,并添加 gateway.readiness: "still-starting" 和 gateway.startupPhase。显式 --timeout 会限制该共享配额。

当不存在匹配的 Gateway 服务或实时前台所有者,且其端口空闲时,状态命令会直接探测,而不是等待 Gateway 启动。因此,仅本地代理环境会及时报告 Gateway 不可用。观察到的启动迁移在移交到 Gateway 所有权期间保留启动宽限期;无法验证的所有权也保留该宽限期。锁和原生进程检查消耗相同的剩余探测配额。

没有探测的通道(例如 WhatsApp)会改为报告生命周期健康状态。在 Health 表中,healthy 为 OK;退化的生命周期状态和失败的探测仍为 WARN。生命周期 OK 并不意味着已运行实时探测。

--deep 还会询问正在运行的 Gateway,其仍持有的 Node 可执行文件是否可以启动。Homebrew 升级可能会删除该 Cellar 路径,而 LaunchAgent plist 仍指向有效符号链接,且 Gateway 端口保持可达。此时状态命令会发出警告:

Gateway runtime is stale after Node upgrade: child workers are using <path>, which no longer exists. Restart the Gateway.

该检查不会重启 Gateway。警告后请运行 openclaw gateway restart。

--deep 和 --all 还会显示死信消息和受压入站通道的投递队列警告。即使通道连接健康,这些警告也包括待处理、已认领和阻塞的消息计数。参见 队列警告。

普通 openclaw status 保持快速只读路径,在跳过内存检查时将内存标记为 not checked 而不是不可用。重量级安全审计、插件兼容性和内存向量探测留给 openclaw status --all、openclaw status --deep、openclaw security audit 和 openclaw memory status --deep。

本地代理所有权检查从一个一致的 SQLite 快照读取架构和所有者元数据,包括已提交的 WAL 更改。除非其日志状态需要私有恢复,否则不会复制整个代理数据库。启动和迁移就绪检查保留完整验证。

CLI 在单独进程中运行,并通过 WebSocket 联系 Gateway,即使是本地回环目标。--timeout 限制的是探测,而不是整个状态命令。冷设备 Token 工作进程初始化发生在请求准备期间,在 RPC 超时开始之前;连接 Token 读取保持新鲜。比较 openclaw gateway call status --json 与 openclaw status --json,可将 Gateway 响应与本地报告收集区分开。Gateway Prometheus RPC 计时 不包括 CLI 启动和连接设置;缓慢的 CLI 可以在没有缓慢 Gateway 处理程序的情况下完成。

当 Gateway 可达且已授权时,status --json 使用其状态投影,而不是在本地扫描每个代理的插件元数据和数据库所有权。Gateway 提供会话计数、心跳和任务状态、运行时关键指标以及代理名册事实。请求保留 operator.read 范围,包括其对会话路径、最近会话、模型默认值和详细准入拒绝的脱敏。在 Gateway 填充物理会话存储后,干净的重复状态读取会复用其常驻物化会话行;只有拓扑变更以及脏的或缺失的精确标识才会回退到现有的只读 SQLite 路径。

JSON collection.notCollected 列出未检查的字段并解释原因。在线状态将工作区和引导检查保留为未知,包括 agents.bootstrapPendingCount: null。它在未加载通道插件的情况下返回 channelSummary: [],并在 collection.notCollected 中记录 channelSummary。那里的空列表表示该字段未被收集,而不是没有配置通道。使用 openclaw channels status 查看已配置清单,或使用 openclaw channels status --probe 进行实时账户检查。在线状态会跳过本地配置验证、通道和内存凭据检查,以及通常由 --all 或 --deep 请求的本地插件检查。请求的安全审计和插件兼容性部分报告 collected: false;内存保持 null。使用 openclaw security audit、openclaw plugins inspect --all 或 openclaw memory status --deep 进行这些本地检查。--deep 仍会请求 Gateway 健康状态,--usage --agent <id> 保留其凭据范围。当 Gateway 不可用时,JSON 状态保留本地诊断。

对于 Git 安装,普通 status 会比较缓存的远程跟踪引用,而不执行网络获取。如果最近一次记录的更新获取失败,且之后没有更新运行记录一次已完成的获取,则 Update 行会显示 update check stale: last update fetch failed 5m ago (network error),而不是 up to date,并且 ahead/behind 计数会标记为 cached。JSON 会在 update.git.stale 下公开此信息(reason、failedAtMs、detail 和 runId),并将 update.git.countsCached 设置为 true。如果没有记录的获取失败,则通常的缓存比较保持不变。历史记录属于当前状态目录。之后完成获取的运行会清除该警告,即使该更新的其余部分被跳过、失败或回滚。手动执行 git fetch 不会清除已记录的警告。使用 openclaw update status 进行新的检查并查看最后一次更新运行,或再次运行 openclaw update。openclaw status --deep 也会为该检查执行获取;它不会更改 ledger。参见 发布渠道。

状态计时

使用现有的诊断时间线来定位 Gateway RPC 之外花费的时间:

OPENCLAW_DIAGNOSTICS=timeline \
OPENCLAW_DIAGNOSTICS_TIMELINE_PATH=/tmp/openclaw-status-timeline.jsonl \
  openclaw status --json

时间线包括配置和密钥解析、代理准入、本地会话读取、Gateway 探测以及摘要收集。持续时间包括等待时间;并行阶段会重叠,不应相加。

技能诊断

status --all 会报告 Skills 行中所示工作区的可用技能以及缺少前置条件的技能。缺少前置条件使用与 openclaw skills check 相同的分类:有意禁用的技能以及被捆绑允许列表阻止的技能会被排除;代理允许列表的排除项保持独立。未满足的操作系统要求会包含在此计数中,尽管 Doctor 不会因操作系统不兼容而禁用技能。使用 openclaw skills check --agent <id> 检查缺失的要求。

会话和模型解析

  • 会话状态输出将 Execution: 与 Runtime: 分开。Execution 是沙箱路径(direct、docker/*),而 Runtime 表示会话使用的是 OpenClaw Default、OpenAI Codex、CLI 后端,还是诸如 codex (acp/acpx) 之类的 ACP 后端。有关提供商/模型/运行时的区别,参见 代理运行时。
  • /status 聊天命令会显示 Endpoint:来自用于选择路由的同一已准备模型/身份验证决策的上游基础 URL。它描述的是当前选择,而不是之前的请求或计费归属。该 URL 是 API 基础地址;传输层在发送请求时会添加诸如 /responses 之类的操作路径。未解析出端点的路由会显示 unknown。显示的 URL 会省略用户信息、查询参数和片段;自定义路径会被隐藏。
  • 当当前会话快照信息较少时,/status 聊天命令(参见 斜杠命令)可以从最近的转录使用日志回填 token 和缓存计数器。已有的非零实时值仍优先于转录回退值。
  • 转录回退还可以在实时会话条目缺少活动运行时模型标签时恢复该标签。如果该转录模型与所选模型不同,status 会针对恢复的运行时模型而不是所选模型解析上下文窗口。
  • 对于提示大小核算,当会话元数据缺失或较小时,转录回退会优先选择较大的面向提示的总计值,因此自定义提供商会话不会收缩为 0 token 显示。
  • 当会话固定到与已配置主模型不同的模型时,status 会打印两个值、原因(session override)以及提示 /model default。已配置的主模型适用于新会话或未固定会话;现有固定会话会保留其会话选择,直到被清除。
  • 当配置了多个代理时,输出会包含每个代理的会话存储。
  • Fleet 状态在没有 System Agent 所有者时也能工作。待处理事件包括每个代理的主队列;共享全局队列只计算一次。--agent 仅为 --usage 选择凭据。

用量和配额

  • --usage 会以 X% left 形式打印归一化的提供商用量窗口。它还会向 --all 添加用量快照;--agent 保持相同的仅用量范围。用量探测会接收剩余的共享探测预算,并在设置 --timeout 时受其限制;超过该限制的提供商会在用量输出中报告 Timeout。预算耗尽时会报告 Timeout,而不会启动提供商身份验证或用量请求。超时会取消活动用量请求,并防止迟到的身份验证结果启动另一个请求;已完成的提供商快照仍可用。
  • 在显式多代理设置中,--usage 默认读取由 agents.defaults.systemAgent.agentId 拥有的身份验证配置文件。传入 --agent <id> 以检查另一个代理;如果没有任一所有者,OpenClaw 不会从模糊的名册中猜测某个代理的凭据。
  • MiniMax 的原始 usage_percent / usagePercent 字段是剩余配额,因此 OpenClaw 在显示前会将其反转;存在基于计数的字段时,这些字段优先。model_remains 响应优先选择聊天模型条目,必要时从时间戳派生窗口标签,并在计划标签中包含模型名称。
  • 模型定价刷新失败会显示为可选定价警告。它们并不意味着 Gateway 或通道不健康。

概览和更新状态

Gateway 服务行会将其已安装的包与活动 CLI 进行比较。如果它们解析到不同的安装,status 会列出两个包路径和版本。当允许服务安装时,它会建议 openclaw doctor --fix 或 openclaw gateway install --force;否则报告安装所有者的拒绝。即使 Gateway 连接失败(包括协议不匹配),此本地诊断仍可用。JSON 会将该比较公开为 gatewayService.installationDrift。如果本地会话状态需要 Doctor,status 会将任何安装漂移与原始错误一起打印到 stderr,并保留失败退出状态。

  • 会话 概览统计已存储的会话行,包括已归档的行。正在运行的轮次和最近活动与此清单分开。
  • 概览在可用时包括 Gateway + 节点主机服务的安装/运行时状态,以及简化的 Gateway 进程运行时间和主机系统运行时间。
  • status --all 在 Gateway 自身 中显示返回的主机、IP、版本和平台。仅当这些字段不可用时才使用 unknown。
  • 在 Linux 上,当服务管理器不可用时,可读的已安装节点服务仍会列出;其运行时状态保持未知。
  • 概览包括更新通道 + git SHA(用于源代码检出)。
  • 更新信息显示在概览中;如果有可用更新,status 会打印提示运行 openclaw update(参见 更新)。
  • status 和 status --all 在 更新 中保留当前可用性,并在 更新运行 中单独显示活动或最近的更新历史。除非它命名了相同的运行 ID,否则单独的 更新重启 报告仍会显示。
  • status --all 包括 遥测导出器 诊断,包含最新的受信任的按信号导出器状态和传输。端点值、请求头、证书、有效负载和原始错误不会显示。

密钥

  • 当正在运行的 Gateway 在启动、重新加载或配置写入时存在任何隔离的 SecretRef 所有者时,status 会在 JSON 中包含 degradedSecretOwners,并在人类可读输出中包含 降级密钥 概览行。每个条目会指明所有者、降级状态(cold 或 stale)、配置路径以及已脱敏的原因。Cold 所有者不可用;stale 所有者继续使用最后已知良好的值。
  • 只读 status 界面(status、status --json、status --all)在可能时为其目标配置路径解析受支持的 SecretRef。
  • 如果配置了受支持的通道 SecretRef,但在当前命令路径中不可用,status 保持只读并报告降级输出,而不是崩溃。人类可读输出会显示诸如“配置的 token 在此命令路径中不可用”之类的警告,JSON 输出包括 secretDiagnostics。
  • 当命令本地 SecretRef 解析成功时,status 优先使用已解析的快照,并从最终输出中清除瞬时的“secret 不可用”通道标记。
  • status --all 包括一个 Secrets 概览行和一个诊断部分,该部分总结密钥诊断信息(为可读性而截断),而不会停止报告生成。

内存

status --json --all 报告由 plugins.slots.memory 选中的活动内存插件运行时提供的内存详细信息。自定义内存插件可以保持内置的 memory.search.enabled 禁用,并仍然报告其自身的文件、块、向量和 FTS 状态。

本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 cl/openclaw