Skip to content

多渠道接入

MateClaw 支持 8 种消息渠道,通过统一的 ChannelAdapter 接口实现多渠道适配。用户可以从 Web 页面、钉钉、飞书、企业微信、Telegram、Discord、QQ 或微信与 Agent 交互。

架构概述

┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ ┌───────┐ ┌────┐ ┌──────┐
│ Web  │ │钉钉  │ │飞书  │ │企微  │ │ TG   │ │Discord│ │ QQ │ │ 微信 │
│(SSE) │ │(Stream)│ │(WS) │ │(长连接)│ │(Poll)│ │(GW/WS)│ │    │ │(iLink)│
└──┬───┘ └──┬───┘ └──┬───┘ └──┬───┘ └──┬───┘ └──┬────┘ └─┬──┘ └──┬───┘
   │        │        │        │        │        │        │        │
   └────────┴────────┴────┬───┴────────┴────────┴────────┴────────┘

                 ┌────────┴────────┐
                 │ ChannelAdapter   │
                 │   统一接口        │
                 └────────┬────────┘

                 ┌────────┴────────┐
                 │   Agent Engine   │
                 └─────────────────┘

支持的渠道

渠道通信方式状态
WebSSE (Server-Sent Events)稳定
钉钉 (DingTalk)Stream 长连接(推荐)/ Webhook稳定
飞书 (Feishu/Lark)WebSocket 长连接 / Webhook稳定
企业微信 (WeCom)长连接 / Webhook稳定
TelegramLong-Polling(默认)/ Webhook稳定
DiscordGateway WebSocket(JDA)稳定
QQWebSocket / 回调稳定
微信个人 (iLink)HTTP 长轮询实验性

ChannelAdapter 接口

所有渠道适配器实现 ChannelAdapter 接口,提供统一的消息收发能力:

方法说明
onMessage(message)接收消息(渠道 -> Agent)
sendMessage(message)发送消息(Agent -> 渠道)
getChannelType()返回渠道类型标识

渠道配置方式

渠道可在管理界面的 「渠道管理」 页面中添加和管理,配置存储在 mate_channel 数据库表中:

字段说明
name渠道名称
type渠道类型
agent_id绑定的 Agent ID
config渠道配置(JSON,存储密钥和 Webhook 信息)
enabled是否启用

Web 渠道

Web 渠道是 MateClaw 的默认渠道,通过前端 SPA + SSE 流式通信实现,无需额外配置。

通信方式

  • 发送消息POST /api/v1/chat/stream
  • 流式响应:SSE (Server-Sent Events)

SSE 事件格式

event: message
data: {"type": "text", "content": "你好"}

event: tool_call
data: {"type": "tool_call", "tool": "WebSearchTool", "args": {"query": "..."}}

event: done
data: {"type": "done"}

钉钉(DingTalk���

MateClaw 的钉钉适配器支持两种接入模式和两种消息格式:

接入模式说明
Stream 模式(推荐)WebSocket 长连接,无需公网 IP,钉钉官方推荐
Webhook 模式HTTP 回调,需要公网可访问的 URL
消息格式说明
markdown普通 Markdown 消息(默认)
cardAI Card 流式卡片,需配置 card_template_id,支持打字机效果

第一步:创建钉钉应用

  1. 打开 钉钉开发者后台,进入 应用开发 → 企业内部应用 → 创建应用

    创建应用

  2. 应用能力 → 添加应用能力 中添加 「机器人」

    添加机器人

  3. 配置机器人基础信息,设置消息接收模式为 Stream 模式(流式接收),点击发布

    机器人基础信息

    Stream模式并发布

  4. 应用发布 → 版本管理与发布 中创建新版本,填写基础信息后保存

    创建新版本

  5. 基础信息 → 凭证与基础信息 中获取 Client ID(AppKey)和 Client Secret(AppSecret)

    获取凭证

第二步:在 MateClaw 中配置

通过管理界面 「渠道管理」 页面添加钉钉渠道:

配置项说明
渠道类型DingTalk
Connection Mode接入模式:stream(默认推荐)或 webhook
Client ID钉钉应用的 AppKey
Client Secret钉钉应用的 AppSecret
Message Type消息格式:markdown(默认)或 card
Card Template IDAI Card 模板 ID(消息格式为 card 时必填)
Agent绑定的 Agent

或通过 API:

bash
curl -X POST http://localhost:18088/api/v1/channels \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <token>" \
  -d '{
    "name": "钉钉机器人",
    "type": "dingtalk",
    "agentId": 1,
    "config": {
      "connection_mode": "stream",
      "client_id": "your-client-id",
      "client_secret": "your-client-secret",
      "message_type": "markdown"
    },
    "enabled": true
  }'

TIP

Stream 模式使用钉钉官方 SDK 建立 WebSocket 长连接,无需公网 IP,推荐优先使用。如果需要 AI Card 流式卡片效果,将 message_type 设为 card 并填入模板 ID。

第三步:找到并使用机器人

  1. 在钉钉消息栏搜索框中搜索刚创建的机器人名称

    搜索机器人

  2. 功能 下找到机器人,点击进入对话

    找到机器人

  3. 开始对话

    开始对话

TIP

也可以在钉钉群中通过 群设置 → 机器人 → 添加机器人 将机器人添加到群聊。

Webhook 地址

https://your-domain/api/v1/channels/webhook/dingtalk

飞书(Feishu/Lark)

飞书频道支持 Webhook 回调WebSocket 长连接 两种模式,WebSocket 模式无需公网 IP。

第一步:创建飞书应用

  1. 打开 飞书开放平台,创建企业自建应用

    创建应用

    填写信息

  2. 凭证与基础信息 中获取 App IDApp Secret

    获取凭证

  3. 能力 中启用 机器人

    启用机器人

  4. 权限管理 中配置必要权限,推荐使用 批量导入 功能导入以下权限:

    权限管理

    json
    {
      "scopes": {
        "tenant": [
          "im:chat", "im:message", "im:message.group_msg",
          "im:message.p2p_msg:readonly", "im:resource",
          "contact:user.base:readonly"
        ]
      }
    }
  5. 事件与回调 中,选择 长连接(WebSocket) 模式(无需公网 IP)

    WebSocket 配置

  6. 添加事件订阅,搜索并订阅 接收消息 v2.0

    订阅事件

  7. 应用发布 中创建版本并发布

    创建版本

第二步:在 MateClaw 中配置

配置项说明
渠道类型Feishu
App ID飞书应用的 App ID
App Secret飞书应用的 App Secret
Verification Token事件订阅的 Verification Token(可选)
Encrypt Key事件订阅的 Encrypt Key(可选)
bash
curl -X POST http://localhost:18088/api/v1/channels \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <token>" \
  -d '{
    "name": "飞书机器人",
    "type": "feishu",
    "agentId": 1,
    "config": {
      "appId": "cli_your_app_id",
      "appSecret": "your-app-secret",
      "verificationToken": "your-verification-token",
      "encryptKey": "your-encrypt-key"
    },
    "enabled": true
  }'

第三步:找到并使用机器人

  1. 在飞书工作台点击 添加常用,搜索刚创建的机器人名称并添加

    添加到常用

  2. 双击机器人进入对话界面

    对话界面

Webhook 地址

https://your-domain/api/v1/channels/webhook/feishu

企业微信(WeCom)

第一步:创建企业微信应用

  1. 访问 企业微信官网 注册或登录

    创建企业

    注册信息

  2. 在工作台点击 智能机器人 → 创建机器人,选择 API 模式 → 长链接配置

    创建机器人

    API 模式

    长链接配置

  3. 获取 Bot IDSecret

    获取凭证

第二步:在 MateClaw 中配置

配置项说明
渠道类型WeCom
Corp ID企业 ID
Agent ID应用的 AgentId
Secret应用的 Secret
Token接收消息的 Token
Encoding AES Key消息加密密钥
bash
curl -X POST http://localhost:18088/api/v1/channels \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <token>" \
  -d '{
    "name": "企微机器人",
    "type": "wecom",
    "agentId": 1,
    "config": {
      "corpId": "your-corp-id",
      "wecomAgentId": "1000002",
      "secret": "your-secret",
      "token": "your-token",
      "encodingAesKey": "your-encoding-aes-key"
    },
    "enabled": true
  }'

第三步:开始使用

在企业微信中找到机器人并开始对话。

开始聊天

Webhook 地址

https://your-domain/api/v1/channels/webhook/wecom

Telegram

MateClaw 的 Telegram 适配器支持两种接入模式:

模式说明适用场景
Long-Polling(默认)通过 getUpdates 持续轮询消息无需公网 IP,适合开发和内网部署
WebhookTelegram 主动推送消息到你的服务器需要公网可访问的 HTTPS URL

默认使用 Long-Polling 模式,无需额外配置 Webhook。如果配置了 webhook_url,则自动切换为 Webhook 模式。

第一步:创建 Telegram Bot

  1. 在 Telegram 中搜索 @BotFather(注意认准官方蓝色认证标识)

  2. 发送 /newbot 命令,按提示创建新机器人

    创建机器人

  3. 复制 BotFather 返回的 Bot Token

    获取 Token

第二步:在 MateClaw 中配置

配置项说明
渠道类型Telegram
Bot Token@BotFather 提供的 Token
Webhook URL可选,填写后切换为 Webhook 模式
Polling TimeoutLong-Polling 超时秒数,默认 20
HTTP Proxy可选,国内网络代理地址(如 http://127.0.0.1:7890
Show Typing是否显示"正在输入"指示器,默认开启
bash
curl -X POST http://localhost:18088/api/v1/channels \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <token>" \
  -d '{
    "name": "Telegram Bot",
    "type": "telegram",
    "agentId": 1,
    "config": {
      "bot_token": "123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11",
      "show_typing": true,
      "polling_timeout": 20
    },
    "enabled": true
  }'

第三步:开始对话

Long-Polling 模式(默认):保存渠道配置并启用后,Bot 会自动开始轮询消息,无需额外操作。在 Telegram 中搜索你的 Bot 并发送消息即可。

Webhook 模式:在配置中填入 webhook_url(如 https://your-domain/api/v1/channels/webhook/telegram),系统会自动向 Telegram 注册 Webhook。

TIP

  • Long-Polling 模式内置指数退避重连(2s→30s),网络中断后自动恢复
  • 回复时持续显示"正在输入"指示器(每 4 秒刷新),直到回复完成
  • Markdown 解析失败时自动降级为纯文本发送
  • 国内网络访问 Telegram API 可能需要配置 http_proxy

Discord

MateClaw 的 Discord 适配器基于 JDA(Java Discord API) 库,通过 Discord Gateway WebSocket 长连接接收消息,JDA 内置自动重连机制,无需手动管理连接生命周期。

第一步:创��� Discord Bot

  1. 打开 Discord Developer Portal

    开发���门户

  2. 新建 Application

    新建应用

  3. 左侧进入 Bot,新建 Bot 并复制 Token

    获取 Token

  4. 开启 Message Content Intent,给予 Bot Send MessagesAttach Files 权限

    配置权��

  5. OAuth2 → URL 生成器 里勾选 bot 权限,生成邀请链接,将 Bot 添加到你的服务器

    OAuth2 配置

    邀请到服务器

第二步:在 MateClaw 中配置

配���项说明
������类型Discord
Bot TokenBot 的 Token(必填)
Accept Bot Messages是否接收其他 Bot 的消息,默认关闭
HTTP Proxy可选,国内网络代理地址
bash
curl -X POST http://localhost:18088/api/v1/channels \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <token>" \
  -d '{
    "name": "Discord Bot",
    "type": "discord",
    "agentId": 1,
    "config": {
      "bot_token": "your-bot-token",
      "accept_bot_messages": false
    },
    "enabled": true
  }'

第三步:开始对话

保存渠道配置并启用后,Bot 会通过 Gateway WebSocket 自动连接到 Discord。在你邀请 Bot 加入的服务器中 @Bot 或发送私信即可开始对话。

TIP

  • Discord 适配器通过 Gateway WebSocket 接收消息,无需配置 Webhook URL 或 Interactions Endpoint
  • 超长回复(>2000 字符)自动分段发送,保留代码块完整性
  • 图片等媒体通过 REST API 上传,上传失败时自动降级为文本链接
  • 消息去重机制(LRU 缓存 500 条),防止重连时重复处理
  • 国内网络访问 Discord API 需要配置 http_proxy

QQ

第一步:创建 QQ 机器人

  1. 打开 QQ 开放平台,创建机器人应用

    QQ 开放平台

    创建机器人

  2. 回调配置 中,勾选 C2C 消息事件群消息事件 AT 事件

    事件配置

  3. 开发管理 中获取 AppIDAppSecret

    获取凭证

第二步:在 MateClaw 中配置

配置项说明
渠道类型QQ
App IDQQ 机器人 App ID
App SecretQQ 机器人 AppSecret
bash
curl -X POST http://localhost:18088/api/v1/channels \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <token>" \
  -d '{
    "name": "QQ 机器人",
    "type": "qq",
    "agentId": 1,
    "config": {
      "appId": "your-app-id",
      "appSecret": "your-app-secret"
    },
    "enabled": true
  }'

WARNING

微信个人 Bot(iLink 协议)目前仍处于内测阶段,需申请接入资格后方可使用。

工作原理

  • 登录方式:首次使用时扫描二维码授权,Token 自动持久化
  • 消息接收:HTTP 长轮询持续拉取新消息,支持文本、图片、语音和文件
  • 消息发送:通过 sendmessage 接口回复用户

配置步骤

  1. 在 MateClaw 渠道管理中添加微信个人渠道
  2. 点击 获取登录二维码,用手机微信扫码授权
  3. 扫码成功后 Token 自动填入,保存即可

API 配置

bash
curl -X POST http://localhost:18088/api/v1/channels \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <token>" \
  -d '{
    "name": "微信个人",
    "type": "weixin",
    "agentId": 1,
    "config": {
      "botToken": "your-bot-token"
    },
    "enabled": true
  }'

渠道管理 API

bash
# 查询所有渠道
curl http://localhost:18088/api/v1/channels \
  -H "Authorization: Bearer <token>"

# 启用/禁用渠道
curl -X PUT "http://localhost:18088/api/v1/channels/1/toggle?enabled=true" \
  -H "Authorization: Bearer <token>"

# 删除渠道
curl -X DELETE http://localhost:18088/api/v1/channels/1 \
  -H "Authorization: Bearer <token>"

会话来源追踪

所有渠道的对话都会记录来源信息。在会话管理和聊天控制台中,每个会话会显示对应的渠道图标,方便区分消息来源。

IM 渠道(钉钉、飞书、企微、Telegram、Discord、QQ)的会话归属于 system 用户,在控制台的会话列表和侧边栏中均可查看和管理。

注意事项

  • 使用 Webhook 模式的渠道需要 HTTPS 地址,建议通过 Nginx 反向代理配置 SSL 证书
  • 使用 Long-Polling / Stream / Gateway 模式的渠道(Telegram、钉钉、Discord)无需公网 IP
  • 每个渠道绑定一个 Agent,不同渠道可以绑定不同 Agent
  • 渠道配置中的密钥信息经过加密存储在数据库中
  • 国内网络访问 Telegram、Discord API 需要配置 HTTP 代理(在渠道配置的 http_proxy 字段中设置)

下一步