当 AI Agent 不再是 Bot,而是你的"同事"——我花两天拆解了 Block 开源的 Buzz

简介: Buzz是Block开源的Rust协作平台,基于Nostr协议,首创“Agent即成员”范式:人类与AI Agent共用统一签名事件流,各自持独立密钥对,授权可验证、审计可追溯。架构极简——一张事件表承载聊天、代码、CI等全部操作,Git存储采用对象存储+CAS指针,支持高并发Agent协同。

上周刷 GitHub Trending,一个 Rust 项目连续三天霸榜,Star 周增量破万。点进去一看——Block(原 Square,Jack Dorsey 的公司)开源的,名字叫 Buzz

一句话介绍:一个让人类和 AI Agent 在同一个工作空间里协作的通信平台,基于 Nostr 协议,用 Rust 写的。

我花了两天时间把它的架构文档、源码结构翻了一遍,越看越觉得这东西的设计思路和市面上那些"给 AI 套个壳"的协作工具完全不是一个路子。今天聊聊我的发现。


一、先搞清楚:Buzz 到底是什么?

很多人第一反应:这不就是个 Slack 平替?

不是。Slack 的核心是聊天应用,API 是后加的,Bot 是二等公民。Buzz 反过来——协议优先,先有一套统一的签名事件协议,聊天、代码审查、工作流触发全都是这条协议上的事件。

简单说:

  • 人类发消息 → 一条签名事件
  • Agent 提交代码补丁 → 一条签名事件
  • CI 跑完发布结果 → 一条签名事件
  • 工作流审批 → 一条签名事件

所有东西汇入同一个事件日志,同一个搜索索引。没有"消息表""Bot 操作表""审计表"这种割裂的存储——一张事件表搞定一切

┌─────────────────────────────────────────────────┐
│              Buzz 工作空间                        │
│                                                  │
│   人类用户          AI Agent          CI/CD      │
│      │                │                │         │
│      │    各自持有独立密钥对(secp256k1)         │
│      └────────────────┼────────────────┘         │
│                       ▼                          │
│            ┌─────────────────────┐               │
│            │   统一签名事件日志    │               │
│            │  (Nostr Protocol)  │               │
│            └─────────────────────┘               │
│                       │                          │
│        ┌──────────────┼──────────────┐           │
│        ▼              ▼              ▼           │
│   PostgreSQL        Redis         S3/MinIO       │
│  (事件存储+全文搜索)  (Pub/Sub)     (媒体/Blossom) │
└─────────────────────────────────────────────────┘

二、最让我眼前一亮的设计:Agent 拥有自己的密钥对

这是 Buzz 和传统 Bot 最大的区别,也是我反复读了三遍文档才确认的设计。

传统做法

Bot 拿到人的 API Token,以人的身份发消息。结果审计日志里分不清哪条是人发的、哪条是 Bot 代发的。Token 泄露 = 人整个身份被冒用。

Buzz 的做法

每个 Agent 生成自己独立的 secp256k1 密钥对,有自己的身份。人作为"所有者"签署一个授权凭证,限定 Agent 能干什么。

验证链路是这样的:

Agent 发布事件
    │
    ▼
① 用 Agent 公钥验证事件签名 → 确认是它发的
    │
    ▼
② 事件中携带 authorization 标签 → 追溯授权凭证
    │
    ▼
③ 用人类所有者公钥验证授权凭证签名 → 确认授权真实
    │
    ▼
④ 检查授权范围 / 过期时间 / 速率限制 → 确认在权限内

我实际看了一个授权凭证的结构,长这样:

{
   
  "pubkey": "人类所有者的公钥",
  "kind": "Agent Authorization",
  "tags": [
    ["delegatee", "agent的公钥"],
    ["scope", "workspace:channel:dev:read,write"],
    ["scope", "git:repo:myproject:read,review"],
    ["expiration", "1787280000"],
    ["max_events_per_hour", "100"]
  ],
  "sig": "所有者的Schnorr签名"
}

关键点:Agent 用自己的身份签名工作内容,授权凭证只证明"谁授权了它"。Agent 密钥泄露?撤销那个授权就行,人的主身份不受影响。员工离职?移除他的授权,他名下所有 Agent 自动失效。

这套设计本质上是把可验证凭证(VC)的思想搬进了协作平台。


三、实战场景:分支即房间(Branch as Room)

文档里有个场景我觉得特别能体现 Buzz 的设计哲学,我按自己的理解画了个完整流程:

开发者创建功能分支 feature/login
         │
         ▼
    Buzz 自动创建频道 #feature-login
         │
         ▼
    开发者推送代码补丁
         │
         ▼
    补丁作为 NIP-34 事件落地(签名事件)
         │
         ├──────────────────────┐
         ▼                      ▼
    CI 跑完发布结果         Code Review Agent
    (签名事件到频道)       自动做首轮审查
         │                      │
         ▼                      ▼
    队友对审查意见        Agent 提交审查意见
    添加 reaction         (用自己的密钥签名)
         │                      │
         └──────────┬───────────┘
                    ▼
           合并决策 + 所有证据
           共存于同一频道

注意几个细节:

  1. Agent 的审查意见是它自己签名的——不是冒充人发的,审计追踪里清清楚楚
  2. CI 结果是事件——不是外部系统通过 Webhook 推进来的独立记录,而是同一个事件日志的一部分
  3. 半年后搜"登录功能"——能一次性搜到代码、讨论、审查、CI 结果,因为它们都是同一个频道里的事件

这就是"协议优先"的好处:不需要做复杂的关联和聚合,天然就在一个流里


四、技术栈拆解:为什么是 Rust + Nostr?

Rust 侧

Buzz 是一个 Rust workspace,拆成二十多个 crate:

分类 核心 Crate 干什么
协议层 buzz-core 零 I/O 的类型定义、NIP-01 过滤器、Schnorr 验证
服务层 buzz-relay Axum WebSocket + REST,核心服务
buzz-db PostgreSQL 数据层
buzz-auth NIP-42/98 认证、限流
buzz-pubsub Redis 发布订阅、在线状态
buzz-audit 哈希链审计日志
Agent 层 buzz-cli Agent 优先的 CLI,JSON in / JSON out
buzz-acp ACP 测试框架,接 Goose/Claude Code/Codex
buzz-workflow YAML 自动化工作流
Git 层 git-sign-nostr Nostr 签名 Git

我特别关注了 buzz-cli 的设计——JSON in / JSON out,完全为 LLM 工具调用设计。Agent 调用它就像调一个标准 CLI 工具,不用搞复杂的 SDK 集成。

Nostr 侧

Buzz 选 Nostr 不是赶时髦,是因为 Nostr 的三个特性正好匹配需求:

  1. 加密身份原生:secp256k1 密钥对是协议层的东西,不是后加的
  2. 统一事件模型:一套 JSON 结构覆盖所有操作
  3. 中继可替换:数据属于你,中继只是管道

需要澄清的"去中心化"

网上不少文章说 Buzz 是"P2P 去中心化通信平台",我翻了架构文档,这个说法不准确。Buzz 明确写了:

  • 没有 P2P 事件交换
  • 没有 Gossip 层
  • 没有中继间复制

它的"去中心化"体现在部署和所有权层面——你可以跑自己的中继,保留自己的域名和数据。实际使用中,一个工作空间对应一个中继,是单中心的。


五、Git 存储的巧思:对象存储 + Manifest 指针

这部分我觉得是整个架构里最精巧的设计,值得单独说。

Buzz 的 Git 仓库不放在传统 Git server 上,而是用对象存储 + Manifest 指针的方案:

┌─────────────────────────────────┐
│         对象存储层(S3/MinIO)    │
│  ┌──────────┐  ┌──────────┐     │
│  │ abc.pack │  │ def.pack │     │
│  │ (不可变)  │  │ (不可变)  │     │
│  └──────────┘  └──────────┘     │
│  content-addressed,写操作幂等   │
└──────────────┬──────────────────┘
               │ 引用
┌──────────────▼──────────────────┐
│    Manifest 层(manifest.json)  │
│    可变,CAS 原子更新            │
└──────────────┬──────────────────┘
               │ 通知变更
┌──────────────▼──────────────────┐
│    事件层(Git Push 事件)       │
│    通知变更,不定义变更          │
└─────────────────────────────────┘

推送流程三步走:

  1. 先写对象:Git 对象打包成 packfile 上传到对象存储,content-addressed 所以幂等
  2. 原子更新指针:CAS(compare-and-swap)操作更新 manifest 指针
  3. 发事件通知:发布 Git Push 事件宣布变更

文档里提到他们对这套流程做了 TLA+ 形式化验证,证明了三个属性:持久性(并发推送不丢数据)、可重建性(从 manifest 和 packfile 可完整重建仓库)、并发安全性。

这个设计直接面向 Agent 大规模并发操作的场景——传统 Git server 在几百个 Agent 同时推送时会成为瓶颈,而对象存储天然支持高并发写入。


六、我的判断:值得关注的三个理由

第一,"Agent 即成员"范式可能是未来协作软件的方向。 现在的 Bot 模式是过渡态——随着 Agent 能力增强,它必然需要独立身份、独立审计、独立权限管理。Buzz 把这件事从协议层就做对了。

第二,Rust + Nostr 的组合很务实。 Rust 保证性能和安全性,Nostr 提供现成的签名事件协议,不用从零造轮子。二十多个 crate 的拆分也说明工程成熟度不低。

第三,Git 存储层的设计有借鉴价值。 对象存储 + CAS 指针的方案,对于任何需要处理高并发写入的系统都有参考意义。

但也要泼盆冷水

  • 项目标注 maturity: prototype,还在快速迭代
  • 自托管需要维护 Postgres + Redis + S3 + Relay,运维成本不低
  • Nostr 协议相对小众,团队有学习成本
  • 密钥管理的 UX 是硬伤——私钥丢失 = 身份永久丢失

结语

Buzz 不是终点,但它提出了一个值得认真对待的问题:当 AI Agent 成为团队的常驻成员时,协作平台该怎么设计?

它的回答是——从协议层开始,让人和 Agent 同构。不是给 Agent 开个 API,而是给它一把钥匙,让它自己进房间。

这个思路,我觉得是对的。

目录
相关文章
|
21天前
|
SQL 人工智能 文字识别
阿里把内部用了两年的 AI 代码审查工具开源了——我跑了一遍 Open Code Review
阿里开源的 Open Code Review 是一款工程化 AI 代码审查工具,采用“确定性模块 + LLM Agent”混合架构,精准定位问题、严控误报率,支持 Git 差异审查与全量扫描,已落地服务数万开发者。周增星 4750,Apache-2.0 协议,轻量易集成。(239 字)
345 2
|
21天前
|
人工智能 负载均衡 API
一个端点接 290 家 AI 服务商--我拆解了周增 7700 Star 的 OmniRoute
OmniRoute 是一款 MIT 协议的本地 AI 网关(TS 编写),聚合 290+ 服务商、500+ 模型,提供 OpenAI 兼容接口。支持智能 Combo 路由、12 因子 auto 选模、三层弹性容错与 RTK 等 12 种 Token 压缩引擎,显著提升免费额度利用率与稳定性。(239 字)
200 1
|
数据库连接 调度 数据库
新人问我数据库的connect和session的区别
新人问我数据库的connect和session的区别
|
6月前
|
人工智能 自然语言处理 安全
2026年阿里云无影云电脑OpenClaw(Clawdbot)一键部署全攻略,新手小白抄作业
2026年,OpenClaw(原Clawdbot、Moltbot)凭借“自然语言指令+主动执行任务”的核心能力,成为AI办公自动化的标杆工具,从文件管理、网页操作到多渠道联动,它能像“专属数字员工”一样,帮你搞定所有琐碎事务,彻底解放双手。但对零基础新手小白来说,传统部署方式中的环境配置、依赖安装、参数调试等操作,曾是难以跨越的门槛——直到阿里云无影云电脑推出OpenClaw(Clawdbot)专属一键部署方案,彻底打破了这一困境。
1156 16
|
1月前
|
人工智能
2026 GOAI 世界人工智能开源大赛—新智基座 Agent Infra 赛道正式启动! ¥190万总奖池等你挑战!
2026 GOAI 世界人工智能开源大赛—新智基座 Agent Infra 赛道正式启动!¥190万总奖池等你挑战!
1615 10
|
6月前
|
人工智能 API 开发者
藏不住了!阿里云Coding Plan重磅上线四大模型,7.9元就能玩转AI
阿里云Coding Plan上线Qwen3.5、GLM-5、MiniMax M2.5、Kimi K2.5四大顶级开源模型,Lite套餐首月仅7.9元,享1.8万次请求;Pro套餐39.9元/月,支持复杂编码任务。支持Qwen Code等多工具切换,高稳定、高Token额度。(239字)
|
1月前
|
SQL 人工智能 架构师
GPT-5.6 Sol、Terra、Luna 怎么选?听我一句,别一上来就用最贵的
本文详解GPT-5.6三大模型(Luna/Terra/Sol)的差异化定位:Luna适合批量简单任务,Terra是日常开发写作的性价比首选,Sol专攻高成本、强推理的复杂攻坚。倡导“按需选模”,而非盲目追求最强——AI使用成熟度,正体现在懂得何时省、何时投。(239字)
959 2
|
1月前
|
人工智能 开发工具 git
02|拆 loopat 架构:Loop、Sandbox、Vault 到底解决了什么
本文是《loopat三篇实践笔记》的第二篇,深入剖析其核心架构设计:Loop(可复现工作现场)、Sandbox(沙箱隔离)、Vault(凭据分层)、Git worktree(任务边界)等,揭示其为何拒绝简单聊天式Agent,转而构建可审计、可沉淀、可协作的AI操作系统雏形。(239字)
137 1
|
1月前
|
人工智能 JSON NoSQL
蹲了一个偏冷门的 OpenSRE:让 LLM 别再"建议",直接吐工单
OpenSRE(Tracer-Cloud/opensre)是一个专注SRE事故调查的开源AI Agent框架,摒弃LLM模糊的“散文式建议”,强制输出带证据链、可执行字段的结构化工单(JSON),直连PagerDuty/Jira等系统。采用LangGraph编排、PostgreSQL+Redis,强调可观测性与生产可靠性,是AI从“副驾”迈向“工单生成器”的关键实践。(239字)
225 0
蹲了一个偏冷门的 OpenSRE:让 LLM 别再"建议",直接吐工单
|
1月前
|
存储 缓存 运维
给 SRE agent 加"长记忆":我自己写一套,对比 Headroom 的 SharedContext 和 Learn
本文介绍为SRE Agent构建“长记忆”能力的实践:自研轻量级故障经验库`incident-kb`(SQLite+向量检索),专注存储结构化故障案例(症状指纹/根因/处置等),强调人工审核入库、告警入口实时注入。对比Headroom的SharedContext(存工作杂事)与Learn(提炼规则),三者定位不同、互不可替代,需分层建设。
95 0

热门文章

最新文章