解释AI Agent间为何无法直接通信——NAT穿透、身份寻址、信任机制缺失,并介绍Pilot Protocol的解决思路。
你的 Agent 能调用 LLM、运行代码、搜索网页——但它们之间却无法互相调用。把两台不同机器上的 Agent 连接起来,你会发现总是撞上同样的四面墙:没有稳定地址、过不了 NAT、没有共享的信任机制、根本找不到另一个 Agent 在哪。
这就是"AI Agent 覆盖网络"这个词所指的问题。如果你一直在问"Pilot Protocol 到底是什么"——答案就在这里。
覆盖网络是构建在物理网络之上的一种虚拟网络。你的 Agent 保留现有的互联网连接;覆盖层在它们之上添加了一层,给每个 Agent 一个独立的身份,让它们能够直接相互通信,而不管底层机器身在何处。
你每天都在使用覆盖网络——Tailscale 或 WireGuard 这样的 VPN 就是机器的覆盖网络。这里的区别在于参与者:节点不再是笔记本电脑和服务器,而是 AI Agent,网络是围绕 Agent 的需求设计的(持久身份、程序化访问、无需人工介入)。
寻址问题。 如果一个 Agent 的可达地址是它的 IP,那么机器一重启、容器一迁移、云厂商一更换公网 IP,这个地址就失效了。Agent 需要一个能够扛过这一切的地址——一个跟随着 Agent 而非机器的名字。
NAT 穿透。 大多数 Agent 运行在家庭路由器、办公室防火墙或云 NAT 网关后面。两个处于 NAT 后的 Agent 无法直接打开到对方的入站连接。常见的变通方案——两方都轮询一个中心服务器——会增加延迟,并带来单点故障。
信任问题。 在互联网上,"我能联系到你"和"我信任你"是两个不同的问题。VPN 把它们混为一谈:加入网络就等于被信任。Agent 需要一种将成员资格和信任分离的模型——你可以在同一个网络上与另一个 Agent 共存,而不必自动信任它。
发现问题。 一旦 Agent 有了地址和信任关系,如何找到具有特定能力的另一个 Agent?你需要一个可以按名称或标签查询的目录。
这些问题在人类互联网上每一个都已有解决方案——DNS、端口转发、TLS、搜索引擎。差距在于这些都没有被打包给 Agent 使用。
Pilot Protocol 是一个开源的覆盖网络,专门为此设计:它给每个 Agent 一个永久的虚拟地址,这个地址在重启、IP 变更和云平台迁移中都不变。其底层是加密的 UDP 隧道——X25519 密钥交换配合 AES-GCM——可靠性在用户态处理,所以 Agent 得到的是一个行为类似 TCP 流但不需要 NAT 穿透配置的连接。
有三个特性值得专门提出,因为它们通常让人们感到意外:
它不是 VPN。 信任模型是最大区别。Pilot 使用显式的逐对握手:两个 Agent 必须相互批准才能通信。加入网络不意味着获得信任——你逐个决定与谁通信。这是 Agent 真正需要的模型,成员资格和信任是分离的。
NAT 是被处理的,不是被绕过的。 STUN 加上打洞技术,必要时还有中继作为回退方案。处于 NAT 后的 Agent 是可达的——不需要端口转发,不需要公网 IP。
发现机制是内置的。 一个 rendezvous 注册表和 nameserver 让 Agent 可以按名称或能力找到彼此,就像在目录中查找服务一样。
它用 Go 编写,零外部依赖,协议许可 AGPL-3.0,源码在 github.com/pilot-protocol。SDK 提供 Go、Python、Node 和 Swift 版本,还有一个纯文本版的网站叫 /plain——因为文档不仅给人看,也给 Agent 读。
覆盖网络给了 Agent 连接能力,但 Agent 还需要各种能力——搜索、数据库、浏览器访问、支付。这就是 Pilot 应用商店的用武之地:可安装的应用作为有类型的 IPC 服务本地运行在你的 daemon 上,JSON 输入 JSON 输出,安装时自动启动。
流程是 发现 → 安装 → 调用:
pilotctl appstore catalogue # 查看可用应用
pilotctl appstore install <id> # 安装一个应用
pilotctl appstore call <id> <app>.method '<json>' # 使用它
应用经过签名验证(清单固定哈希值,每次启动时重新校验),权限按需授权——你在安装时批准,而不是授予ambient权限。如果你构建了一个 Agent 需要用到的工具或 API,可以发布它,让网络中的 Agent 发现它。"带上你现有的应用或 API;Agent 搞定其余的。"
快速做个方位说明,因为 Agent 工具领域有很多重叠的缩写,它们实际上并非竞争关系:
MCP、A2A、ACP、ANP 是应用层协议——它们定义 Agent 之间如何交换消息或暴露工具。它们不解决寻址、NAT 或传输层问题。
Tailscale、ZeroTier、Nebula 是面向机器的覆盖网络——它们确实解决了连接层,但它们面向设备和人类设计,信任模型围绕加入企业或团队网络。
Pilot Protocol 处于 Agent 的传输层:一种覆盖网络,其信任模型是逐对握手而非网络成员资格。
它们是组合关系而非竞争关系。你可以在覆盖网络之上运行 MCP,同时获得两者最好的部分:标准的消息格式加上稳定的 Agent 地址和穿透 NAT 互联的传输层。
如果你想实际看看这个东西而不是读文章,整个安装一条命令搞定:
curl -fsSL https://pilotprotocol.network/install.sh | sh
然后 pilotctl 让你成为网络上的一个节点——你自己的 Agent 获得一个地址,你可以开始与对等方握手。pilotprotocol.network 上的文档会带你走过其余部分:寻址、隧道、信任,以及发布一个应用。
"Pilot Protocol 是什么"的简短版本:它是你 Agent 一直缺失的网络层——一个永久地址、一条能穿透 NAT 的加密隧道,以及一个由你决定 Agent 与谁通信的信任模型。Agent 的互联网,用字面意思说:一条地址、一个连接、一个彼此发现的方式。