buzz-relay 中继服务器版本演进深度解析:从 relay-v0.1.1 到 relay-v0.2.1 的能力地图

buzz-relay 中继服务器版本演进深度解析:从 relay-v0.1.1 到 relay-v0.2.1 的能力地图 buzz-relay 中继服务器版本演进深度解析从 relay-v0.1.1 到 relay-v0.2.1 的能力地图【免费下载链接】buzzA hive mind communication platform项目地址: https://gitcode.com/GitHub_Trending/buzz14/buzz本文基于 crates/buzz-relay/CHANGELOG.md 这一仓库内官方变更记录结合 buzz-relay 源码、配置与发布脚本系统梳理 Buzz 平台核心 WebSocket 中继服务器buzz-relay在 v0.1.1 → v0.2.0 → v0.2.1 三个版本间的完整演进脉络。读者将掌握buzz-relay 的多租户社区模型、NIP-43 成员治理、邀请链接、inter-relay mesh、推送、性能工程与安全加固等关键能力各自在哪个版本落地、对应哪些源码位置与配置项从而能准确评估、部署与排障这套中继系统。版本体系与发布机制buzz-relay在仓库内采用独立的语义化版本号不继承 workspace 公共版本。Cargo.toml 中明确注释buzz-relay ships as a pinnable artifact (ghcr.io/block/buzz), released on its own cadence via just release-relay. It does NOT inherit the workspace version.当前版本为0.2.1。发布流程由 Justfile 的release-relay目标驱动自动将版本号写入crates/buzz-relay/Cargo.toml、执行cargo update -p buzz-relay重生成Cargo.lock并将crates/buzz-relay/CHANGELOG.md、Cargo.toml、Cargo.lock以及buzz-core、buzz-db、buzz-auth、buzz-pubsub、buzz-search、buzz-audit、buzz-media、buzz-sdk、buzz-workflow、buzz-conformance、migrations/等关联路径一并纳入发布变更集。整个版本史浓缩为三个阶段版本里程碑relay-v0.1.1初始发布Initial releaserelay-v0.2.0邀请链接、原子化社区开通、社区审核 Phase 1、多租户全面重写、NIP-AM、OTel 追踪relay-v0.2.1大规模 bug 修复与能力收口私有托管 Agent 协议、mesh 生命周期验证、性能索引、安全加固relay-v0.2.0多租户与社区自治的奠基版本v0.2.0 是 buzz-relay 从单社区中继走向多租户社区平台的分水岭核心变更集中在以下方面。多租户重写community_id 成为服务端解析 keyMulti-tenant Buzz relay: community_id as a server-resolved key (comprehensive rewrite)#1321 与 main.rs 中得到体现启动时通过ensure_configured_community_for_bootstrap从BUZZ_RELAY_URL的主机名派生部署社区所有后续成员回填与 owner 引导都限定在该(community_id, pubkey)作用域内而非全局 pubkey。社区开通与所有权原子化 create-only 社区开通#1689操作员与 owner 不同——operator 跨越租户、可创建社区但本身不持有隐式成员行空列表默认完全禁用开通能力fail closed非法条目是启动硬错误而非静默跳过。原子化社区所有权转移#1845与持久化社区归档#1834、社区恢复访问可见性#2074、社区 unarchive 端点#1908、托管社区上限提升到 5 个#3829、按 owner 社区上限可配置BUZZ_MAX_COMMUNITIES_PER_OWNER#2599。每次开通发布成员快照#1761社区开通即发布成员快照事件跨 pod 通知修复见 #1291。NIP-11 工作区图标#1463及 v0.2.1 的 #3998 允许开放中继通过 kind:9033 设置图标管理员/owner 通过 kind:9033 命令设置经 NIP-11icon字段下发。社区审核 Phase 1Community moderation Phase 1: reports, bans/timeouts, audit, tombstones, relay-DM notices#1616建立了审核闭环举报reports、封禁/超时bans/timeouts、审计audit、墓碑tombstones与中继 DM 通知。配套的管理能力包括管理端报告详情展示举报内容#3149、只读部署审核仪表盘#1999、反馈作用域管理附件代理#2059、私有产品反馈 sidecar#1857。邀请链接与加入流程中继邀请链接全套mint claim landing page deep link#1668 实现铸造与校验。邀请 QR 码与移动端直接加入#1957、nostr 身份绑定深链流程#1648、限次邀请链接#3141。加入策略join policy可选中继加入策略应用于所有加入流程#1894。NIP-AM 与 Agent 生态NIP-AM 持久化加密 Agent 回合指标kind 44200#1441relay/nips/acp 三方协作。Agent 定义规范化kind:30175 Phase 2#1655Agent owner 可编辑/管理 agent 内容#1403Agent owner 可删除 agent 消息kind:5#1519。NIP-34 git PR CLI 支持#1279repository-first projects with git workflows#1471。性能与可观测性E1E3降低 ingest/fan-out 的 DB 往返#1454PR 描述给出 ack p99 −7–16%、fd p99 −6–28%、p999 尾部 −29–53%相对 PR #1453 tip的实测收益配合defer post-commit dispatch 与避免 verify clone#1453。有界并发多 filter 查询执行S2#1457、outbound WebSocket 数据帧批量发送#1464、fan-out EVENT 帧只序列化一次#1459、reaction ingest 原子化#1458。e-tag 包含关系 GIN 索引 delta profile fetch#1514PR 描述 scroll-back 约 2.1s/页。OpenTelemetry 追踪 保留 Prometheus 指标#1398当前 main.rs 同时安装 JSON 结构化 stdout 日志与设置OTEL_EXPORTER_OTLP_ENDPOINT时的OTLP gRPC 追踪层service 名可由OTEL_SERVICE_NAME覆盖。按社区用量指标#1723与稳定 leader 门控用量指标#1814当前实现通过 Postgres 咨询锁USAGE_METRICS_LOCK_KEY选举 leader由 leader 独占执行 DB 派生快照与存储扫描见 main.rs。仓库名注册表迁入 Postgres 放宽 RWM chart 门槛#1432支撑 HA 中继git_repo_names表迁移0002_git_repo_names.sql。基础设施配置Redis TLSrediss://如 ElastiCache#1417main.rs 在启动最早阶段显式安装 ring CryptoProviderrustls::crypto::ring::default_provider()否则 rustls 因同时编译进 aws-lc-rs 与 ring 无法自动选择 provider 而 panic。S3 IRSA/credential-chain 认证 可配置签名 region#1406中继媒体读不再需要 bearer-token auth#1444。攻击面加固#1369。GUI read-model 重构服务端组装 channel windowsCorrect pagination relay 签名边界#1500实时 thread-summary push回复 ingest 更新 badge 计数#1521。relay-v0.2.1能力收口、安全加固与性能兑现v0.2.1 约 100 条变更把 v0.2.0 打下的多租户地基做实同时补齐 Agent 协议、mesh、推送与 Git 生态。私有托管 Agentprivate managed agent定义私有托管 Agent 线协议#4593 与 private_managed_agent.rs。ingest 接受 kind:30179 私有托管 Agent 事件#5133。SDK 保留 message/forum 事件构建器中的 self-mention p 标签#4975。kind:30175 增加 author-only-unless-shared 读门控#2768控制 NIP-OA owner 证明是否可授予封闭中继的成员访问权默认false。kind:30178 团队目录读操作以共享标签门控#3358。经验证 owner 解析 agent#2615后因回归被 #3168 revert再在 CLI 侧收口。Relay-driven mesh 生命周期用真实节点证明 relay 驱动的 mesh 生命周期——discover、join、infer、deny#3862CI 中通过cargo run -p buzz-relay --example mesh_admission_smoke与mesh_agent_e2e运行Justfile。跨 pod 隧道 huddle 传输buzz-relay-mesh#1670升级内嵌 mesh 至 v0.74 并加固共享计算split 1/2#3741升级 runtime、强制成员、新增共享计算 provider#1656。mesh 是严格 opt-in仅当显式设置BUZZ_MESHon才绑定 UDP 端口并写入 Redis 注册表镜像升级且环境变量未动时行为与单实例完全一致无回归滚动的设计目标见 config.rs。BUZZ_MESH_DEMO_ECHO是测试台专用的可靠流 echo 消费者非产品功能。NIP-43 成员治理与审核收口成员与授权require_relay_membership开启时每个已认证请求还要通过relay_members表成员检查config.rsRELAY_OWNER_PUBKEY64 位 hex必须精确malformed 值是启动错误因为它可能充当 break-glass operator 根在首次启动自动以owner角色引导入relay_members。成员检查从只读副本提供#4124把 lag-tolerant 的中继成员查询路由到READ_DATABASE_URL。审核安全NIP-43 relay-admin kinds 9030–9033 强制执行持久社区封禁#3128kind:9000 角色变更双向授权#3017被封禁 actor 禁止执行审核命令BUZZ-SEC-007#1915actor-tag UI 冒名防护#1931中继运行时状态按社区隔离#1658。Git 权限联动被封禁的中继成员撤销 git 访问#4608。邀请、加入与渠道修复私有渠道邀请限制#4612私有渠道邀请仅限成员。渠道名去除前导 # 前缀#2250max-length 自定义 emoji 支持#3833。频道目录查询分页#2181、桌面端完整频道目录分页#1690。性能与可靠性工程channel-id 查找索引 跳过纯 trace 读#4647对应迁移0027_channels_id_lookup_index.sql。Postgres 连接池大小可配置默认 50#3191BUZZ_DB_POOL_SIZEdeadpool 的默认CPU_COUNT*2在 2-vCPU pod 上只有 4容易成为高并发瓶颈BUZZ_DB_READ_POOL_SIZE可独立于写池调节。Redis 连接池大小可配置默认 16#2521BUZZ_REDIS_POOL_SIZE。滞后容忍读路由到可选 Postgres 只读副本#2084READ_DATABASE_URLBUZZ_REPLICA_READ_MAX_AGE_MS毫秒默认 0 关闭。旧名BUZZ_REPLICA_HEAD_MAX_AGE_SECS是硬启动错误而非别名——静默按秒解释会导致 1000 倍预算偏差。便携心跳 token fence snapshot-local reader 路由#3268buzz-db的 replica fence 机制保证 cursor 页只在已验证完整重放的史上数据才路由到副本main.rs 中spawn_fence_probe验证失败则 fence 关闭、cursor 全部走 writer。避免订阅锁反转#3413已知永久渠道跳过 TTL 期限 bumpT1a 写放大#2125gate push enqueue on live leases batch matcher pipelineT1b/T1a-repair/T2b#2145减少心跳频率#3783。WebSocket 1012 restart-close 时序 fuzzBUZZ_DRAIN_JITTER_MS#4542与graceful drain 时向所有客户端发送 1012 restart close#2575BUZZ_DRAIN_JITTER_MS控制每连接在[1, jitter]毫秒内随机延迟发送 1012 关闭帧打散重连峰值默认 0 表示瞬时全关上限MAX_DRAIN_JITTER_MS 20_000。完整停机预算见 main.rs5s 宽限 最多 20s jitter 5s close-ack 30s 硬排空SIGTERM 到强退最坏 35s适配 chart 的terminationGracePeriodSeconds: 60。安全加固阻断 IPv6 transition SSRF 目标#2801workflow webhook 绕过系统代理#2800。媒体读取要求认证#4610以及 v0.2.0 的 #1926GET/HEAD /media/*一律要求 Blossomtget认证加中继成员旧的BUZZ_REQUIRE_MEDIA_GET_AUTH/BUZZ_REQUIRE_MEDIA_READ_AUTH是惰性变量启动时若设置会告警提示移除config.rs。客户端剥离媒体元数据 中继拒绝#2006动图上传消毒#2524Android 上传消毒#2188分享时保留 agent/team 快照的 tEXt 块#2438。共享中继准入限制BUZZ-SEC-019#1917中继 WebSocket 准入限制修复BUZZ-SEC#1682Git 并发许可贯穿流式传输BUZZ-SEC-018#1916。审计哈希按 Postgres 存储精度对齐#2638审计日志禁用开关#2134BUZZ_AUDIT_ENABLED默认 true。Git 托管与 workflowgzip 编码的 git smart-HTTP 请求体解压#2670Git 读操作有界化与观测#2167Git pack 水合缓存#2169manifest 限制前压缩 Git packs#2172不可达 Git 对象盘点#2264随后被 #2275 revertGit scratch 路由到配置卷#1884Git Web GUI 单独门控#1901BUZZ_SERVE_GIT_WEB_GUI。channel binding 工具 未绑定 repo 的 author 补救#3626允许删除默认分支#4297NIP-OA 委派随 auth 事件携带#2120project branch workflow 可靠性#2213。workflow触发者绑定到签名事件#4607。协议与 CLI 联动NIP-11 max_limit 与 REQ 上限对齐#3635 明确max_limit使用与 REQ 路径 clamp 相同的buzz_db::DEFAULT_MAX_PAGE_LIMIT常量广告值与强制值不会漂移。开放中继可设置 NIP-11 工作区图标kind:9033#3998。accept kind:30621 multi-repo projects at ingest#3171。users set-status 命令NIP-38#3253HTTP bridge 请求记录 NIP-98 pubkey 归因#2206。推送NIP-PL接受的中继事件作为 wakes 投递#1866公开 APNs gateway#1770。当前由BUZZ_PUSH_ENABLED默认 false整体开关 matcher 与 delivery workermain.rs网关 URL 必须是精确的 HTTPS/v1/deliveries/apns形状超时限定 100–10000ms默认 2000ms。部署与杂项S3 URL addressing style 可配置#3400BUZZ_S3_ADDRESSING_STYLEpath|virtual默认 path 以兼容内置 MinIOS3-truth 按社区存储扫描#2044桌面ACP 每 (agent, community) 启动 harness#2122rich link previews#3818桌面从已登录手机恢复身份#4845独立 pairing relay 加入 Helm chart#1799去除遗留 MCP toolsets 配置#1776datastore tracing plumbing#2760usage metrics advisory-lock 测试隔离到 scratch DB#3670。关键配置速查源码级默认值以下环境变量在 config.rs 中解析均为部署 buzz-relay 时的核心旋钮环境变量默认值说明BUZZ_BIND_ADDR0.0.0.0:3000HTTP/WebSocket 监听地址DATABASE_URLpostgres://buzz:buzz_devlocalhost:5432/buzzPostgres 连接串READ_DATABASE_URL未设置只读副本未设置则读全部走 writerREDIS_URLredis://localhost:6379Redis 连接串支持rediss://BUZZ_DB_POOL_SIZE50写池大小0/非法值回退默认BUZZ_DB_READ_POOL_SIZE继承写池读副本池独立调节BUZZ_REDIS_POOL_SIZE16Redis 池大小BUZZ_MAX_CONNECTIONS10000最大并发 WebSocket 连接数BUZZ_MAX_CONCURRENT_HANDLERS1024最大并发消息处理器数BUZZ_MAX_FRAME_BYTES512 * 1024最大入站 WebSocket 帧须超过 NIP-44 加密后的事件体积BUZZ_SEND_BUFFER1000每连接出站缓冲消息条数BUZZ_SLOW_CLIENT_GRACE_LIMIT15慢客户端被取消前可容忍的连续 buffer-full 次数BUZZ_DRAIN_JITTER_MS01012 重启关闭帧的每连接随机延迟上限上限 20000msBUZZ_REPLICA_READ_MAX_AGE_MS0关闭副本读的陈旧度预算BUZZ_REPLICA_HEAD_MAX_AGE_SECS是硬错误BUZZ_REQUIRE_RELAY_MEMBERSHIPfalse启用时每个已认证请求须通过relay_members检查RELAY_OWNER_PUBKEY未设置64 位 hexmalformed 是启动错误开启成员强制时必填RELAY_OPERATOR_PUBKEYS空关闭开通逗号分隔 64 位 hex非法条目启动即报错RELAY_OPERATOR_API_ORIGIN未设置仅开通端点需要缺省时这些端点请求期 fail closedBUZZ_ALLOW_NIP_OA_AUTHfalseNIP-OA owner 证明是否可授予封闭中继成员访问权BUZZ_MESHoff仅显式on才形成 inter-relay meshBUZZ_HUDDLE_AUDIO_AVAILABLEtrue多 pod 水平扩展部署必须设为falseBUZZ_AUDIT_ENABLEDtruetamper-evident 事件/媒体审计日志开关BUZZ_PUSH_ENABLEDfalseNIP-PL 推送 matcher/delivery worker 总开关BUZZ_HEALTH_PORT/BUZZ_METRICS_PORT8080/9102健康探针与 Prometheus 指标端口独立于应用路由BUZZ_S3_ADDRESSING_STYLEpathpath或virtualBUZZ_GIT_MAX_PACK_BYTES500 MB单次 push 最大 packBUZZ_GIT_MAX_REPO_BYTES默认 1 GB 限制一次 repo 请求总物化字节从变更记录到源码的验证路径若要在当前仓库中亲手验证以上能力推荐以下路径多租户启动引导、owner bootstrap、NIP-43 成员回填main.rs 中ensure_configured_community_for_bootstrap、backfill_from_allowlist、bootstrap_owner调用序列。配置解析与全部环境变量完整读取 config.rs2378 行含大量 fail-closed 校验与测试用例如admin_auth_junk_values_all_fail_closed、malformed_relay_owner_pubkey_is_a_startup_error_not_warn_and_ignore、drain_jitter_defaults_off_and_rejects_junk。优雅停机预算与 1012 jitter drainmain.rs 的serve与shutdown_signal注释完整推演了 5s30s 预算与terminationGracePeriodSeconds: 60的关系。NIP-11 文档与限制声明nip11.rsSUPPORTED_NIPS常量为[1, 2, 10, 11, 16, 17, 23, 25, 29, 33, 38, 42, 50, 56]NIP-43 仅在启用成员强制且有稳定签名 key 时才广告。mesh 生命周期示例examples/mesh_relay_lifecycle_smoke.rs 等 6 个示例Justfile 中mesh_*目标的运行方式。中继自身的依赖边界Cargo.toml 可见其整合buzz-core、buzz-db、buzz-auth、buzz-pubsub、buzz-audit、buzz-search、buzz-media、buzz-workflow、buzz-relay-mesh、buzz-conformance等模块构成完整的平台中控。结语从relay-v0.1.1的初始发布到relay-v0.2.0的多租户重写再到relay-v0.2.1的能力收口buzz-relay 的演进主线清晰可辨社区身份服务端解析、成员治理与审核闭环、邀请与加入流程、inter-relay mesh 互联、push 触达、Git 托管以及贯穿始终的性能工程与 fail-closed 安全设计。这份 CHANGELOG 不仅是发布历史更是一张可操作的运维地图——每一个条目都能在当前仓库源码、迁移脚本migrations/与 Helm chartdeploy/charts/buzz中找到对应实现与配置入口。部署者据此可以精确选择版本能力、配置环境变量并理解其默认值语义从而安全地完成从单社区到多租户社区平台的演进。【免费下载链接】buzzA hive mind communication platform项目地址: https://gitcode.com/GitHub_Trending/buzz14/buzz创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考