Channel 消息渠道
Channel 的定位
Channel 是用户与平台之间的入口通道。同一个 Agent 能力可以通过不同 Channel 暴露——用户无需学习新界面,在既有工作方式下就能触发 Agent:
Rendering diagram…
已支持 Channel
| Channel | 状态 | 支持能力 | 典型场景 |
|---|---|---|---|
| Web Chat | GA | 富文本消息、流式响应、文件上传、工件实时更新 | 默认 Web 界面 |
| 飞书 / Lark | GA | IM(@ 机器人 / 群聊 / 私聊)、云文档评论触发、卡片消息、附件 | 团队协作为主的客户 |
| SCM(GitHub / GitLab / Gitee / Gerrit) | GA | PR / MR / Issue / Comment 事件触发、评论回写 | 研发协同、代码评审 |
| Webhook | GA | 通用 HTTP POST 入口 | 外部系统(CI / Jira / DOORS)触发 |
| HIL Bridge | GA | Human-in-the-loop 桥接 | 跨人审批 / 接力交付 |
| 企业微信 / WeCom | Roadmap — 暂未实装 adapter | 计划支持 IM(@ 机器人 / 群聊 / 私聊)、卡片消息、文件 | 内部部署国企 / 政府 |
| 邮件 / SMTP · IMAP | Roadmap — 暂未实装 adapter | 计划支持 发信 / 收信 / 规则触发 / 附件解析 | 外部合作方、客户交付 |
Channel Adapter 的 4 大职责
1. 身份映射
外部身份(飞书 open_id、企微 userid、邮箱地址)→ 平台租户 / 用户 / 会话所有者
- 支持强映射:外部 ID 必须先在平台绑定
- 支持动态映射:按规则自动创建用户(例:邮件域名 = 租户)
2. 会话路由(Session Resolver)
一条外部消息应该落到哪个 Session?这层决策考虑:
- 群聊 / 单聊:群聊默认共享 Session,单聊每人一个
- 话题隔离:飞书话题 / 企微会话序列可映射到不同 Session
- 时间窗口:超过 X 小时不活跃自动开新 Session
3. 格式转换
| 来源 | 内部统一格式 | 目标 |
|---|---|---|
| 飞书富文本 / 卡片 | 平台 Message | 飞书卡片 / 富文本 |
| SCM webhook payload(push / PR / MR) | 平台 Event | 代码评审回复 / PR 评论 |
| Webhook JSON | 平台 Event | HTTP 响应 |
| 企微 markdown / 邮件 HTML(Roadmap) | 平台 Message | 暂未实装 |
4. 凭据 / 限流 / 去抖
- 凭据:Bot Token / OAuth / App Secret 由 Credential 层统一管
- 限流:防止外部 Bot 攻击,按 Channel 独立计数
- 去抖(Debounce):同一用户 N 秒内重复消息合并
一个消息的生命周期(飞书示例)
DM / 群聊策略
每个 Channel 可独立配置:
| 策略 | 说明 |
|---|---|
dm-only | 只处理单聊,群聊里的 @ 也忽略 |
mention-only | 群聊只处理 @ 机器人的消息 |
all | 群聊所有消息都进 Session(适合"小群专机器人") |
command-prefix | 只处理以 /, @xxx 等前缀的消息 |
配置方式
通过管理台的「集成对接」页面,每个 Channel 独立配置:
- 飞书:
App ID+App Secret+ 事件订阅 URL
企微 / 邮件 adapter 暂未实装;如有强需求可先通过 Webhook 渠道接入对应平台的出站消息。
详见 集成对接。
相关文档
- 📖 Event Trigger 事件触发 — Channel 也是一种 Trigger
- 🔌 飞书集成 · 企微集成 · 邮件集成
- 🧩 源码入口:
AgentFlow/src/channels/·api/apps/channel_app.py