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协议开源 | 内容翻译自 官方文档,同步更新