多平台渠道概览
Channel 系统让 Elftia 成为跨平台 AI 机器人。你可以将 Agent 同时连接到 Discord、Telegram、Slack 等多个平台,在任何地方接收消息、调用工具、生成回复。
何时使用
- 希望在 Discord 服务器中部署一个 AI 助手机器人
- 需要通过 Telegram 与 Agent 进行私人对话
- 在 Slack 工作区中集成 AI 协作伙伴
- 想让同一个 Agent 同时服务多个平台的用户
支持的平台
| 平台 | 类型标识 | 连接方式 | 消息长度上限 | 分类 |
|---|---|---|---|---|
| Discord | discord | Bot Token | 2,000 字符 | Core |
| Telegram | telegram | Bot Token | 4,096 字符 | Core |
| Slack | slack | Bot Token + App Token | 4,000 字符 | Core |
| QQ Bot | qqbot | Bot Token | 1,500 字符 | China |
| LINE | line | Channel Access Token + Secret | 5,000 字符 | Core |
email | SMTP + IMAP 凭证 | 100,000 字符 | Core | |
whatsapp | 手机号码 | 65,000 字符 | Core | |
wechat | Wechaty Token | 2,000 字符 | China | |
| Matrix | matrix | Access Token | 65,536 字符 | Extended |
| Microsoft Teams | msteams | App ID + Password | 28,000 字符 | Extended |
| Mattermost | mattermost | Bot Token | 16,383 字符 | Extended |
| 企业微信 | wecom | Webhook Key | 4,000 字符 | China |
| 企业微信(应用) | wecom-app | Corp ID + Secret | 4,000 字符 | China |
:::tip 插件即平台 所有平台均通过 Channel 插件 实现。内置插件随应用分发,更多插件可通过 Marketplace 下载安装。 :::
核心概念
Channel 实例 (Channel Instance)
每个 Channel 实例代表一个与外部平台的连接。你可以为同一平台创建多个实例(例如连接两个不同的 Discord 机器人)。每个实例独立管理自己的:
- 凭证:连接所需的 Token/密钥
- 触发规则:决定何时让 Agent 回复(详见 触发规则与安全)
- 连接状态:disconnected / connecting / connected / error
触发规则 (Trigger Rules)
触发规则决定 Agent 对哪些消息做出回复:
| 模式 | 说明 | 适用场景 |
|---|---|---|
all | 回复所有消息 | 私人机器人、测试环境 |
mention | 仅在被 @提及 时回复 | 多人群组、共享服务器 |
keyword | 匹配指定关键词时回复 | 特定话题触发 |
dm_only | 仅回复私信 | 公开群组中只接受私聊 |
安全管线 (Security Pipeline)
每条消息在到达 Agent 之前会经过多层安全检查:
- InputSanitizer — 清除不可见控制字符
- RateLimiter — 速率限制(防刷屏)
- PromptGuardian — AI 驱动的提示注入检测
- UserPermissionService — 基于角色的访问控制
- ChannelPermissionGate — 敏感操作确认机制
工作流程
外部平台消息 (Discord/Telegram/...)
│
▼
Channel Plugin ─── 接收并解析消息
│
▼
ChannelPluginRegistry ─── 转换为统一 ChannelMessage 格式
│
▼
ChannelMessageRouter ─── 安全管线检查 + 触发规则匹配
│
▼
ChannelMagiBridge ─── 转换为 MagiIncomingMessage
│
▼
MagiService (Agent) ─── 处理并生成回复
│
▼
ChannelMessageRouter ─── 格式化 + 消息分片
│
▼
Channel Plugin ─── 发送回复到原始平台
插件架构
Channel 系统采用插件化架构,支持两种插件来源:
| 来源 | 目录 | 说明 | 优先级 |
|---|---|---|---|
| 内置插件 (Bundled) | resources/bundled-channel-plugins/ | 随应用安装包分发,只读 | 较低 |
| 用户插件 (Marketplace) | {userData}/channel-plugins/ | 从 Marketplace 下载或手动安装,读写 | 较高 |
当两个目录中存在相同类型的插件时,用户目录中的版本优先(可能是更新的 Marketplace 版本)。
每个插件必须包含 elftia-channel.json 清单文件,声明插件类型、入口文件、所需凭证等信息。
快速开始
- 打开 设置 → Channel 页面
- 点击 添加渠道,选择平台(如 Discord)
- 如果插件未安装,系统会从 Marketplace 自动下载
- 填写平台凭证(如 Discord Bot Token)
- 配置触发规则(建议先用
mention模式测试) - 点击 连接 启动实例
- 在对应平台中向机器人发送消息,验证连接是否正常
下一步
- Discord 配置指南 — 详细的 Discord 机器人配置步骤
- 触发规则与安全 — 触发模式配置和安全管线详解