Skip to content
广告 · 本站推荐广告

RPC 适配器

RPC Adapter(远程过程调用适配器)是 OpenClaw Gateway 对外暴露的编程接口层。外部系统通过 RPC 协议与网关通信,实现消息发送、Agent 管理等操作。

协议概述

OpenClaw RPC 基于 HTTP + JSON 协议:

属性说明
传输协议HTTP/1.1 或 HTTP/2
数据格式JSON
默认端口18789
基础路径/rpc
认证方式Bearer Token

WebSocket 支持

对于需要实时推送的场景,RPC 也支持通过 WebSocket 通道进行双向通信。连接地址:ws://127.0.0.1:18789/rpc/ws

请求格式

json
{
  "jsonrpc": "2.0",
  "method": "agent.sendMessage",
  "params": {
    "agentName": "main",
    "channel": "web",
    "userId": "user-123",
    "message": "你好"
  },
  "id": "req-001"
}
字段类型说明
jsonrpcstring协议版本,固定 "2.0"
methodstring调用方法名
paramsobject方法参数
idstring请求唯一标识

响应格式

成功响应

json
{
  "jsonrpc": "2.0",
  "result": {
    "messageId": "msg-456",
    "status": "delivered"
  },
  "id": "req-001"
}

错误响应

json
{
  "jsonrpc": "2.0",
  "error": {
    "code": -32600,
    "message": "Invalid request",
    "data": { "detail": "Missing required field: agentName" }
  },
  "id": "req-001"
}

标准错误码

错误码含义
-32700Parse Error(JSON 解析失败)
-32600Invalid Request(无效请求)
-32601Method Not Found(方法不存在)
-32602Invalid Params(参数无效)
-32603Internal Error(内部错误)
-32000Authentication Error(认证失败)

可用 RPC 方法

Agent 管理

方法说明
agent.list列出所有 Agent
agent.status获取 Agent 状态
agent.reload重载 Agent 配置
agent.sendMessage向 Agent 发送消息

会话管理

方法说明
session.list列出会话
session.get获取会话详情
session.compact触发会话压缩
session.delete删除会话

系统管理

方法说明
system.health健康检查
system.info系统信息
system.reload重载全局配置
usage.stats用量统计

调用示例

bash
curl -X POST http://127.0.0.1:18789/rpc \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -d '{
    "jsonrpc": "2.0",
    "method": "agent.list",
    "params": {},
    "id": "1"
  }'
typescript
const response = await fetch('http://127.0.0.1:18789/rpc', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer YOUR_TOKEN'
  },
  body: JSON.stringify({
    jsonrpc: '2.0',
    method: 'agent.list',
    params: {},
    id: '1'
  })
})
const data = await response.json()
python
import requests

resp = requests.post(
    'http://127.0.0.1:18789/rpc',
    headers={'Authorization': 'Bearer YOUR_TOKEN'},
    json={
        'jsonrpc': '2.0',
        'method': 'agent.list',
        'params': {},
        'id': '1'
    }
)
print(resp.json())

身份认证

RPC 接口使用 Bearer Token 认证:

yaml
# openclaw.config.yaml
gateway:
  rpc:
    enabled: true
    auth:
      type: 'bearer'
      tokens:
        - name: 'admin'
          token: ${RPC_ADMIN_TOKEN}
          permissions: ['*']
        - name: 'readonly'
          token: ${RPC_READONLY_TOKEN}
          permissions: ['agent.list', 'session.list', 'system.health']

安全提示

生产环境中务必启用认证,不要暴露未认证的 RPC 端口到公网。

基于MIT协议开源 | 内容翻译自 官方文档,同步更新