跳转到内容

核心特性

每个 turn 阶段都是一个 pluggy hook。 内置功能同样是普通的插件——只需注册自己的实现即可覆盖任何阶段。 同时支持 first-result hook(覆盖型)和 broadcast hook(观察型)。

run_model_stream 是主要的模型 hook。 旧版 run_model hook 仍可使用,会被自动适配为单条文本块流。 当没有模型 hook 返回值时,安全回退到提示文本(带 on_error 通知)。 当 render_outbound 无输出时,自动回退 outbound。

运行时事件记录在 tape 中(默认位于 ~/.bub/tapes)。 上下文从 tape 记录中重建,而非累积在 session 状态中。

  • CLI:通过 Typer 提供 runchatgatewayinstallupdatelogin;隐藏的 hooks 命令仍可用于诊断。
  • 模型运行时:支持工具调用的 agent 循环,由 Republic 驱动。
  • 逗号命令,help,skill,fs.read 等。未识别的命令回退到 shell。
  • Channelsclitelegram 作为默认渠道。

这些都是 hook 实现。按需替换即可。

CLI 和 Telegram 使用同一条 process_inbound() 路径。 Hooks 不感知自己运行在哪个 channel 中。 Outbound 路由由 ChannelManager 处理。

Skills 是带验证 frontmatter 的 SKILL.md 文件。 插件可通过包含 skills/ 目录来提供自己的 skill。

外部插件通过 Python entry points(group="bub")加载。 后注册的插件优先运行,可覆盖内置行为。

  • Envelope 有意采用弱类型(Any + 访问器辅助函数)。
  • 共享插件 state 没有集中式的 key 约定。
  • 没有内置 Discord 适配器——可通过 provide_channels 实现。