Google 开源了 SAM(Sovereign Agent Mesh),基于 OIDC + Biscuit 令牌实现跨云/本地/边缘的 AI Agent 发现与 MCP 工具互调,无需暴露任何内部端点,支持严格默认拒绝的离线授权模型。
人工智能
google/sam 不是 Segment Anything(分割一切模型)。此处的 SAM 是 Sovereign Agent Mesh,一个面向自主 AI Agent 的 Apache-2.0 网络项目。它要解决的问题很具体:AI Agent 现在运行在云服务器、本地数据中心、笔记本、Raspberry Pi 和 Android 设备上。让它们共享工具通常意味着要将内部脚本、LLM 端点或私有 API 暴露在公共互联网上。SAM 的替代方案是一个零配置、零信任的 P2P 覆盖网络——更像是私有 VPN,但作用域限定在基于 Model Context Protocol 的 Agent 间工具共享。节点自动发现彼此、穿透 NAT,并以加密方式授权每次调用。
注意:该仓库有明确的免责声明:这不是 Google 官方支持的产品。
部分工程已具备生产形态,但公共网格仍被标记为 beta 测试网。
当前交付物:Go 二进制文件、安装脚本、ghcr.io Docker 镜像、charts/sam-mesh Helm chart、生产级 Kubernetes 指南,以及 Android/iOS 支持。公共测试网是 bananas.sam-mesh.dev。对于真实工作负载,请自行托管控制平面。文档称之为"DIY 模式",这是实现数据和策略完全控制的路径。
公司层面:最契合的是跨多个网络边界运行 Agent 的中端市场和 enterprise 工程团队。单 VPC 内的初创公司收益较小;一旦 Agent 跨越云、数据中心和笔记本,价值就显现出来了。
行业:金融服务、医疗、公共部门与国防,以及工业或机器人边缘集群。广义上讲,任何无法将内部工具发布到互联网的受监管组织。
应用:跨云 MCP 工具共享、混合本地到云的 Agent 调用、经纪推理端点、带凭证注入的沙盒 Agent,以及池化预热 Worker。
架构:三个二进制文件
sam-control-plane — 身份注册、token 发放、策略分发。
sam-router — libp2p 引导点和 GossipSub 路由覆盖层。
sam-node — P2P 客户端,提供网格传输、自愈连接和本地 MCP HTTP 接口。
节点通过 sam-node join 加入,然后通过 sam-node run 运行。libp2p 使用 5001/udp 和 5002/tcp;本地 MCP API 默认端口为 8080。
身份:OIDC 入,Biscuit 出
这是有趣的部分。控制平面验证 OIDC JWT,然后将声明转换为 Datalog 事实并封装进 Biscuit token。sub 变为 user(...),每个 group 变为 group(...),对等方 ID 绑定为 client_peer_id(...)。
结果:节点可以离线授权。节点对照本地规则评估出示的 token,无需回调控制平面。
执行策略是严格的默认拒绝。访问需要显式的 capability fact,如 granted_service_exact(...)。没有内置异常——连发现目录 system://sam.catalog 也必须被授予。服务使用严格的 type://name 约定,支持通配符(mcp://*、mcp://build-runner.*)。
每个请求运行两阶段管道。第一阶段根据禁止列表和撤销缓存对连接进行门控。第二阶段精确执行两次 Biscuit authorizer 通过。第一次覆盖节点自身的身份 token 以发出 target_fact 断言。第二次覆盖调用者的 token。基线检查通过要求连接的对等方 ID 与 token 匹配来阻止重放攻击。
运维人员可以在本地进行衰减控制——晚上 9 点后拒绝写入工具或阻止承包商。本地允许仍然无法绕过控制平面检查(如果存在约束)。
交互式解释器
Agent 实际调用什么
节点暴露标准 MCP 工具:discover_remote_services、find_remote_tools 和 call_remote_tool。指南覆盖 Gemini、Claude Code、Claude Desktop、Google Antigravity 和 OpenClaw。sam-node skill install 写入 SKILL.md,使 Agent 能够自行将节点上线。注册登录流程按设计保留给人类。
出口控制:sam-box 和 nano-init
安全出站网关针对真实的 Agent 安全缺口。nano-init 在沙箱中作为 PID 1 运行,并设置代理环境变量。对于忽略这些变量的工具,它通过 LD_PRELOAD 注入拦截器,挂钩 80 和 443 端口上的 C connect() 系统调用。
流量通过 Unix 域套接字到达 sam-box。网关验证 Biscuit,从 secrets.yaml 注入真实凭证,并将请求升级到 HTTPS。Agent 沙箱永不持有密钥。
一个工作模式:预热 Agent 池
代码审查池示例使用普通 MCP 服务将批量工作分散到相同的运行 Worker 上。管理器通过 DHT 发现了解对等方,并用租约跟踪忙碌状态。正确性来自同步租约分配、栅栏 token、优雅驱逐和 POOL_BUSY 后备。Worker 离线验证短期 HMAC token;其他任何内容都返回 NO_LEASE。
SAM 是 Sovereign Agent Mesh,一个 Apache-2.0 P2P 覆盖网络——不是 Segment Anything。
三个二进制文件:控制平面负责身份和策略,路由器负责 libp2p 传输,节点负责 MCP。
OIDC 声明被转换为 Biscuit Datalog 事实,因此节点可以离线授权。
默认拒绝是绝对的;即使发现目录也需要显式授权。
生产使用意味着自行托管控制平面——公共网格是 beta 测试网。
查看 GitHub 仓库。另外,欢迎在 Twitter 上关注我们,不要忘记加入我们 15 万+ 的 ML SubReddit 并订阅我们的通讯。等一下!你用 Telegram 吗?现在你也可以加入我们了。
需要与我们合作推广你的 GitHub 仓库、Hugging Face 页面、产品发布或网络研讨会等?请联系我们。
Michal Sutter 是一位数据科学专业人士,拥有帕多瓦大学数据科学硕士学位。Michal 在统计分析、机器学习和数据工程方面有坚实基础,擅长将复杂数据集转化为可操作的洞察。