跳转到内容

接入渠道

渠道把终端或聊天服务接入 Bub 应用。本页说明如何选择网关启动的渠道、合并短时间内收到的消息,以及确定会话 ID。渠道由应用框架管理;直接使用 Agent 的服务自行接收和发送消息。

  • 你已运行 bub onboard 或直接编辑了 ~/.bub/config.yml。参见 配置。
  • 对于每个非 CLI 渠道,相应凭据已设置(如 BUB_TELEGRAM_TOKEN)。

bub gateway 监听所有已启用、配置可用的渠道。它默认启用 all,展开为所有已启用且不是 Interface 的渠道。这既包括 Telegram 这类监听渠道,也包括 mcp.lifecycle 这类 Lifecycle 后台服务。内置 cli 交互接口会被排除,避免长期运行的网关抢占运维者的终端。

启用单个渠道:

bub gateway --enable-channel telegram

启用多个:

bub gateway --enable-channel telegram --enable-channel wechat

排除默认生命周期渠道:

bub gateway --enable-channel all --enable-channel '!mcp.lifecycle'

要在配置中固化默认值,设置 enabled_channels(逗号分隔,或 all):

enabled_channels: telegram

或通过环境变量:

BUB_ENABLED_CHANNELS=telegram

只有当渠道的 enabled 属性返回 True 时才会启动。例如 BUB_TELEGRAM_TOKEN 为空时 Telegram 渠道返回 False,此时被静默跳过而不报错。

非 CLI 渠道可以通过防抖,把用户连续发送的短消息合并为一轮处理。可调整以下参数:

变量 默认值 含义
BUB_DEBOUNCE_SECONDS 1.0 一条活跃消息后必须保持安静的时间,超过则刷新批次。
BUB_MAX_WAIT_SECONDS 10.0 后续消息能延长等待的硬上限。
BUB_ACTIVE_TIME_WINDOW 60.0 非活跃消息仍会被视为活跃对话一部分的时间窗口。

Bub 按会话暂存这些消息,到时合并为一个 ChannelMessage。

Bub 用 session_id 索引会话状态。默认规则是 <channel>:<chat_id>:

  • bub run "..."(无 --session-id)→ cli:local
  • Telegram 入站 → telegram:<chat_id>
  • bub chat REPL → cli_session(字面字符串,不遵循 <channel>:<chat_id> 模式)

需要让多个接入面共享状态时,用 bub run 或 bub chat 上的 --session-id 覆盖。

Channel 默认启用? 防抖? 页面
cli 仅在 bub chat 中 否 CLI
telegram 是(当 BUB_TELEGRAM_TOKEN 已设置时) 是 Telegram

插件可通过 provide_channels hook 注册更多渠道。其他渠道可以通过插件接入。

  • CLI:REPL 与单次轮次。
  • Telegram:token、白名单、群聊行为。
  • 设置参考:全部渠道变量。