当 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,而是给它一把钥匙,让它自己进房间。

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

目录
相关文章
|
15小时前
|
人工智能 Rust JavaScript
单会话 27.8 MB,比 Claude Code 省 13 倍内存——我试了 Rust 写的 jcode
jcode是Rust编写的轻量级AI编程Agent框架,单会话仅占27.8MB内存(比Claude Code省13倍),冷启动仅14ms。支持多会话并行、Swarm协作与可选本地embedding,专为内存受限设备(如8GB MacBook Air)优化,兼顾性能与灵活性。(239字)
29 3
|
15小时前
|
人工智能 程序员 Python
让 Claude Code 少说废话、直接给答案——我试了这个 5200 Star 的技能包
i-have-adhd 是一款开源AI编程助手“输出风格技能包”,专治AI回答啰嗦、废话多、行动指引模糊的痛点。它强制AI首句给动作、步骤编号、禁用客套话,让调试/编码指令清晰可执行。MIT协议,支持Claude Code、Cursor等主流工具,安装即用。(239字)
25 2
|
15小时前
|
人工智能 JavaScript Linux
让 Claude Code 用我已经登录的浏览器——ego-lite 这个设计太实用了
ego-lite是Citro Labs推出的AI浏览器,让Agent直接复用你的日常登录态,无需重复登录或绕过2FA。通过隔离Space实现任务隔离与状态共享,Snapshot技术将页面token降低99%,支持macOS,已获周增4700 Star。
25 1
|
16小时前
|
人工智能 负载均衡 API
一个端点接 290 家 AI 服务商--我拆解了周增 7700 Star 的 OmniRoute
OmniRoute 是一款 MIT 协议的本地 AI 网关(TS 编写),聚合 290+ 服务商、500+ 模型,提供 OpenAI 兼容接口。支持智能 Combo 路由、12 因子 auto 选模、三层弹性容错与 RTK 等 12 种 Token 压缩引擎,显著提升免费额度利用率与稳定性。(239 字)
29 1
|
15小时前
|
SQL 人工智能 文字识别
阿里把内部用了两年的 AI 代码审查工具开源了——我跑了一遍 Open Code Review
阿里开源的 Open Code Review 是一款工程化 AI 代码审查工具,采用“确定性模块 + LLM Agent”混合架构,精准定位问题、严控误报率,支持 Git 差异审查与全量扫描,已落地服务数万开发者。周增星 4750,Apache-2.0 协议,轻量易集成。(239 字)
28 2
|
2月前
|
人工智能 数据可视化 定位技术
CodeGraph vs Understand-Anything:一个给 Agent 查代码地图,一个把项目变成可追问图谱
CodeGraph 与 Understand-Anything 同解“代码迷路”之困:前者是面向编程 Agent 的本地索引工具,专注快速查询调用链、影响范围与上下文;后者是面向人与团队的交互式项目图谱,提供可视化架构、业务域导览与系统理解。二者互补而非替代——一重执行精度,一重认知全局。(239字)
493 1
CodeGraph vs Understand-Anything:一个给 Agent 查代码地图,一个把项目变成可追问图谱
|
2月前
|
人工智能 安全 前端开发
ECC 讲透:Claude Code 的全能增强包,不只是 Agents 和 Skills
Everything Claude Code(ECC)是2026年爆火的AI编程增强框架,非简单提示词合集,而是集Agents、Skills、Rules、Hooks、MCP与AgentShield安全扫描于一体的“AI编程操作系统”,深度优化Claude Code等Agent Harness,已获近19万Star。(239字)
383 2
ECC 讲透:Claude Code 的全能增强包,不只是 Agents 和 Skills
|
2月前
|
人工智能 安全 前端开发
10|Agent Harness 的未来:从代码助手到工程协作系统
AI编程正迈入第三阶段——Agent Harness:AI不再仅补全代码或回答问题,而是深度融入研发全流程——读仓库、改文件、跑测试、连工具、协作者。未来核心在于“可治理的工程协作”,而非单纯自动化。(239字)
220 8
|
2月前
|
人工智能 自然语言处理 调度
Matt Pocock 的 21个skill的仓库火了:本周的明星
mattpocock/skills 是一套面向AI编程代理的工程化技能库(当前稳定公开18个),将资深工程师的标准化工作流(需求建模→开发→工程管控→知识沉淀)转化为可按需加载、带资源依赖的模块化Skill,非普通Prompt,显著提升代码质量与协作效率。(239字)
547 0
|
2月前
|
人工智能 API 开发工具
Opencode必看!Spec-kit(SDD)让你AI编程事半功倍
本文介绍GitHub官方推出的Spec-Kit工具,它作为标准化软件设计文档(SDD)方案,深度适配OpenCode,解决AI编程中需求模糊、改动困难、质量不稳、版本混乱等痛点。5步即可上手:定原则、写需求、定方案、拆任务、自动生成代码,大幅提升AI编程效率与工程规范性。(239字)
465 1