跳转到内容

Channels

本页说明如何运维 channel:哪些处于启用状态、它们如何批处理入站消息、以及会话如何命名。

Channel 是一个入站/出站接入面 —— CLI 提示符、聊天平台、HTTP 端点 —— 它通过同一套 turn pipeline 驱动 Bub。概念模型见 Surfaces

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

bub gateway 监听所有已启用、配置可用的 channel。它默认启用 all,展开为已注册的全部 channel 不含 cli —— CLI channel 被排除,避免长期运行的网关抢占运维者的终端。

启用单个 channel:

uv run bub gateway --enable-channel telegram

启用多个:

uv run bub gateway --enable-channel telegram --enable-channel wechat

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

enabled_channels: telegram

或通过环境变量:

BUB_ENABLED_CHANNELS=telegram

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

非 CLI channel 可以对入站消息做防抖,使一连串短消息合并为一次 turn,而不是触发多次。三个参数控制:

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

Bub 按 session 暂存这些消息,到时合并为一个 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 runbub chat 上的 --session-id 覆盖。

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

插件可通过 provide_channels hook 注册更多 channel。Discord 与 Slack 不在核心中 —— 如有需要见 Build → plugins