最后更新:2025-12-09 · 翻译自 docs.openclaw.ai
openclaw gateway。openclaw gateway --port 18789 # 完整的调试/跟踪日志输出到标准输出: openclaw gateway --port 18789 --verbose # 如果端口被占用,终止占用者然后启动: openclaw gateway --force # 开发循环(TS 更改时自动重载): pnpm gateway:watch
~/.openclaw/openclaw.json(或 OPENCLAW_CONFIG_PATH)。gateway.reload.mode="hybrid"(安全更改热应用,关键更改重启)。SIGUSR1 使用进程内重启。gateway.reload.mode="off" 禁用。127.0.0.1:<port>(默认 18789)。launchd/systemd 保持运行并轮转日志。--verbose 以在排故时将调试日志(握手、请求/响应、事件)从日志文件镜像到标准输出。--force 使用 lsof 查找所选端口上的监听器,发送 SIGTERM,记录它杀死了什么,然后启动 Gateway。gateway.auth.token(或 OPENCLAW_GATEWAY_TOKEN)或 gateway.auth.password。客户端必须发送 connect.params.auth.token/password。--port > OPENCLAW_GATEWAY_PORT > gateway.port > 默认 18789。ssh -N -L 18789:127.0.0.1:18789 user@host
ws://127.0.0.1:18789。connect.params.auth.token 中包含它。通常不需要:一个 Gateway 可以服务多个消息通道和 Agent。仅在需要冗余或严格隔离时才使用多个 Gateway(例如:救援机器人)。
如果你隔离状态 + 配置并使用唯一端口,则支持多实例。
快速路径:运行一个完全隔离的开发实例(配置/状态/工作区),而不影响你的主要设置。
openclaw --dev setup openclaw --dev gateway --allow-unconfigured # 然后定位到开发实例: openclaw --dev status openclaw --dev health
完整文档:Gateway 协议。
客户端发送的强制性第一帧:
req {type:"req", id, method:"connect", params:{
minProtocol, maxProtocol,
client:{id, displayName?, version, platform, deviceFamily?,
modelIdentifier?, mode, instanceId?},
caps, auth?, locale?, userAgent?
}}
Gateway 回复:
res {type:"res", id, ok:true, payload:hello-ok}
// 或 ok:false 加上错误信息,然后关闭
握手后:
{type:"req", id, method, params} → {type:"res", id, ok, payload|error}{type:"event", event, payload, seq?, stateVersion?}health — 完整的健康快照。status — 简短摘要。system-presence — 当前在线状态列表。system-event — 发布在线状态/系统通知(结构化)。send — 通过活动通道发送消息。agent — 运行一个 Agent 回合(在同一连接上流式传输事件)。node.list — 列出已配对 + 当前连接的节点。node.describe — 描述一个节点(能力 + 支持的命令)。node.invoke — 在节点上调用命令(例如 canvas.*、camera.*)。node.pair.* — 配对生命周期(请求、列出、批准、拒绝、验证)。agent — 来自 Agent 运行的流式工具/输出事件(带 seq 标签)。presence — 在线状态更新(带 stateVersion 的增量)推送到所有连接的客户端。tick — 定期保活/空操作,确认存活。shutdown — Gateway 正在退出;负载包含原因和可选的 restartExpectedMs。客户端应重新连接。错误使用 { code, message, details?, retryable?, retryAfterMs? } 结构。
标准代码:
NOT_LINKED — WhatsApp 未认证。AGENT_TIMEOUT — Agent 未在配置的截止时间内响应。INVALID_REQUEST — 模式/参数验证失败。UNAVAILABLE — Gateway 正在关闭或依赖项不可用。tick 事件(或 WS ping/pong)定期发出,以便客户端在没有流量时知道 Gateway 仍然活着。health + system-presence)。使用 Gateway CLI 进行安装/启动/停止/重启/状态查询:
openclaw gateway status openclaw gateway install openclaw gateway stop openclaw gateway restart openclaw logs --follow
注意事项:
gateway status 默认使用服务解析的端口/配置探测 Gateway RPC。gateway status --deep 添加系统级扫描。gateway status --no-probe 跳过 RPC 探测(网络中断时有用)。gateway status --json 对脚本稳定。logs 通过 RPC 跟踪 Gateway 文件日志(无需手动 tail/grep)。OpenClaw 在 Linux/WSL2 上默认安装一个 systemd 用户服务。我们推荐单用户机器使用用户服务(更简单的环境,每用户配置)。对于多用户或始终在线的服务器,使用系统服务。
[Unit] Description=OpenClaw Gateway (profile: <profile>, v<version>) After=network-online.target Wants=network-online.target [Service] ExecStart=/usr/local/bin/openclaw gateway --port 18789 Restart=always RestartSec=5 Environment=OPENCLAW_GATEWAY_TOKEN=<token> WorkingDirectory=/home/youruser [Install] WantedBy=default.target
启用持久化(必需,以便用户服务在注销/空闲后仍然存活):
sudo loginctl enable-linger youruser
req:connect → 期望收到带有 payload.type="hello-ok"(含快照)的 res。health → 期望 ok: true 并且 linkChannel 中有已链接的通道。tick 和 presence 事件。connect 第一帧或格式错误的 JSON 将被拒绝,套接字将被关闭。shutdown 事件;客户端必须处理关闭 + 重新连接。openclaw gateway health|status — 通过 Gateway WS 请求健康/状态。openclaw message send --target <id> --message "hi" — 通过 Gateway 发送(对 WhatsApp 幂等)。openclaw agent --message "hi" --to <id> — 运行一个 Agent 回合。openclaw gateway call <method> --params '{}' — 原始方法调用器,用于调试。openclaw gateway stop|restart — 停止/重启受监督的 Gateway 服务。