Bub,与 Human 同在的轻量级 Agent 运行时。
核心代码约 200 行。每个阶段通过 Hook 驱动。由 Tape 模型记录每次决策。 随时接入 CLI、Telegram 或任意你喜欢的 Channel。
import bub
@bub.hookimpl
def build_prompt(session, tape):
"""Reconstruct context from tape records."""
messages = [{"role": "system", "content": session.system}]
for record in tape.entries:
messages.append({
"role": record.role,
"content": record.content,
})
return messages
@bub.hookimpl
def run_model(messages, config):
"""Call the LLM — override to swap providers."""
return litellm.completion(
model=config.model,
messages=messages,
) 特性
每个决定都有理由。
Bub 从第一天起就为真实的多 agent 协作而精心设计,而不是拍脑门决定。
Hook 优先
约 200 行核心代码。每个阶段都是一个可插拔的 hook,灵活的 Hook 设计可以实现任何满足你需要的插件。而内置实现只是默认插件——你可以随时替换任意阶段。
Tape 上下文
所有上下文均可从追加式 tape 记录中重建、Fork,而非堆叠在 session 状态中。无损摘要,避免幻觉记忆。
Channel 任选
同一个 Pipeline 上驱动 CLI、Telegram 甚至你添加的任何 channel。Hooks 从不感知运行在哪个地方,可以是任意来源。
Skills as Docs
Skills 是带验证 frontmatter 的 SKILL.md 文件——而黑箱代码模块。确保你的 SKILL 都是可被发现、覆盖且审计。
操作对等
人类与 Agent 共享同一操作者模型:相同的边界、证据链和 Hand-off 语义。
插件系统
显式覆盖插件设计:后注册的插件优先运行并覆盖前者,没有任何框架优先限制。
架构
处处都是 Hooks。
Bub 中每个阶段都是一个可插拔的 hook。
通过注册你自己的 hook 覆盖任意阶段。无需 fork。
| time | op | key | payload | |
|---|---|---|---|---|
| 14:32:01 | user_msg | e_101 | "explain hooks" | |
| 14:32:02 | build_prompt | e_102 | system + 12 msgs | |
| 14:32:04 | model_reply | e_103 | "Hooks are pluggy…" | |
| 14:32:04 | tool_call | e_104 | read_docs("hooks") | |
| 14:32:05 | tool_result | e_105 | {ok: true, lines: 47} | |
| handoff phase → correction, owner: agent | ||||
| 14:32:06 | correction | e_106 | ← e_103 supersedes e_103 | |
| 14:32:07 | model_reply | e_107 | "Updated: Hooks use pluggy…" | |
| 14:32:08 | save_state | e_108 | tape flushed ✓ | |
上下文模型
Tape,拍板。
上下文不积累在 session 状态中,而是从追加式 tape——不可变事实的序列——中重建:Entry 记录发生了什么、Anchor 标记阶段边界并携带结构化状态。
通过修正追加新事实来取代旧事实——从不覆盖。视图从 anchor 往后组装,而非整体继承。每次决策都可审计、可重放、可 fork。
社区
好东西,值得赞。
使用 bub 作为一个 build block 构建你自己的 agent 产品、服务你的业务,而不是学习复杂的概念然后无从下手。
PsiACE
@repsiace
再强烈推荐一遍 LLM 时代难得的这么优雅的代码了
yihong
@yihong0618
我一直想要有一个类似于 Cloud Code 一样的通用 Agent 框架,但我一直有点懒得自己开始去做这件事情。然后看到了 bub,感觉完美符合了心中所想的一个 Agent 框架。
earayu
@earayu
bub是属于短小精悍,里面有很多思考精神,值得学习
卡比卡比
@jakevin7
使用 bub 作为一个 build block 构建你自己的 agent 产品、服务你的业务,而不是学习复杂的概念然后无从下手。
PsiACE
@repsiace
再强烈推荐一遍 LLM 时代难得的这么优雅的代码了
yihong
@yihong0618
我一直想要有一个类似于 Cloud Code 一样的通用 Agent 框架,但我一直有点懒得自己开始去做这件事情。然后看到了 bub,感觉完美符合了心中所想的一个 Agent 框架。
earayu
@earayu
bub是属于短小精悍,里面有很多思考精神,值得学习
卡比卡比
@jakevin7