轻量级 Hook-first Python Agent 运行时,专为多人/多 Agent 共享环境设计,基于 Append-only Tape 上下文模型实现可审计、可交接的协作。
Bub 是一个面向多人与多 Agent 共享对话环境(如群聊)的轻量级 Python 运行时,核心代码仅约 200 行。其设计围绕两个核心机制展开:
Hook-first 编排:每条入站消息经过 resolve_session → load_state → build_prompt → run_model → save_state → render_outbound → dispatch_outbound 的 turn pipeline,每个阶段均为基于 pluggy 的 hook,开发者可通过 Python entry-points 无特权地覆盖任意阶段或整个流程,无需 fork 运行时本身。
Tape 上下文模型:与传统可变 session state 不同,Bub 的上下文从 append-only tape 重建。Tape 由不可变 facts 序列组成,Anchors 标记 phase 边界,Corrections 通过追加新 fact 覆盖旧记录而非覆写。这使每条决策可审计、可回放、可 fork,支持子 Agent 历史搜索与 handoff 追踪。
Bub 采用通道无关设计,同一 process_inbound() 管线驱动 CLI、Telegram 及自定义 Channel。内置能力(CLI、Telegram 适配、工具、Skills、模型执行)开箱即用但随时可替换。人类与 Agent 共享同一运行时边界和交接语义,无特殊 operator 类。插件系统基于 entry-points(group="bub"),后注册优先,无框架特权路径。
项目支持 Comma Commands 内部命令、基于 agents.md / Agent Skills 规范的技能发现与编写,并提供 Dockerfile 与 docker-compose.yml 用于容器化部署。默认模型为 openrouter:qwen/qwen3-coder-next,支持通过环境变量灵活切换模型提供商、API 格式与调用参数。
安装与快速开始
pip install bub
git clone https://github.com/bubbuild/bub.git
cd bub
uv sync
uv run bub chat # 交互式 REPL
uv run bub run "summarize this repo" # 单次任务
uv run bub gateway # Channel 监听模式
CLI 命令
| 命令 | 说明 |
|---|---|
bub chat | 交互式 REPL |
bub run MESSAGE | 单次 turn 执行 |
bub gateway | Channel 监听(Telegram 等) |
bub install | 安装/同步插件依赖 |
bub update | 升级插件依赖 |
bub login openai | OpenAI Codex OAuth |
环境变量
| 变量 | 默认值 | 说明 |
|---|---|---|
BUB_MODEL | openrouter:qwen/qwen3-coder-next | 模型标识符 |
BUB_API_KEY | — | Provider 密钥 |
BUB_API_BASE | — | 自定义 Provider 端点 |
BUB_API_FORMAT | completion | 可选 completion、responses、messages |
BUB_MAX_STEPS | 50 | 最大工具调用循环次数 |
BUB_MAX_TOKENS | 1024 | 单次模型调用最大 token 数 |
插件扩展示例
from bub import hookimpl
class EchoPlugin:
@hookimpl
def build_prompt(self, message, session_id, state):
return f"[echo] {message['content']}"
@hookimpl
async def run_model(self, prompt, session_id, state):
return prompt
[project.entry-points."bub"]
echo = "my_package.plugin:EchoPlugin"
关键源码文件
| 文件 | 职责 |
|---|---|
src/bub/framework.py | Turn 编排器 |
src/bub/hookspecs.py | Hook 契约定义 |
src/bub/builtin/hook_impl.py | 内置 hook 实现 |
src/bub/skills.py | Skill 发现与加载 |