Skip to main content
在 Gateway 服务的首日启动和次日运维中使用本页。

深度故障排查

以症状为先的诊断,包含精确的命令梯子和日志特征。

配置

面向任务的设置指南 + 完整配置参考。

密钥管理

SecretRef 契约、运行时快照行为,以及迁移/重载操作。

密钥计划契约

secrets apply 的精确目标/路径规则,以及仅引用 auth-profile 的行为。

5 分钟本地启动

1

启动 Gateway

2

验证服务健康状态

健康基线:Runtime: runningConnectivity probe: ok,以及一行符合预期的 Capability。如果要证明读权限范围内的 RPC,而不只是连通性,请使用 openclaw gateway status --require-rpc
3

验证通道就绪状态

在网关可达时,这会针对每个账户运行实时通道探测以及可选审计。如果网关不可达,CLI 会回退为仅基于配置的通道摘要。
网关配置重载会监视当前活动配置文件路径(从 profile/state 默认值解析而来,或在设置了 OPENCLAW_CONFIG_PATH 时使用该路径)。默认模式是 gateway.reload.mode="hybrid"。在首次成功加载后,运行中的进程会提供当前的内存中配置快照;一次成功的重载会原子性地替换该快照。

运行模型

  • 一个始终运行的进程,用于路由、控制平面和通道连接。
  • 单一复用端口用于:
    • WebSocket 控制/RPC
    • HTTP API(/v1/models/v1/embeddings/v1/chat/completions/v1/responses/tools/invoke
    • 插件 HTTP 路由,例如可选的 /api/v1/admin/rpc
    • 控制界面和 hooks
  • 默认绑定模式:loopback。在检测到容器环境时,实际默认值为 auto(会解析为 0.0.0.0,用于端口转发),除非 Tailscale serve/funnel 处于活动状态,此时始终强制为 loopback
  • 默认需要认证。共享密钥配置使用 gateway.auth.token / gateway.auth.password(或 OPENCLAW_GATEWAY_TOKEN / OPENCLAW_GATEWAY_PASSWORD),非 loopback 的反向代理配置可以使用 gateway.auth.mode: "trusted-proxy"

OpenAI 兼容端点

OpenClaw 的最高杠杆兼容性接触面:
  • GET /v1/models
  • GET /v1/models/{id}
  • POST /v1/embeddings
  • POST /v1/chat/completions
  • POST /v1/responses
这个集合的重要性在于:
  • 大多数 Open WebUI、LobeChat 和 LibreChat 集成会首先探测 /v1/models
  • 许多 RAG 和 memory 流水线期望有 /v1/embeddings
  • 原生 agent 客户端越来越倾向于 /v1/responses
/v1/models 采用 agent 优先模式:它会为每个已配置的 agent 返回 openclawopenclaw/defaultopenclaw/<agentId>openclaw/default 是稳定别名,始终映射到已配置的默认 agent。需要后端 provider/model 覆盖时,请发送 x-openclaw-model;否则,所选 agent 的常规模型和 embedding 配置将保持控制权。 所有这些端点都运行在主 Gateway 端口上,并使用与 Gateway 其余 HTTP API 相同的受信操作员认证边界。 Admin HTTP RPC (POST /api/v1/admin/rpc) 是一个独立的、默认关闭的插件路由,供无法使用 WebSocket RPC 的主机工具使用。请参见 Admin HTTP RPC

端口和绑定优先级

已安装的 gateway 服务会在 supervisor 元数据中记录解析后的 --port。更改 gateway.port 后,请运行 openclaw doctor --fixopenclaw gateway install --force,以便 launchd/systemd/schtasks 在新端口上启动进程。 Gateway 启动时使用相同的实际端口和绑定方式,并在为非 loopback 绑定播种本地 Control UI origins 时采用这些设置。例如,--bind lan --port 3000 会在运行时验证之前先播种 http://localhost:3000http://127.0.0.1:3000。请将任何远程浏览器 origins,例如 HTTPS 代理 URL,显式添加到 gateway.controlUi.allowedOrigins

热重载模式

早期的 hotrestart 模式已弃用;openclaw doctor --fix 会将两者都映射为 hybrid

操作员命令集

gateway status --deep 用于额外的服务发现(LaunchDaemons/systemd 系统单元/schtasks),而不是更深入的 RPC 健康探测。

多个 gateway(同一主机)

大多数安装应当每台机器只运行一个 gateway。单个 gateway 可以承载多个 agent 和 channel。只有在你有意需要隔离,或者需要一个救援 bot 时,才需要多个 gateway。 有用的检查:
预期结果:
  • gateway status --deep 可以报告 Other gateway-like services detected (best effort),并在仍存在陈旧的 launchd/systemd/schtasks 安装时打印清理提示。
  • gateway probe 在检测到不同的 gateway 响应,或者 OpenClaw 无法证明可达目标是同一个 gateway 时,可能会警告 multiple reachable gateway identities。SSH 隧道、代理 URL,或指向同一个 gateway 的已配置远程 URL,即使传输端口不同,也仍然算作一个 gateway 的多种传输方式。
  • 如果这是有意为之,请为每个 gateway 分别隔离端口、配置/状态以及工作区根目录。
每个实例的检查清单:
  • 唯一的 gateway.port
  • 唯一的 OPENCLAW_CONFIG_PATH
  • 唯一的 OPENCLAW_STATE_DIR
  • 唯一的 agents.defaults.workspace
示例:
详细设置:/gateway/multiple-gateways

远程访问

首选:Tailscale/VPN。
备选:SSH 隧道。
然后在本地将客户端连接到 ws://127.0.0.1:18789
SSH 隧道不会绕过 gateway 认证。对于共享密钥认证,即使通过隧道,客户端仍然必须发送 token/password。对于带身份的模式,请求仍然必须满足该认证路径。
参见:远程 Gateway认证Tailscale

监督与服务生命周期

生产级可靠性请使用受监督运行。
使用 openclaw gateway restart 进行重启。不要将 openclaw gateway stopopenclaw gateway start 串联起来代替重启。在 macOS 上,gateway stop 默认使用 launchctl bootout。这会将 LaunchAgent 从当前启动会话中移除,但不会持久化禁用,因此在意外崩溃后仍可通过 KeepAlive 自动恢复,并且 gateway start 会干净地重新启用。若要在重启后持续抑制自动重启,请传入 --disableopenclaw gateway stop --disableLaunchAgent 标签为 ai.openclaw.gateway(默认)或 ai.openclaw.<profile>(命名 profile)。openclaw doctor 会审计并修复服务配置漂移。

已存在的系统 LaunchDaemon

OpenClaw 会安装并管理每用户的 LaunchAgent,但不会安装或管理系统 LaunchDaemon。如果自定义 LaunchDaemon 已经使用相同的网关标签,OpenClaw 将拒绝写入、启动、重启或修复用户 LaunchAgent,因为两个 KeepAlive 管理器可能会反复重启同一个网关。所有权检查会读取 launchctl print system/<label>,同时检查 /Library/LaunchDaemons 下已安装的 plist。当无法验证系统所有权时,检查将采取默认拒绝策略,并且 --force 也无法绕过。openclaw gateway status 会报告已加载的同标签系统任务;添加 --deep 可扫描已安装的系统服务文件。在重试前,请选择一个生命周期所有者:
  • 若要保留自定义系统 LaunchDaemon,请移除任何冲突的用户 LaunchAgent,并在运行 Doctor 时设置 OPENCLAW_SERVICE_REPAIR_POLICY=external,使其在服务生命周期方面仅执行诊断。
  • 若要恢复到受支持的用户 LaunchAgent,请使用 sudo launchctl bootout system/<label> 卸载系统任务,移除或迁移其实际 plist,以目标用户身份登录 macOS 桌面,然后运行 openclaw gateway install
对于默认 profile,<label>ai.openclaw.gateway。命名 profile 使用 ai.openclaw.<profile>
无效配置错误会以代码 78 退出。Linux systemd unit 使用 RestartPreventExitStatus=78,在配置修复之前停止重新启动。launchd 和 Windows 任务计划程序没有按退出代码停止的等效规则,因此 Gateway 还会持久化快速且不干净的启动历史,并在多次启动失败后抑制渠道/提供商账户的自动启动。在该安全模式下,控制平面仍会启动,以便进行检查和修复;配置热重载和 secrets.reload 会拒绝自动重启渠道,而操作员明确发起的 channels.start 请求可以覆盖这一抑制。分步恢复说明请参阅重启恢复

开发者配置快速路径

默认包含隔离的状态/配置以及基础 gateway 端口 19001

协议快速参考(操作员视图)

  • 首个客户端帧必须是 connect
  • 网关返回一个带有 snapshotpresencehealthstateVersionuptimeMs)以及 policy 限制(maxPayloadmaxBufferedBytestickIntervalMs)的 hello-ok 帧。
  • hello-ok.features.methods / events 是保守的发现列表,不是 所有可调用辅助路由的生成式转储。
  • 请求:req(method, params)res(ok/payload|error)
  • 常见事件包括 connect.challengeagentchatsession.messagesession.operationsession.tool、可选的 session.approvalsessions.changedpresencetickhealthheartbeat、配对/审批生命周期事件,以及 shutdown
代理运行分为两个阶段:
  1. 立即返回已接受确认(status:"accepted"
  2. 最终完成响应(status:"ok"|"error"),中间会有流式的 agent 事件。
查看完整协议文档:网关协议

运行检查

存活性

  • 打开 WS 并发送 connect
  • 期望返回带快照的 hello-ok 响应。

就绪性

间隙恢复

事件不会重放。出现序列间隙时,在继续之前先刷新状态(healthsystem-presence)。

常见失败特征

如需完整诊断阶梯,请使用 网关故障排除

安全保障

  • 当 Gateway 不可用时,Gateway 协议客户端会快速失败(不隐式回退到 direct-channel)。
  • 非法/非 connect 的首帧会被拒绝并关闭。
  • 优雅关闭会在 socket 关闭前发出 shutdown 事件。

相关