Step 0
全局配置
Step 1
获取 accessToken
你的插件服务端用 appKey/appSecret 换取 accessToken。后续 Step 3 开启连接和 Step 6 reply 都要带这个 token。 accessToken 有有效期,参赛作品的服务端需要缓存它,并在过期前刷新;日志里只记录是否成功和过期时间,不要输出 token 明文。
本步骤运行日志
{}
Step 2
设备绑定并保存 agentId
首次接入时不要手动猜 agentId。请用平台登录后的 Authorization 调用设备绑定接口,把响应里的 data 保存为 agentId。 后续收到 INIT_AGENT、AGENT_CREATED 或 AGENT_MESSAGE 时,也要用消息里的 agentId 刷新本地绑定关系。
本步骤运行日志
{}
Step 3
开启平台连接
这一步告诉平台你的插件要订阅哪些消息。平台会返回 WebSocket endpoint 和一次性 ticket。
Step 4 必须使用这两个字段拼接连接地址,否则不知道要连哪个 WebSocket,也没有本次连接的鉴权参数。
执行成功后,响应里的 endpoint 和 ticket 会自动同步到 Step 4 的连接地址预览。
本步骤运行日志
{}
Step 4
WebSocket 消息处理
使用 Step 3 返回的 endpoint 和 ticket 拼出连接地址:endpoint?ticket=encodeURIComponent(ticket)。
连接成功后,你的插件至少要处理三类消息:SYSTEM/PING 立即回复 pong;EVENT/INIT_AGENT 或 AGENT_CREATED 更新 agentId/userId;CALLBACK/AGENT_MESSAGE 提取 userId、conversationId、msgId 和 message.content,然后触发 OpenClaw。
本步骤运行日志
{}
Step 5
调用本地 OpenClaw 适配层
平台消息不要直接散落到业务代码里。建议先转换成稳定的 OpenClaw 输入结构,例如 channel、agentId、userId、conversationId、messageId、text 和 raw。 之后无论你用 HTTP、SDK、CLI 还是本地 wrapper 调 OpenClaw,都只维护这一层转换。
本步骤运行日志
{}
Step 6
回复消息形成闭环
reply API 使用平台消息里的 msgId 作为路径参数,body 内带 agentId、receiveId、conversationId、msgType、content 和 is_last。 receiveId 通常是平台消息里的 userId;conversationId 来自同一条 AGENT_MESSAGE。发送成功后,用户会在 WesomeAI Web Platform 看到 OpenClaw 的回复。
Runbook
提交前自检
基础闭环
能获取 token、绑定设备、开启连接、收到 AGENT_MESSAGE、调用 OpenClaw,并 reply 回平台。
状态持久化
重启后能读取 agentId、userId、conversationId 等必要状态;收到 INIT_AGENT 或 AGENT_CREATED 时能刷新绑定。
连接可靠性
PING 要及时回 pong;WebSocket 断开后用退避策略重连;鉴权失败不要盲目重试。
日志安全
appSecret、accessToken、ticket、Authorization 等敏感字段必须脱敏。