世界上会有很多 Agent,它们进入群聊、进入团队、进入组织,我们期待的是什么样的 Agent?
bub 给出的答案是:一个有边界、有证据、可以交接的 Agent。这是一个 Agent 框架,只提供精心设计的轻内核,其他功能可通过插件和 skills 自由拓展,在架构上和最近因 OpenClaw 而大火的 Pi 相类似。它的 tape 设计完整记录了 Agent 的每一次思考、每一次工具调用、每一个结果。
它不是单纯为了完成任务设计的,而是让更多人机加入协作时不会感到违和。
沿着这个思路往前走,另一个问题自然冒出来:
如何利用 Agent 进一步满足企业内部对各种数据消费的定制化需求?当 Agent 的足迹遍布群聊、遍布任务流,我们怎么让这些分散的痕迹,变成团队可以共享、可以复用的洞察?
这就是 bubseek 要解决的问题。
立即试用 OceanBase 企业版,体验国产数据库能力
bubseek 的关键特性
bubseek 建立在 bub 和 OceanBase seekdb 之上:
OceanBase seekdb 是一个 AI 原生数据库。它专为 AI 时代的工作负载设计,原生支持向量嵌入和 RAG 等能力,能更好支撑 “把数据变成洞察”。
得益于 OceanBase seekdb 提供的数据底座,bubseek 对外,可作为 Agent 消费数据,服务业务需求;对内,它自己的足迹又成为被分析的对象,反哺团队理解。
它接受提示词,能根据任务需求自主对接数据源、定义和定制可视化视图、执行分析动作、提交分析报告。同时,它负责“消费”数据,分析、提炼、输出洞察。
具体而言,可以概括为以下几个关键特性。
多渠道支持
Agent 需要入口来接收需求。bubseek 内置了五个常用的即时通讯渠道:飞书、钉钉、微信、Discord 和 Telegram。
安装后配置对应的环境变量即可使用,无需额外开发。这些渠道遵循 bub 的 channel 扩展规范,便于自行开发扩展或者引入其他第三方实现。
此外还有一个 Web 入口:marimo channel。
启动后访问 http://127.0.0.1:2718,除了一个基本的会话界面之外,还包含简单的数据分析可视化示例和用于内部服务数据呈现的一些看板。
轻量化数据消费
Agent 接到需求后执行任务,输出结果。
企业内部的数据消费需求往往是碎片化的:运营想看趋势,产品想追指标,技术想了解开源动态。传统的方式是提需求、等排期、上线 BI 报表。周期长,成本高。小需求排不上,大需求做不完。
bubseek 想换一种方式:不需要部署独立的 BI 系统,用 notebook 就能承载看板、图表、分析脚本。不满意改个参数再来,想要新维度加一句话就行。响应速度从“按周排期”变成“即时迭代”。
marimo notebook:marimo 是一个响应式 Python notebook。bubseek 预置了 dashboard.py 和 index.py 两个模板。用户可以在 insights/ 目录下添加自己的 notebook。Agent 可以根据需求动态生成或修改 notebook,数据消费变成对话而非排期。
GitHub 仓库卡片:内置 github-repo-cards skill。给定 org/repo,生成包含基本信息、星标趋势、贡献者的卡片;或抓取 GitHub trending,生成趋势列表。输出 SVG 和 PNG 格式。把 GitHub 上的数据变成可分享的图片,是一个具体的数据消费场景示例。
调度任务:内置 bubseek-schedule。Agent 可以通过 schedule.add、schedule.list、schedule.remove 管理定时任务,支持 cron 表达式、间隔触发、延时触发。用户说“每天早上 9 点提醒我查看数据”,Agent 就能创建对应的调度任务。周期性的数据需求也可以被即时满足。
内生可观测性
Agent 执行过程中会产生大量数据。这些数据不是副产品,而是理解 Agent、理解团队的素材。
传统的可观测性是外挂的:部署监控系统,收集指标,看仪表盘。Agent 的可观测性可以是内生的:Agent 运行时自然产生数据,这些数据存入 seekdb,可以被 Agent 自己分析。
tape:bub 的核心设计。完整记录 channel 的聊天会话、Agent 的每一次思考、工具调用、结果。这些记录以 tape 的形式持久化,不可篡改。tape 本身就是 Agent 工作的一部分,不是事后追加的日志。
所有数据都会持久化到 OceanBase seekdb,后续可以让 Agent 分析 tape 从而了解:哪些问题被频繁提及?哪些任务经常失败?团队最关心什么?
marimo 看板:bubseek 预置了看板模板,用于展示 Agent 的运行数据。tape 记录、会话历史、任务状态都可以在 marimo 界面中查看。不需要部署独立的监控系统,Agent 的足迹本身就是可浏览、可查询的数据。
这形成了一个闭环:Agent 服务团队,产生数据;这些数据存入 OceanBase seekdb,通过看板可视化,或被 Agent 分析,反哺团队对自身协作的理解。
当然,用户也可以通过自然语言和 bubseek 进行交互,让其对 OceanBase seekdb 存储的任意 Agent 数据信息进行分析和生成看板。
例如:
或者:
生成的看板会类似于:
统一的数据底座
上述记录都存入 OceanBase seekdb。
OceanBase seekdb 是 OceanBase 面向 AI 场景的轻量化版本,原生支持 SQL、向量、全文等多路检索能力,并提供混合搜索策略,能够适应多样化的数据处理和消费需求。bubseek 通过 pyobvector 驱动连接,并针对 OceanBase 的特性做了兼容处理。
配置方式:
BUB_TAPESTORE_SQLALCHEMY_URL=mysql+oceanbase://user:pass@host:port/database一个数据库,承载 tape、会话、任务三类数据。并且,如果 OceanBase seekdb 无法满足业务的增长,也可以无缝切换到 OceanBase 这样久经考验的分布式数据库。
快速开始
部署 OceanBase seekdb
部署 OceanBase seekdb 的步骤详见:
https://docs.seekdb.ai/seekdb/zh-CN/deploy-overview。
注:可通过上面的文档,直接在您正在使用的本地 linux、mac、windows 环境中,快速部署服务器模式的 OceanBase seekdb。CPU 最低要求 1 核,可用内存最低为 2G。
部署 bubseek
git clone https://github.com/ob-labs/bubseek.git
cd bubseek
uv sync
uv run bub --help
uv run bub chat配置 OceanBase seekdb:
export BUB_TAPESTORE_SQLALCHEMY_URL=mysql+oceanbase://...说明:还需要配置适合 Agent 使用的模型的 API KEY,参考:https://github.com/ob-labs/bubseek
写在最后
做 bubseek 的初衷,不是想做一个“大而全”的数据平台或者通用 Agent,市面上已经有太多这样的东西了。
我们想做的,是一个真正能够理解自己、理解团队、理解数据的 Agent。当 Agent 成为团队的协作成员,它们的足迹不应该散落在各个地方无人问津。这些痕迹里,藏着团队的知识、流程的瓶颈、甚至 Agent 自己的能力边界。
更重要的是,企业内部对数据消费的需求是多样化的、定制化的。传统的方式是提需求、等排期、上线,周期长、成本高。bubseek 想提供另一种可能:告诉 Agent 你想要什么,它自己去对接数据、定义视图、执行分析、输出报告。
没有排期,只需要迭代。一切自然发生。
bubseek 0.1.0 是一次尝试,尝试把 bub 的能力打包成一个面向数据消费这个领域的发行版,同时也验证了 OceanBase seekdb 作为 Agent 数据底座的可行性。
它还不成熟。但基本的流程已经跑通:从入口接收需求,到执行输出结果,到记录存入 OceanBase seekdb。
后续,还会继续迭代。
立即试用 OceanBase 企业版,体验国产数据库能力
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。