接入渠道
渠道把终端或聊天服务接入 Bub 应用。本页说明如何选择网关启动的渠道、合并短时间内收到的消息,以及确定会话 ID。渠道由应用框架管理;直接使用 Agent 的服务自行接收和发送消息。
- 你已运行
bub onboard或直接编辑了~/.bub/config.yml。参见 配置。 - 对于每个非 CLI 渠道,相应凭据已设置(如
BUB_TELEGRAM_TOKEN)。
1. 选择启用哪些 channel
Section titled “1. 选择启用哪些 channel”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,此时被静默跳过而不报错。
2. 调优防抖与批处理
Section titled “2. 调优防抖与批处理”非 CLI 渠道可以通过防抖,把用户连续发送的短消息合并为一轮处理。可调整以下参数:
| 变量 | 默认值 | 含义 |
|---|---|---|
BUB_DEBOUNCE_SECONDS |
1.0 |
一条活跃消息后必须保持安静的时间,超过则刷新批次。 |
BUB_MAX_WAIT_SECONDS |
10.0 |
后续消息能延长等待的硬上限。 |
BUB_ACTIVE_TIME_WINDOW |
60.0 |
非活跃消息仍会被视为活跃对话一部分的时间窗口。 |
Bub 按会话暂存这些消息,到时合并为一个 ChannelMessage。
3. 理解 session id
Section titled “3. 理解 session id”Bub 用 session_id 索引会话状态。默认规则是 <channel>:<chat_id>:
bub run "..."(无--session-id)→cli:local- Telegram 入站 →
telegram:<chat_id> bub chatREPL →cli_session(字面字符串,不遵循<channel>:<chat_id>模式)
需要让多个接入面共享状态时,用 bub run 或 bub chat 上的 --session-id 覆盖。
4. 内置 channel
Section titled “4. 内置 channel”| Channel | 默认启用? | 防抖? | 页面 |
|---|---|---|---|
cli |
仅在 bub chat 中 |
否 | CLI |
telegram |
是(当 BUB_TELEGRAM_TOKEN 已设置时) |
是 | Telegram |
插件可通过 provide_channels hook 注册更多渠道。其他渠道可以通过插件接入。