关于 npm 软件包、设备配对、重连恢复、历史记录、订阅
和审批,请先阅读
构建 Gateway 客户端。如果你的
应用将 Gateway 网关作为子进程监管,还应阅读
嵌入 OpenClaw。在
软件包初始发布期间,npm 可能会返回
E404,直到首个包含该软件包的
OpenClaw 版本发布。本页面适用于 OpenClaw 进程之外的代码。在 OpenClaw
内部运行的插件代码应改用已记录的
openclaw/plugin-sdk/* 子路径。当前可用功能
推荐路径
- 运行或发现 Gateway 网关。
- 通过 Gateway 网关协议连接。
- 调用 Gateway RPC 参考中记录的 RPC 方法。
- 固定你测试所针对的 OpenClaw 版本。
- 升级 OpenClaw 时重新查看 RPC 参考。
agent RPC 开始,并将其与 agent.wait 配合使用,以获取
终态结果。对于持久的对话状态,请使用 sessions.* 方法。
对于 UI 集成,请订阅 Gateway 网关事件,并且只呈现应用
能够理解的事件系列。
协作式主机挂起
冻结正在运行的进程或为其创建快照的托管控制器可以使用 与主机无关的挂起握手:- 停止接收由主机控制的外部入口流量。
- 使用稳定且唯一的
requestId调用gateway.suspend.prepare。 - 如果响应为
busy,请保持进程运行并稍后重试。 - 如果响应为
ready,请保存返回的suspensionId,然后在expiresAtMs之前冻结进程或为其创建快照。 - 解冻后,或者放弃挂起时,通过现有 WebSocket 或 Admin HTTP 控制
路径,使用该
suspensionId调用gateway.suspend.resume。
gateway.suspend.prepare—operator.admin;参数{ "requestId": "stable-host-operation-id" }gateway.suspend.status—operator.read;参数{ "suspensionId": "id-from-prepare" }gateway.suspend.resume—operator.admin;参数{ "suspensionId": "id-from-prepare" }
status: "busy"、reason、
retryAfterMs、activeCount 和 blockers。就绪结果具有以下结构:
{"status":"running"},或包含 expiresAtMs 的就绪结果。
恢复返回 {"ok":true,"status":"running","resumed":true};成功恢复后
重复调用会返回 resumed: false。
相互冲突的请求 ID 或暂时性的调度器恢复失败会返回可重试的
UNAVAILABLE,其中包含 retryAfterMs。在调度器恢复期间,准备、状态
和恢复都会返回该错误,Gateway 网关保持未就绪并以故障关闭方式运行,
主机不得冻结它或为其创建快照。OpenClaw 会自动重试
调度器,并且只有在恢复成功后才会重新开放接入。
不匹配的恢复 ID 会返回 INVALID_REQUEST。准备操作与 Gateway 网关共享
每分钟三次尝试的控制平面写入预算;请遵守返回的
重试延迟。WebSocket 客户端按设备和 IP 分桶。Admin HTTP
控制器按解析出的客户端 IP 分桶,因此位于同一
代理后方的控制器可能共享一个预算。
准备操作仅会拒绝新工作:OpenClaw 关闭新的根级/会话/命令接入,
暂停自动定时任务触发,并同步检查工作。如果存在任何
活动工作,它会先恢复调度器并重新开放接入,然后再返回
busy;它不会中断或排空该工作。就绪租约持续两
分钟。使用相同的 requestId 重复调用 prepare 会续订租约;租约到期时,
系统会先恢复调度器,再重新开放接入。
在就绪租约期间到期应发出的重启会等待租约
恢复;正在进行的重启会使准备操作返回 busy。
处于就绪状态时,/healthz 仍保持可用,/readyz 返回 503。本地或
已通过身份验证的就绪响应包含 gateway-draining;未经身份验证的
远程探测仅会收到 { "ready": false }。HTTP 健康探测、
现有 WebSocket 连接上的挂起方法,以及已启用的
Admin HTTP RPC 路由仍然可用。其他 RPC 返回可重试的
UNAVAILABLE。内置 HTTP 用户工作路由和普通插件 HTTP 路由,
包括与 OpenAI 兼容的 API、工具/会话操作、节点监视和
已配置的 Hooks,会返回包含 error.code: "gateway_unavailable" 的 503。新的
插件所有的 WebSocket 升级也会返回 503;这涵盖升级
所有权,而不涵盖稍后通过已建立的插件套接字执行的工作。
此握手不会持久化传入消息、停止第三方渠道
传输,也不会控制托管平台。主机必须在准备前隔离其入口
流量,并继续负责唤醒、创建快照/冻结和
停止。activeCount 是聚合后的受跟踪工作计数,而 blockers
包含非零类别计数和有界任务详情。这不是
通用的进程静止屏障。background-exec 阻塞项仅提供聚合信息:
命令文本、进程 ID、输出以及会话或权限范围标识符绝不会
通过协议传输。渠道健康检查、维护、缓存刷新、已建立的
插件 WebSocket 会话,以及未注册且归插件所有的后台工作可以
继续保持活动状态。
托管平台必须以一致方式冻结整个进程树及其
文件系统或为其创建快照;此初始合约无法证明未注册的工作
处于空闲状态。
应用代码与插件代码
当代码位于 OpenClaw 外部时,使用 Gateway 网关 RPC:- 启动或观察智能体运行的 Node 脚本
- 调用 Gateway 网关的 CI 作业
- 仪表板和管理面板
- IDE 扩展
- 无需成为渠道插件的外部桥接器
- 使用模拟或真实 Gateway 网关传输的集成测试
- 提供商插件
- 渠道插件
- 工具或生命周期 Hooks
- Agent harness plugins
- 受信任的运行时辅助程序
openclaw/plugin-sdk/*;这些子路径供
OpenClaw 加载的插件使用。