跳转到内容

基于 Bub 构建

本节面向想把 Bub 作为 Python 框架来依赖、而不仅仅是运行 bub CLI 的开发者。如果你的目标是新增行为、替换某个阶段,或把 Bub 嵌入一个产品中,请从这里开始。

根据你要交付的形态选择路径。

插件是一个注册到 bub 入口点组、并贡献钩子实现的 Python 包。Bub 在启动时与内置运行时一起发现它,并将相关阶段路由到你的代码。

当你想在已有的 Bub 安装中新增工具、替换模型、持久化状态、注册 CLI 命令或暴露新通道时,选这条路径。

插件介绍包结构、入口点形态以及可编辑安装流程。

2. 以编程方式嵌入 BubFramework(进阶)

Section titled “2. 以编程方式嵌入 BubFramework(进阶)”

BubFramework 是运行时内核。你可以在自己的进程内实例化它、调用 load_hooks(),并通过 process_inbound() 直接喂入信封。并不强制使用 Bub CLI。

当 Bub 是某个更大 Python 服务(例如 HTTP API 或 worker 进程)中的一个组件、并且你需要与 CLI 同样的轮次管线时,选这条路径。

发行版给出最小异步示例。

发行版是一个依赖 bub、自带 CLI 入口、并捆绑一组精选插件与技能的 Python 包。终端用户安装的是你的产品,而不是裸框架。

当你需要品牌化的 CLI、固定的默认模型,或针对特定场景的固定插件组合时,选这条路径。

发行版visual-base 为案例完整演示。

写新插件之前,先看看 bubbuild/bub-contrib 单仓库。它是社区维护的插件参考目录,覆盖磁带库、通道、模型后端、调度和搜索。许多你可能需要的集成已经作为可安装包存在于这里。

当你的插件、技能包或发行版准备好之后,把它登记到 hub.bub.build —— 公开的插件、技能、发行版与相关项目目录 —— 方法是向其源仓库 bubbuild/buildscape 提交 PR。

Bub 在设计上分成一个小内核与一个宽广的插件面。why-rewrite-bub 一文描述了这个模型:内核由维护者强化、保持最小,并被视作稳定契约;插件则保持松散——任意写法、随手 vibe-code、或本地由代理生成均可,只需遵守钩子契约。当你针对 hookspecs 与已记录的入口点组进行构建时,你的插件可以在同一次要版本线内的 Bub 多次发布之间保持工作。