本页是深度运行手册。如果你想先看快速分流流程,请从 /help/troubleshooting 开始。Documentation Index
Fetch the complete documentation index at: https://openclaw.zhcndoc.com/llms.txt
Use this file to discover all available pages before exploring further.
命令阶梯
首先按以下顺序运行:openclaw gateway status显示Runtime: running、Connectivity probe: ok,以及一行Capability: ...。openclaw doctor报告没有阻塞性的配置/服务问题。openclaw channels status --probe显示每个账户的实时传输状态,并在支持时显示探测/审计结果,例如works或audit ok。
分裂脑安装与较新配置保护
当网关服务在更新后意外停止,或者日志显示某个openclaw 二进制版本比最后写入 openclaw.json 的版本更旧时,使用此项。
OpenClaw 会用 meta.lastTouchedVersion 给配置写入打上标记。只读命令仍然可以检查由较新 OpenClaw 写入的配置,但进程和服务变更会拒绝从较旧的二进制继续执行。被阻止的操作包括网关服务的启动、停止、重启、卸载、强制服务重装、服务模式网关启动,以及 gateway --force 端口清理。
Anthropic 429 长上下文需要额外使用量
当日志/错误包含HTTP 429: rate_limit_error: Extra usage is required for long context requests 时使用此项。
- 选中的 Anthropic Opus/Sonnet 模型具有
params.context1m: true。 - 当前 Anthropic 凭据不具备长上下文使用资格。
- 只有在需要 1M beta 路径的长会话/模型运行中请求才会失败。
相关:
本地 OpenAI 兼容后端通过直接探测但代理运行失败
当以下情况出现时使用此项:curl ... /v1/models可用- 很小的直接
/v1/chat/completions调用可用 - OpenClaw 模型运行只在正常代理轮次中失败
- 直接的小请求成功,但 OpenClaw 运行只在更大的提示词上失败
- 即使直接
/v1/chat/completions使用相同的裸 model id 也可工作,仍出现model_not_found或 404 错误 - 后端关于
messages[].content期望字符串的错误 - 带有 OpenAI 兼容本地后端时,偶发的
incomplete turn detected ... stopReason=stop payloads=0警告 - 仅在更大的提示词 token 数或完整代理运行时提示词下才出现的后端崩溃
常见特征
常见特征
- 使用本地 MLX/vLLM 风格服务器时出现
model_not_found→ 确认baseUrl包含/v1,api对于/v1/chat/completions后端应为"openai-completions",并且models.providers.<provider>.models[].id是裸的 provider 本地 id。先带 provider 前缀选择一次,例如mlx/mlx-community/Qwen3-30B-A3B-6bit;目录条目保持为mlx-community/Qwen3-30B-A3B-6bit。 messages[...].content: invalid type: sequence, expected a string→ 后端拒绝结构化 Chat Completions 内容部分。修复:设置models.providers.<provider>.models[].compat.requiresStringContent: true。incomplete turn detected ... stopReason=stop payloads=0→ 后端完成了 Chat Completions 请求,但该轮没有返回用户可见的助手文本。OpenClaw 会对可重放的空 OpenAI 兼容轮次重试一次;持续失败通常意味着后端正在发出空的/非文本内容,或抑制了最终回答文本。- 直接的小请求成功,但 OpenClaw 代理运行在后端内部失败(例如某些
inferrs构建上的 Gemma)→ OpenClaw 传输大概率已经正确;后端在更大的代理运行时提示词形状上失败。 - 关闭工具后失败有所减少但没有消失 → 工具 schema 造成了一部分压力,但剩余问题仍然是上游模型/服务器容量或后端 bug。
修复选项
修复选项
- 对仅支持字符串的 Chat Completions 后端设置
compat.requiresStringContent: true。 - 对无法可靠处理 OpenClaw 工具 schema 表面的模型/后端设置
compat.supportsTools: false。 - 在可能的情况下降低提示词压力:更小的工作区引导、更短的会话历史、更轻量的本地模型,或使用对长上下文支持更强的后端。
- 如果小的直接请求持续通过,而 OpenClaw 代理轮次仍在后端内部崩溃,则应将其视为上游服务器/模型限制,并在可接受的 payload 形状基础上向对方提交复现问题。
没有回复
如果通道已启动但没有任何回应,请先检查路由和策略,再去重连任何东西。- DM 发送者处于待配对状态。
- 群组提及门控(
requireMention、mentionPatterns)。 - 通道/群组允许列表不匹配。
drop guild message (mention required→ 群组消息在被提及之前会被忽略。pairing request→ 发送者需要审批。blocked/allowlist→ 发送者/通道被策略过滤。
仪表板控制 UI 连接
当仪表板/控制 UI 无法连接时,请验证 URL、认证模式和安全上下文假设。- 正确的探测 URL 和仪表板 URL。
- 客户端与网关之间的认证模式/令牌不匹配。
- 需要设备身份时却使用了 HTTP。
连接 / 认证特征
连接 / 认证特征
认证详情代码速查表
使用失败的connect 响应中的 error.details.code 来选择下一步操作:
| 详情代码 | 含义 | 建议操作 |
|---|---|---|
AUTH_TOKEN_MISSING | 客户端没有发送必需的共享 token。 | 在客户端中粘贴/设置 token,然后重试。对于仪表板路径:先运行 openclaw config get gateway.auth.token,然后将其粘贴到 Control UI 设置中。 |
AUTH_TOKEN_MISMATCH | 共享 token 与网关认证 token 不匹配。 | 如果 canRetryWithDeviceToken=true,允许进行一次受信任重试。缓存 token 重试会复用已存储的已批准作用域;显式 deviceToken / scopes 调用方保留其请求的作用域。如果仍然失败,请运行 token 漂移恢复检查清单。 |
AUTH_DEVICE_TOKEN_MISMATCH | 缓存的每设备 token 已过期或已撤销。 | 使用 devices CLI 轮换/重新批准设备 token,然后重新连接。 |
PAIRING_REQUIRED | 设备身份需要批准。检查 error.details.reason 是否为 not-paired、scope-upgrade、role-upgrade 或 metadata-upgrade,并在存在时使用 requestId / remediationHint。 | 批准待处理请求:先 openclaw devices list,然后 openclaw devices approve <requestId>。作用域/角色升级在你查看所请求访问后使用相同流程。 |
使用共享网关 token/password 进行认证的直接 loopback 后端 RPC 不应依赖 CLI 的已配对设备作用域基线。如果子代理或其他内部调用仍然以
scope-upgrade 失败,请确认调用方使用的是 client.id: "gateway-client" 和 client.mode: "backend",并且没有强制显式 deviceIdentity 或设备 token。
如果
openclaw devices rotate / revoke / remove 被意外拒绝:
- 已配对设备 token 会话只能管理 它们自己的 设备,除非调用方还具有
operator.admin openclaw devices rotate --scope ...只能请求调用方会话已经持有的操作员作用域
- 配置(网关认证模式)
- Control UI
- 设备
- 远程访问
- 受信任代理认证
Gateway 服务未运行
当服务已安装但进程无法保持运行时使用此项。Runtime: stopped并带有退出提示。- 服务配置不匹配(
Config (cli)vsConfig (service))。 - 端口/监听冲突。
- 使用
--deep时额外的 launchd/systemd/schtasks 安装。 Other gateway-like services detected (best effort)的清理提示。
常见特征
常见特征
Gateway start blocked: set gateway.mode=local或existing config is missing gateway.mode→ 未启用本地 gateway 模式,或者配置文件被覆盖并丢失了gateway.mode。修复方法:在配置中设置gateway.mode="local",或者重新运行openclaw onboard --mode local/openclaw setup以重新写入预期的本地模式配置。如果你通过 Podman 运行 OpenClaw,默认配置路径是~/.openclaw/openclaw.json。refusing to bind gateway ... without auth→ 在没有有效 gateway 认证路径(token/password,或已配置的 trusted-proxy)的情况下进行非 loopback 绑定。another gateway instance is already listening/EADDRINUSE→ 端口冲突。Other gateway-like services detected (best effort)→ 存在陈旧或并行的 launchd/systemd/schtasks 单元。大多数部署应保持每台机器仅一个 gateway;如果确实需要多个,请隔离端口 + 配置/状态/工作区。参见 /gateway#multiple-gateways-same-host。- 来自 doctor 的
System-level OpenClaw gateway service detected→ 存在系统级 systemd 单元,而用户级服务缺失。请在允许 doctor 安装用户服务之前移除或禁用重复项,或者如果系统单元才是预期的监管者,则设置OPENCLAW_SERVICE_REPAIR_POLICY=external。 Gateway service port does not match current gateway config→ 已安装的监督进程仍然固定在旧的--port。运行openclaw doctor --fix或openclaw gateway install --force,然后重启 gateway 服务。
Gateway 拒绝了无效配置
当 Gateway 启动失败并显示Invalid config,或者热重载日志显示它跳过了无效编辑时使用此项。
Invalid config at ...config reload skipped (invalid config): ...Config write rejected: ...- 活动配置旁带时间戳的
openclaw.json.rejected.*文件 - 如果
doctor --fix修复了损坏的直接编辑,则会在活动配置旁生成带时间戳的openclaw.json.clobbered.*文件
发生了什么
发生了什么
- 配置在启动、热重载或 OpenClaw 所有写入过程中未能通过验证。
- Gateway 启动会直接失败,而不是重写
openclaw.json。 - 热重载会跳过无效的外部编辑,并保持当前运行时配置有效。
- OpenClaw 所有的写入会在提交前拒绝无效/破坏性负载,并保存
.rejected.*。 openclaw doctor --fix负责修复。它可以移除非 JSON 前缀,或在保留被拒绝负载为.clobbered.*的同时恢复最后已知良好副本。
检查并修复
检查并修复
常见签名
常见签名
.clobbered.*存在 → doctor 在修复活动配置时保留了一个损坏的外部编辑。.rejected.*存在 → 一个 OpenClaw 所有的配置写入在提交前因 schema 或 clobber 检查失败。Config write rejected:→ 该写入试图删除必需结构、显著缩小文件,或持久化无效配置。config reload skipped (invalid config):→ 一次直接编辑未通过验证,被正在运行的 Gateway 忽略。Invalid config at ...→ Gateway 服务启动前就已失败。missing-meta-vs-last-good、gateway-mode-missing-vs-last-good或size-drop-vs-last-good:*→ 一个 OpenClaw 所有的写入因相较于最后已知良好备份丢失了字段或体积而被拒绝。Config last-known-good promotion skipped→ 候选配置包含被脱敏的秘密占位符,例如***。
修复选项
修复选项
- 运行
openclaw doctor --fix,让 doctor 修复带前缀/被 clobber 的配置,或恢复最后已知良好版本。 - 只从
.clobbered.*或.rejected.*中复制你想保留的键,然后使用openclaw config set或config.patch应用它们。 - 重启前先运行
openclaw config validate。 - 如果你手动编辑,请保留完整的 JSON5 配置,而不是只保留你想修改的部分对象。
Gateway 探测警告
当openclaw gateway probe 能连到某个目标,但仍然输出警告块时使用此项。
- JSON 输出中的
warnings[].code和primaryTargetId。 - 警告是否与 SSH 回退、多 gateway、缺失 scopes,或未解析的 auth 引用有关。
SSH tunnel failed to start; falling back to direct probes.→ SSH 设置失败,但命令仍尝试直接探测已配置/loopback 目标。multiple reachable gateways detected→ 有多个目标响应。这通常意味着有意配置了多 gateway,或者存在陈旧/重复监听器。Read-probe diagnostics are limited by gateway scopes (missing operator.read)→ 连接成功,但详细 RPC 受 scope 限制;请配对设备身份或使用包含operator.read的凭据。Gateway accepted the WebSocket connection, but follow-up read diagnostics failed→ 连接成功,但完整的诊断 RPC 集超时或失败。将其视为可达但诊断降级的 Gateway;在--json输出中对比connect.ok和connect.rpcOk。Capability: pairing-pending或gateway closed (1008): pairing required→ gateway 已响应,但此客户端在获得正常操作员访问权限前仍需配对/批准。- 未解析的
gateway.auth.*/gateway.remote.*SecretRef 警告文本 → 在此次命令路径中,失败目标的认证材料不可用。
通道已连接,但消息未流动
如果通道状态显示已连接但消息流停滞,请重点检查策略、权限和通道特定的投递规则。- DM 策略(
pairing、allowlist、open、disabled)。 - 群组 allowlist 和提及要求。
- 缺失的通道 API 权限/scopes。
mention required→ 消息因群组提及策略而被忽略。pairing/ 待批准跟踪信息 → 发送方未获批准。missing_scope、not_in_channel、Forbidden、401/403→ 通道认证/权限问题。
Cron 和 heartbeat 投递
如果 cron 或 heartbeat 未运行或未投递,先验证调度器状态,再检查投递目标。- 已启用 cron 且存在下一次唤醒。
- 作业运行历史状态(
ok、skipped、error)。 - Heartbeat 跳过原因(
quiet-hours、requests-in-flight、cron-in-progress、lanes-busy、alerts-disabled、empty-heartbeat-file、no-tasks-due)。
常见特征
常见特征
cron: scheduler disabled; jobs will not run automatically→ cron 已禁用。cron: timer tick failed→ 调度器 tick 失败;检查文件/日志/运行时错误。heartbeat skipped且reason=quiet-hours→ 不在活跃时段窗口内。heartbeat skipped且reason=empty-heartbeat-file→HEARTBEAT.md存在,但只包含空行 / markdown 标题,因此 OpenClaw 会跳过模型调用。heartbeat skipped且reason=no-tasks-due→HEARTBEAT.md包含tasks:区块,但此刻没有任何任务到期。heartbeat: unknown accountId→ 用于 heartbeat 投递目标的 account id 无效。heartbeat skipped且reason=dm-blocked→ heartbeat 目标被解析为 DM 风格目的地,而agents.defaults.heartbeat.directPolicy(或按 agent 的覆盖项)设置为block。
节点已配对,但工具失败
如果节点已配对但工具失败,请分别检查前台、权限和批准状态。- 节点在线且具备预期能力。
- 摄像头/麦克风/位置/屏幕的操作系统权限授予。
- 执行批准和 allowlist 状态。
NODE_BACKGROUND_UNAVAILABLE→ 节点应用必须在前台运行。*_PERMISSION_REQUIRED/LOCATION_PERMISSION_REQUIRED→ 缺少操作系统权限。SYSTEM_RUN_DENIED: approval required→ 执行批准待处理。SYSTEM_RUN_DENIED: allowlist miss→ 命令被 allowlist 阻止。
浏览器工具失败
当浏览器工具动作失败,而网关本身仍然正常时使用此项。plugins.allow是否已设置并包含browser。- 浏览器可执行文件路径是否有效。
- CDP 配置文件是否可达。
existing-session/user配置文件的本地 Chrome 是否可用。
Plugin / executable signatures
Plugin / executable signatures
unknown command "browser"orunknown command 'browser'→ bundled browser plugin is excluded byplugins.allow。- browser tool missing / unavailable while
browser.enabled=true→plugins.allowexcludesbrowser,so the plugin never loaded. Failed to start Chrome CDP on port→ browser process failed to launch.browser.executablePath not found→ configured path is invalid.browser.cdpUrl must be http(s) or ws(s)→ configured CDP URL uses an unsupported scheme such asfile:orftp:.browser.cdpUrl has invalid port→ configured CDP URL has a bad or out-of-range port.Playwright is not available in this gateway build; '<feature>' is unsupported.→ 当前 gateway 安装缺少核心浏览器运行时依赖;请重新安装或更新 OpenClaw,然后重启 gateway。ARIA 快照和基础页面截图仍可正常工作,但导航、AI 快照、CSS 选择器元素截图和 PDF 导出将不可用。
Chrome MCP / existing-session 签名
Chrome MCP / existing-session 签名
Could not find DevToolsActivePort for chrome→ Chrome MCP existing-session 还无法附加到所选的浏览器数据目录。打开浏览器检查页面,启用远程调试,保持浏览器开启,确认首次附加提示,然后重试。如果不需要登录状态,优先使用受管理的openclaw配置文件。No Chrome tabs found for profile="user"→ Chrome MCP 附加配置文件没有打开的本地 Chrome 标签页。Remote CDP for profile "<name>" is not reachable→ 配置的远程 CDP 端点从网关主机无法访问。Browser attachOnly is enabled ... not reachable或Browser attachOnly is enabled and CDP websocket ... is not reachable→ 仅附加配置文件没有可达目标,或者 HTTP 端点已响应,但 CDP WebSocket 仍无法打开。
元素 / 截图 / 上传签名
元素 / 截图 / 上传签名
fullPage is not supported for element screenshots→ 截图请求将--full-page与--ref或--element混用了。element screenshots are not supported for existing-session profiles; use ref from snapshot.→ Chrome MCP /existing-session截图调用必须使用页面捕获或快照--ref,不能使用 CSS--element。existing-session file uploads do not support element selectors; use ref/inputRef.→ Chrome MCP 上传钩子需要快照引用,而不是 CSS 选择器。existing-session file uploads currently support one file at a time.→ 在 Chrome MCP 配置文件上每次调用只发送一个上传文件。existing-session dialog handling does not support timeoutMs.→ Chrome MCP 配置文件上的对话框钩子不支持超时覆盖。existing-session type does not support timeoutMs overrides.→ 在profile="user"/ Chrome MCP existing-session 配置文件上为act:type省略timeoutMs,或者在需要自定义超时时使用受管理/CDP 浏览器配置文件。existing-session evaluate does not support timeoutMs overrides.→ 在profile="user"/ Chrome MCP existing-session 配置文件上为act:evaluate省略timeoutMs,或者在需要自定义超时时使用受管理/CDP 浏览器配置文件。response body is not supported for existing-session profiles yet.→responsebody仍然需要受管理浏览器或原始 CDP 配置文件。- attach-only 或远程 CDP 配置文件上的陈旧视口 / 深色模式 / 区域设置 / 离线覆盖 → 运行
openclaw browser stop --browser-profile <name>关闭当前控制会话,并释放 Playwright/CDP 模拟状态,而无需重启整个网关。
If something suddenly broke after you upgraded
Most upgrade-time breakages are caused by configuration drift or stricter defaults being enforced now.1. Authentication and URL override behavior changed
1. Authentication and URL override behavior changed
- If
gateway.mode=remote, CLI calls may be pointing to the remote while your local service is actually healthy. - Explicit
--urlcalls do not fall back to saved credentials.
gateway connect failed:→ wrong target URL.unauthorized→ the endpoint is reachable, but authentication is wrong.
2. Binding and auth guardrails are stricter now
2. Binding and auth guardrails are stricter now
- Non-loopback binds (
lan,tailnet,custom) require a valid gateway auth path: shared-token/password auth, or a properly configured non-loopbacktrusted-proxydeployment. - Older keys like
gateway.tokendo not substitute forgateway.auth.token.
refusing to bind gateway ... without auth→ non-loopback bind, but no valid gateway auth path.Connectivity probe: failedand the runtime is running → the gateway is up, but unreachable with the current auth/URL.
3. Pairing and device identity state changed
3. Pairing and device identity state changed
- Whether the dashboard/node has pending device approvals.
- Whether there are pending DM pairing approvals after policy or identity changes.
device identity required→ device authentication is not satisfied.pairing required→ the sender/device must be approved first.