Bub:让AI成为你的伙伴而非工具
家人们,今天我们要攻克这个超级项目!如果你还在纠结AI代理框架的选择,或者觉得现有框架过于复杂且缺乏灵活性,那么Bub将是你理想的选择!该项目在GitHub上已获得1.1k星标和102个fork,无疑是AI代理领域的新秀!
Bub并非出自实验室,而是源于真实的群聊环境!设想这样一个场景:在一个多人互动的群聊中,AI需要与真人和其他AI互动,处理多重任务,应对不完整的信息,而没有人愿意等待它思考。
这正是Bub诞生的背景!它从一开始就不是为了演示或个人辅助,而是为了成为真正的队友,在复杂的对话中与人类和其他智能体共存。
Bub的设计理念独特:它更注重AI在现实条件下的人际交往能力,而不是完成特定任务的能力。上下文不是固定的负担,而是根据需要构建的工作集,使用完毕即可丢弃。
Bub的核心代码仅有约200行!没错,就这么简洁!它基于pluggy构建,采用“钩子优先”架构,所有内置功能都可以被替换为自定义插件。
每条入站消息都会经过一轮管道处理,每个步骤都是一个钩子:
内置插件首先注册,后续插件可覆盖先前插件,除非有特殊原因!
这是Bub最具创新性的地方!传统AI框架通常通过累积会话来管理上下文,而Bub采取了完全不同的策略:上下文源自tape。
历史仅追加事实,锚点标记阶段转换。上下文按需组装——不累积,不压缩成有损摘要。这种设计使Bub在多用户、多任务环境下表现优异!
Bub在多人群聊中成长,因此它天然具备处理复杂社交环境的能力。与仅适用于单用户场景的框架不同,Bub一开始就考虑了并发、上下文切换和资源竞争。
钩子贯穿始终!整个轮转管道即为钩子。覆盖build_prompt、run_model或render_outbound即可更改行为。核心不赋予内置功能特殊权限。
CLI和Telegram共享process_inbound()路径。钩子不知自己处于哪个渠道。这意味着你可以用同一套逻辑服务多个渠道,大幅降低开发和维护成本。
技能以带验证前言的SKILL.md文件形式存在,而非通过魔法注册的代码模块。这种设计使得技能的创建、分享和维护变得异常简便。
内部命令模式:以,开头的行进入内部命令模式(,help、,skill name=my-skill、,fs.read path=README.md)。
每个技能目录必须包含一个SKILL.md文件:
技能按优先级顺序从三个根目录发现:
在pyproject.toml中:
工具通过@tool装饰器导入时副作用注册。你的插件必须在代理开始使用它们之前导入包含@tool定义的模块。
扩展包可通过在分发中包含顶级skills/目录提供技能。
示例布局:
官方网站:https://bub.build/
GitHub仓库:https://github.com/bubbuild/bub