MateClaw 中文文档 下载 App

ChannelAdapter SPI——扩展第十个渠道的方式

为什么用 SPI

MateClaw 支持九个 IM 渠道,每个渠道的协议都不一样——钉钉走 Stream WebSocket,Telegram 走 Long-Polling,Slack 走 Socket mode,微信走 HTTP 长轮询。但 Agent 端只需要一个统一的「收到消息回调」和一个「发送消息接口」。

这就是 ChannelAdapter SPI 的设计意图——把渠道差异隔离在适配器里,Agent 和上游执行链都不关心消息从哪来、发出去是什么协议。

一个渠道适配器做什么

每个 ChannelAdapter 实现三件事:

能力说明
接收消息从 IM 平台接收用户消息,转换成 MateClaw 统一的 ChatMessage 格式
发送消息把 MateClaw Agent 的输出,转换成 IM 平台能理解的格式并推送
维护连接长连接重连、心跳、断线检测、Webhook endpoint 管理

SPI 接口(简化描述)

一个渠道适配器要实现的核心方法(只讲概念,不讲具体代码):

扩一个新渠道的流程

假设你想支持某个 MateClaw 还没有的 IM 渠道:

  1. 读官方机器人 API 文档,搞清楚它的消息推送机制(长连接还是 Webhook)
  2. 实现 ChannelAdapter SPI
  3. 注册到 Spring 容器(加个 @Component)
  4. 配置凭证的 UI 页面按已有渠道的方式加一份
  5. 不需要改 Agent 引擎、不需要改调度器、不需要改 Tool Guard——上游全是统一接口

哪些渠道可能要自己扩