本文内容
Google SAM 现名 Agent Mesh:跨机器调用 MCP 工具
Google SAM 现已更名为 Agent Mesh
Sovereign Agent Mesh(SAM,主权智能体网格)现名 Agent Mesh,是面向 AI 智能体的开源网络层。智能体可以通过本地节点,发现并调用其他机器上已获授权的工具。项目仓库已从 google/sam 迁至 google/agentmesh。当前 README 确认了更名和项目状态:采用 Apache-2.0 许可证,仍处于 1.0 之前的开发阶段,并非 Google 官方支持的产品。
实际问题并不陌生。编程助手在笔记本上运行,代码审查智能体部署在构建服务器旁,内部搜索工具则位于私有集群中。它们各有所长,但要共享这些能力,就需要可访问的端点,还要明确谁能调用什么。
Agent Mesh 提供连接和授权这一层。工具可以继续留在原来的环境中,只向已加入网络的对等节点发布选定的能力。
版本说明,核查日期为 2026 年 10 月 12 日:本文依据源码提交 273e6fba,使用其中的 agentmesh-* 命名。当前列出的最新发布版本是 10 月 7 日发布的 v0.1.0-rc.9,它仍使用 sam-* 命名。评估时,请使用同一版本对应的命令和文档。
通过本地节点访问远程工具
智能体与本机上的 agentmesh-node 通信。该节点接入网格,检查可以访问哪些远程服务。服务提供节点只发布其运维人员配置的后端。
控制平面负责接纳成员并签发凭证。路由节点帮助各节点相互发现,在无法直连时转发加密流量。agentmesh-one 将控制平面、路由节点和控制台打包在一起,适合较小规模的部署。架构文档说明了这些组件的职责。
对于已有的智能体技术栈,可以按以下层次理解各自的作用:
| 层次 | 职责 | 示例 |
|---|---|---|
| MCP | 为工具提供可调用的接口和输入参数结构。 | 计算器或代码审查工具。 |
| A2A | 与智能体服务交换消息和任务。 | 将工作委派给分流处理智能体。 |
| Agent Mesh | 发现服务提供方、连接对等节点并执行访问控制。 | 访问另一台机器上获准调用的审查工具。 |
| 编排 | 选择任务、分配工作并处理结果。 | 拆分一批审查任务,并重试失败的任务。 |
我们的智能体通信与 Band 指南讨论了更广泛的协作问题。SAM 的具体作用是为这些交互提供底层网络。
自动发现减少反复配置端点的工作
节点加入后,会获取路由节点信息,并通过网格的分布式目录发现已发布的服务。连接可以直达目标,也可以经过加密中继。网络指南解释了发现、中继和连接恢复机制。
这样,你就不必为每个助手分别维护一份地址列表。服务提供节点切换网络后,服务名称仍可保持不变。发现结果用于确定候选服务提供方;连接验证和凭证检查则决定请求能否继续。
运维人员仍需选择控制平面、注册成员并授予权限,还要配置每个要发布的后端。将整个过程称为“零配置”,会掩盖这些决定智能体访问范围的重要设置。
本地节点提供采用 Streamable HTTP 传输方式的 MCP 端点。客户端集成指南包含 Claude Code、Google Antigravity 及其他 MCP 客户端的示例。随附的 skill 会指导助手如何发现远程工具、查看工具说明并发起调用。节点注册和 MCP 配置仍是两个独立步骤。
对于 Codex 或 Hermes,应先核对客户端支持的 MCP 传输方式和身份验证设置,再承诺能够集成。本文没有为这些客户端提供经过实测的兼容性矩阵。
网络变化时,身份仍与节点绑定
每个节点都会生成自己的 Ed25519 密钥对,其对等节点 ID 由公钥派生。节点通过 OpenID Connect 登录或引导令牌向控制平面注册,随后获得已签名的 Biscuit 凭证。凭证包含可供其他节点验证的身份和权限信息。
凭证与节点密钥绑定。仅复制凭证,并不能获得对应的密钥。对等节点会验证连接身份,再根据调用方的权限检查所请求的服务。身份与注册规范也说明了凭证过期和续期机制。
因此,你可以按服务名称授权,而无需将规则绑定到笔记本当前的 IP 地址。凭证仍只属于签发它的网格。将工作负载迁往另一家云平台,与加入一个无关的控制平面,是两种不同的操作。
独立部署让你掌握成员资格和签名密钥
运行自己的控制平面后,你可以决定哪些身份能够加入,以及它们能够使用哪些服务。凭证签名密钥和管理策略由自己的部署掌握。保护数据库及管理员访问权限,也是维护这一信任边界的一部分。
控制与数据边界文档介绍了如何在私有基础设施上自行部署,包括与外网隔离的网络。隔离环境中也必须具备所需的身份服务、工具和模型。
工具请求在节点之间传输;控制平面负责成员和策略管理,不在这条数据路径上。中继负责转发加密流量,同时能够观察连接元数据。
共享公共测试网适合使用合成数据进行实验。其运维方掌握成员资格和策略,服务可用性也没有保证。企业要建立自己的边界,应从独立部署和经过核实的基础设施选择开始。
EU 标签用于约束服务提供方的选择
Agent Mesh 可以要求服务提供方持有已签名的标签,例如 jurisdiction=eu。节点在注册时声明标签,控制平面只会签署其角色通过 allowed_labels 获准声明的标签。
运维人员可以在调用方节点上设置以下最低要求:
version: "v1alpha1"
egress:
require_labels:
jurisdiction: eu节点配置参考文档定义了这一最低要求。调用者可以追加对服务提供方的要求,但无法移除运维人员设定的要求。转发请求前,访问控制机制会验证签名凭证中的事实。
签名证明的是网格的签发机构认可了这个标签。标签对应的实际物理含义,需要由部署管控来支撑。一台带有 EU 标签的机器,仍可能运行将提示词转发到外部模型 API 的后端。
请核查完整的处理路径:服务提供方的实际位置、中继部署位置、下游 API、日志和备份。应用自身的普通出站连接也需要相应控制。网格节点上的一个标签,无法证明这些条件全部成立。
我们的AI 应用欧盟数据驻留指南讨论了这一更完整的边界。就 Agent Mesh 而言,可用的机制是在标签已由你独立核实的服务提供方之间,执行明确的选择限制。
服务提供方可以拒绝已获中央授权的调用
承载敏感工具的机器可以设置自己的检查规则。例如,运维人员可以要求调用方持有特定的已认证标签,或禁止某个用户组访问指定服务。即使网格已授予权限,本地检查失败或拒绝策略命中时,访问仍可被阻止。
授权规范说明了这种本地执行机制,也支持为委派的工作使用权限范围更小的任务凭证。
这为工具所有者保留了实际可用的否决权。至于查询可以返回哪位客户的记录等应用层决策,仍应由理解这些数据的服务负责。我们的MCP 数据级访问控制文章解释了这一层的职责。
用两个节点和一个算术工具评估 SAM
先选择输入和结果都容易检查的能力。一个只提供加法功能的 MCP 服务器,就能在不涉及业务数据的情况下完成有价值的测试。以下步骤依据项目文档整理;Wavect 没有为本文实际运行这套部署,也没有对 SAM 进行性能测试。
使用独立的测试控制平面,并选择与你采用的源码或发布版本匹配的二进制程序。以下命令名称对应本文核查的当前源码。请将 mesh.example.com 替换为你自己的 HTTPS 控制平面地址。
1. 发布一个功能范围明确的小型服务
在机器 A 上运行测试用 MCP 服务器,使其监听回环地址的 7779 端口,并在 /mcp 路径提供 Streamable HTTP 接口。将以下内容保存为 provider.yaml:
version: "v1alpha1"
labels:
jurisdiction: eu
services:
- type: mcp
name: calculator
description: "Arithmetic tools"
target_url: "http://127.0.0.1:7779/mcp"服务发布指南说明了这一配置结构。节点会先探测后端,再向网格公告服务。确认标签符合实际情况后,允许服务提供方的注册角色持有 jurisdiction=eu。
2. 注册服务提供方和调用方
为两台机器分别创建注册令牌。在机器 A 上,将其令牌保存在本地文件中,然后运行:
agentmesh-node join https://mesh.example.com \
--bootstrap-token-path ./provider-join-token --config ./provider.yaml
agentmesh-node run --config ./provider.yaml在机器 B 上,将前面的 egress.require_labels 示例保存为 consumer.yaml。使用该文件和 B 自己的令牌完成注册并运行节点。调用方需要拥有 mcp://calculator 的访问权限,以及通过 system://mesh.catalog 发现服务的权限。将权限限定在本次测试所需的范围内。
3. 发现工具,再检查输入参数结构
按照文档中的端点和身份验证方式,将兼容的 MCP 客户端连接到 B 的本地节点。调用 get_mesh_info 检查连接状态,再通过 discover_remote_services 查找计算器服务。使用 find_remote_tools 和 describe_remote_tool 查看选定服务提供方的工具。
将返回的对等节点 ID、带命名空间的工具名称,以及符合参数结构的输入传给 call_remote_tool。向加法工具提交测试值 2 和 3,检查结果是否为 5,并记录由哪个服务提供方返回结果。工具名称和参数名称必须来自发现结果。节点 API 参考文档规定了这些发现和工具调用接口。
4. 检查拒绝访问的路径
换用一个缺少所需签名标签的测试服务提供方,重复调用,并确认它没有收到算术请求的内容。然后在服务提供节点上添加本地拒绝规则,验证原本获准的调用会被阻止。最后断开一个节点的连接,单独观察服务发现和重新连接的行为,并将其与应用层重试区分开来。
记录你的环境中成功调用、拒绝访问和连接恢复的表现。再根据这些结果,决定是否继续评估私有搜索工具或代码审查工具。
审查智能体池在网格之上增加任务协调
项目的预热智能体池示例将代码审查工作分配给已经运行的工作节点。每个工作节点提供一个 MCP 审查工具。管理器发现工作节点,以租约方式将其分配给编排器,由编排器并行派发一批任务。
这种分工很实用。网格负责找到并连接工作节点,管理器判断它是否空闲,而你的工作流负责定义什么样的审查结果才算合格。
网络中断后,连接恢复机制可以重新连接对等节点。任务完成仍需要独立的规则。如果工具已经执行完毕,但响应在途中丢失,重试就可能再次执行同一操作。在接入会写文件或触发其他操作的工具前,应先跟踪任务 ID 和完成状态。网格的连接自愈并不能保证每个任务恰好执行一次。
围绕一个共享能力开展试点
如果实用工具分散在不同机器上,多个助手又需要在权限控制下访问它们,Agent Mesh 就值得评估。本地节点为每个客户端提供统一入口,由运维人员定义谁可以访问各项服务。
设计中仍需保留主机隔离和应用层授权。项目的安全架构说明了它与沙箱及外部服务之间的边界。
对于已经在连接笔记本助手与私有构建或搜索基础设施的团队,第一步可以很具体:选定一个工具、两个已注册节点,以及一条能够验证的权限规则。先证明哪个身份发起了调用、哪个服务提供方收到了输入,以及禁止的调用如何被拦截,再扩大使用范围。
Google SAM 与 Agent Mesh 常见实用问题
Google SAM 现在叫什么?
Sovereign Agent Mesh(SAM)现已更名为 Agent Mesh。原来的 google/sam 仓库会重定向至 google/agentmesh。当前源码使用 agentmesh-node,较早的发布版本可能仍使用 sam-node。请让命令与实际安装的版本保持一致。
Agent Mesh 是 Google 官方支持的产品吗?
仓库明确声明,Agent Mesh 并非 Google 官方支持的产品。它是 Google GitHub 组织下采用 Apache-2.0 许可证的开源项目,仍处于 1.0 之前的开发阶段。仓库属于 Google,并不等于项目承诺提供生产环境支持。
Claude Code、Codex 和 Hermes 能使用 SAM 吗?
Agent Mesh 提供本地 Streamable HTTP MCP 端点。当前指南包含 Claude Code 和 Google Antigravity 的配置。其他客户端需要支持兼容的 MCP 传输和身份验证方式。本文未验证 Codex 或 Hermes 的具体集成,请在试点中检查其兼容性。
EU 标签能让所有提示词和工具调用都留在欧盟境内吗?
EU 标签可以将调用限制为只发送给签名凭证中包含该标签的服务提供方。它无法独立证明地理位置,也无法约束所有下游 API。完整的边界核查还应包括服务提供方的位置、中继路由、模型端点、日志、备份和出站连接。
可以自行部署 Agent Mesh,或在隔离网络中运行吗?
项目文档介绍了独立控制平面和私有基础设施部署,也包括与外网隔离的网络。隔离部署必须在边界内提供所需的身份服务、工具和模型。共享公共测试网的策略由其运维方控制,且没有服务可用性承诺。
Agent Mesh 的自愈具体指什么?
它指的是连接恢复,例如替换丢失的路由连接,以及重新连接对等节点。任务编排仍需处理任务跟踪、重试规则和重复操作防护。连接恢复,并不能证明中断的任务恰好完成了一次。
网格会取代 MCP 权限控制或智能体编排吗?
Agent Mesh 增加了服务发现、经过身份验证的连接和网格授权。MCP 提供工具接口,编排器负责分配工作并处理结果。服务仍需要应用层的具体检查,例如调用方可以访问哪位客户的数据。
