跳到主要内容

渠道与机器人

CountBot 的渠道系统负责把外部消息接进来,并把它们映射到正确的会话、路由模式和机器人账号。它不只是“接几个 IM 平台”,而是统一了消息入口、会话归属、团队调度和外部编码工具路由。

这套系统负责什么

  • 一个实例接入多个渠道
  • 同一个渠道挂载多个机器人账号
  • 根据群聊或私聊决定会话作用域
  • 决定默认走 ai 还是 direct
  • 决定外部编码工具默认用哪个 profile
  • 支持在 IM 聊天内再临时覆盖这些默认值

当前渠道节点

配置模型中包含:

  • telegram
  • discord
  • qq
  • dingtalk
  • feishu
  • weibo
  • wecom
  • wechat
  • xiaozhi

其中“配置节点存在”不等于“运行能力已经完全落地”,应以当前仓库中的实际渠道实现为准。

多账号为什么重要

现实场景里很少是“一种渠道只挂一个机器人”:

  • 研发、运营、客服可能各自有独立入口
  • 生产、预发、测试可能使用不同账号
  • 不同团队可能需要不同默认路由和默认编码工具

所以 CountBot 的渠道设计默认支持:

  • 一个主账号
  • accounts 下的多个附加账号

通用账号字段

渠道账号层有一组共同字段:

  • enabled
  • display_name
  • account_id
  • allow_from
  • routing_mode
  • external_coding_profile

这意味着“IM 渠道默认走哪条路”其实是账号级能力,而不是整个系统一个总开关。

会话作用域

渠道层不只做收发消息,它还要决定一条消息归属于哪个会话上下文。典型判断包括:

  • 来自哪个渠道
  • 来自哪个账号
  • 是群聊还是私聊
  • 是否使用主账号共享群聊上下文

这也是为什么渠道配置会和会话系统、团队系统、外部编码工具系统产生直接联动。

默认路由与聊天内覆盖

每个渠道账号都可以在高级设置中定义:

  • 默认路由模式:aidirect
  • 默认外部编码工具:某个 profile

运行时又支持在聊天中临时覆盖:

  • /route
  • /coder

规则是:

  • 高级设置负责默认值
  • 聊天命令负责当前聊天临时值
  • 命令不会回写后台默认配置

详细命令见 IM 命令

与外部编码工具的关系

当账号默认路由为 direct 时,普通消息会直接转给外部编码工具。这个模式非常适合:

  • 把 IM 聊天当编码入口
  • 持续修 bug
  • 跟进一串连续的代码修改

但前提是该账号已经绑定有效的 external_coding_profile,否则渠道配置保存时就会校验失败。

详细见 外部编码工具

与团队工作流的关系

渠道消息还可以触发团队工作流:

  • 显式命令:/team 团队名 任务
  • 隐式触发:@团队名

也就是说,渠道层既是“对话入口”,也是团队调度入口。

详细见 智能体团队

常用渠道 API

方法路径说明
GET/api/channels/list获取渠道配置摘要
GET/api/channels/status获取渠道运行状态
POST/api/channels/test测试某个渠道连通性
POST/api/channels/update保存并重载渠道配置
GET/api/channels/{channel}/config获取单个渠道配置

推荐的规划方式

按业务拆账号

  • 内部协作入口
  • 对外服务入口
  • 通知与告警入口

按环境拆账号

  • 生产
  • 预发
  • 测试

按团队拆账号

  • 开发团队
  • 内容团队
  • 客服团队

相关文档