适配器总览 和 适配器插件开发规范 获取最小落地路径。
Control 消息信封
control websocket 上的业务消息都是 JSON object。backend 和 worker 都可以发起调用。- 响应必须原样返回
aut_echo。 - 响应不要带
aut_action。 aut_params必须是对象;没有数据时返回{}。- 捕获 worker 内部异常,并转成
ok:false。
初始化和能力声明
control 连接建立后,backend 会发送adapter_init。你应先缓存配置、重建账号索引、重置临时状态,再发送 adapter_worker_ready。
adapter_init.aut_params 的关键字段:
账号配置示例:
supports_qr_login 有两层:- manifest 头注
//[supports_qr_login: true]:声明适配器提供扫码登录入口,供设置页展示。 adapter_worker_ready.aut_params.supports_qr_login:声明当前在线 worker 真正支持扫码动作。
adapter_login_qr_start、adapter_login_qr_wait 前,只检查第二层运行时能力。账号解析
实现adapter_codec_resolve_account,从 headers、query 或 raw_payload 找到当前 bot 账号。
请求:
- 成功时
account_id必填,并与账号配置中的account_id一致。 meta只放非敏感字符串,例如平台名、连接角色、短 ID。- 解析不到账号时返回
ok:false和可排查的aut_error。
入站标准化
实现adapter_codec_normalize_inbound,把平台 payload 转成 StandardMessageEvent 数组。字段名使用 Go 结构体字段名,例如 IMType、AccountID、EventCategory。
媒体项格式:
出站构造
实现adapter_codec_build_outbound,把 autClaw 标准动作转成平台 payload。
请求:
目标规则:
- 群消息使用
session_type: "group"+chat_id。 - 私聊消息使用
session_type: "private"+user_id。 - 需要回执时,把
request_id写入平台echo、nonce或等价字段。
出站执行和回执
如果build_outbound 返回 executor: "worker",backend 会调用 adapter_execute_outbound。
ok:外层 ok 表示 control RPC 是否成功;aut_params.ok 表示平台发送是否成功。
Gateway 型适配器要实现 adapter_codec_decode_receipt:
{"matched":false},backend 会继续按普通入站事件处理。
扫码登录
支持扫码登录的适配器需要先完成核心 codec,在 manifest 中声明//[supports_qr_login: true] 作为入口提示,并在 adapter_worker_ready 中上报 supports_qr_login: true。backend 只会向已上报运行时能力的在线 worker 调用扫码动作。
启动扫码:
要求:
- 不支持扫码登录的适配器不要声明
//[supports_qr_login: true],也不要上报supports_qr_login: true。 - 只声明 manifest 头注会显示入口,但 backend 仍不会调用扫码动作。
- 已上报
supports_qr_login: true时,两个 action 都必须通过 control 信封响应,并原样返回aut_echo。 account_config.schema_values不要写入无关字段;日志和message不要泄露 token、密码、私钥、验证码或完整签名。
主动动作
主动发送示例:
媒体发送契约
普通插件调用replyImage、replyVoice、replyVideo、replyFile 或 replyMixed 后,backend 会把媒体放进出站 payload.media 或 payload.items。
默认不要声明:
file_path:
- 优先读取
media.source。 - 只有声明
requires_file_path后才读取media.file_path。 - 支持
http://、https://、data:、base64://、平台 file key 和临时资源 URL。 - 文件发送要保留
name/file_name和mime_type。 - 不要把本地路径发给远端平台。
最小 Node.js 框架
发布前检查
- 收到
adapter_init后再处理平台业务消息。 - 所有带
aut_echo的调用都能响应成功或失败。 - 主动调用 backend 时维护 pending map,并设置超时。
- control 断开时清理 pending 调用并退避重连。
EventData、meta和日志不要包含敏感信息。- 群聊、私聊、媒体、撤回、账号离线和平台错误都要做实测。