Pilot Protocol 代理网络栈
为 AI Agent 提供永久虚拟地址、加密 UDP 隧道与互信握手的去中心化覆盖网络。
- Star 数
- ★ 147
- 最近更新
- 1 天前
- License
- AGPL-3.0
- 主语言
- Go
- FA 评分
- 48/100 · 缺口较多
30 秒速览
- 运行形态
- 可在哪里用
- 通用 · 跨平台
- 费用
- 免费,无需付费服务
- 上手难度
- 中 · 需要几步配置
- 开始前需要
- 典型场景
- 多台机器上的自建 Agent 需要互相直连、又不愿经过第三方 API 平台的团队,用 handshake 建立信任后直接走加密 UDP。
- 不适合
- 需要完全离线、不能触碰任何 rendezvous 服务的团队
- 不愿让守护进程自动写入 Claude Code / Cursor 配置目录的用户
- 只想要现成聊天机器人、不想跑本地守护进程和 Unix socket 的用户
- 源码审查
- 48/100 · 缺口较多
这个 Agent 能做什么,适合哪些场景?
Pilot Protocol 是一套面向 AI Agent 的覆盖网络(overlay network),用 Go 编写,核心仅依赖标准库。每个 Agent 通过本地守护进程(pilot-daemon)接入,并在 rendezvous(registry :9000 + beacon :9001)注册,获得 48 位虚拟地址(形如 0:0000.0000.0005)、16 位端口与可解析主机名。数据面走 AES-256-GCM 加密的 UDP 隧道,STUN 发现与打洞失败时由 beacon 以端到端加密方式中继;身份使用 Ed25519 密钥,需通过双方签名的 handshake 建立互信。控制面通过 Unix socket 暴露给 pilotctl 命令行以及 Node.js、Python、Swift 三个 SDK,另有内置 app store 用于分发签名 IPC 应用。网络默认私密,支持 registry 热备复制与自建 rendezvous。
安装脚本把 pilot-daemon、pilotctl、pilot-updater 放入 ~/.pilot/bin,并注册 systemd 或 launchd 服务。pilotctl daemon start 启动守护进程:它先向 registry:9000 注册节点、领取虚拟地址,再用 STUN/打洞经 beacon:9001 与对端建立 UDP 隧道;隧道使用 Ed25519 签名绑定的 X25519 密钥交换与 AES-256-GCM 加密,内含可靠流(滑动窗口、SACK、AIMD 拥塞控制、Nagre 合并、自动分段、零窗口探测)。用户侧命令包括 pilotctl info/set-hostname/find/ping/bench 用于自检与对端探测,pilotctl handshake 发起互信、pilotctl trust 查看信任状态,send-message 与 inbox(端口 1001 数据交换服务)负责结构化消息,send/recv 提供裸端口收发。内置服务还包括 echo :7 与 event stream :1002;extras gateway 可把远端 Agent 映射成本地 IP。所有命令支持 --json,SDK 经 Unix socket IPC 暴露同样的 handshake/send/recv/stream/gateway 接口。
- 多台机器上的自建 Agent 需要互相直连、又不愿经过第三方 API 平台的团队,用 handshake 建立信任后直接走加密 UDP。
- 部署在对称 NAT 后的 Agent(例如家用宽带或云 VM),靠 beacon 中继兜底仍能保持端到端加密通信。
- 受管控的容器或托管沙箱(如 Meta Muse)里只能走 HTTPS 代理的 Agent,用 --transport compat 通过 TLS 443 与 WSS 接入网络。
- 需要给 Agent 分配稳定可寻址标识并做主机名发现,用 pilotctl set-hostname 与 find 建立自己的 Agent 目录。
- 自行运营生态的团队,用 rendezvous -registry-addr :9000 -beacon-addr :9001 起私有注册与信标服务,并启用 registry 热备。
- 希望以签名 IPC 应用形式分发工具链的开发者,用 appstore catalogue/install/call 发布与调用声明式方法的应用。
如何安装或部署这个 Agent?
官方安装脚本会自动识别平台并下载预编译二进制,若本机有 Go 则回退到源码编译。
curl -fsSL https://pilotprotocol.network/install.sh | sh安装时可直接指定主机名与邮箱:
curl -fsSL https://pilotprotocol.network/install.sh | [email protected] PILOT_HOSTNAME=my-agent sh从源码构建需要 Go 1.25+:
git clone https://github.com/pilot-protocol/pilotprotocol.git
cd pilotprotocol && make buildUDP 被封、只能走 HTTPS 代理时显式选择 compat 模式:
pilotctl daemon start --transport compat沙箱没有 CA 证书包时,指向系统证书或固定 registry 指纹:
SSL_CERT_FILE=/path/to/ca-certificates.crt pilotctl daemon start
pilotctl config --set registry_fingerprint=<sha256 of its certificate>卸载:
curl -fsSL https://pilotprotocol.network/install.sh | sh -s uninstall如何使用这个 Agent?
安装后启动守护进程,向公开 demo 节点发起握手并验证信任:
pilotctl daemon start --hostname my-agent --email [email protected]
pilotctl handshake agent-alpha "hello"
pilotctl trust自检、寻址与连通性测试:
pilotctl info
pilotctl set-hostname my-agent
pilotctl find agent-alpha
pilotctl ping agent-alpha
pilotctl bench agent-alpha使用端口 1001 的数据交换服务收发结构化消息:
pilotctl send-message other-agent --data "hello"
pilotctl inbox
pilotctl inbox read <id>裸端口收发:
pilotctl send other-agent 1000 --data "hello"
pilotctl recv 1000 --count 5 --timeout 30s任何命令加 --json 可得到结构化输出:
pilotctl --json info
pilotctl --json find other-agentNode.js SDK 需要先让守护进程运行,然后通过 Unix socket 连接:
import { createPilot, createAgent } from 'pilotprotocol';
const pilot = await createPilot();
const conn = await pilot.handshake('agent-alpha', 'hello');
await conn.trust();
await conn.send(3000, Buffer.from('ping'));
const msgs = await conn.recv(3000, { count: 1, timeout: 10 });
console.log('Received:', msgs[0].data.toString());在容器里运行守护进程时给容器一个 init 进程,避免僵尸进程累积:
docker run --init ...关闭默认开启的遥测、广播、评价提示与 skill 注入(写入 ~/.pilot/config.json 后重启守护进程):
{
"consent": {
"telemetry": false,
"broadcasts": false,
"reviews": false
},
"skill_inject": {"mode": "disabled"}
}这个 Agent 有哪些优点和局限?
- 数据面不经过平台:隧道建立后 Agent 之间直连 UDP,rendezvous 只在发现与 NAT 打洞时参与,避免中心化单点。
- 安全边界清晰:Ed25519 身份密钥绑定会话、X25519 密钥交换、AES-256-GCM 加密、默认私密节点,并有双方签名的互信握手。
- 弱网与受限环境有明确降级路径:对称 NAT 由 beacon 中继(仍端到端加密),UDP 被封可切 compat 模式走 TLS 443 与 WSS,支持 HTTPS_PROXY/ALL_PROXY/NO_PROXY 与凭据轮换的 proxy_cmd。
- 核心仅用 Go 标准库,附带原子化状态持久化、registry 热备复制与结构化 slog 日志;安装脚本自带 systemd/launchd 与自动更新,无需 root。
- 多语言接入成本低:pilotctl 全命令支持 --json,另有 Node.js、Python、Swift 三个 SDK,以及内置签名 app store。
- 仍依赖 rendezvous 做发现与打洞:默认指向公开服务 34.71.57.205:9000,需要私有控制必须自建 registry/beacon,多了一层运维面。
- 安装脚本默认开启遥测、广播、review 提示和 skill 注入;skill 注入会在运行时拉取内容并写入 Claude Code、Cursor、OpenHands、OpenClaw、Hermes 的配置目录,auto 模式每 15 分钟自动更新。
- 容器部署需要自行提供 init 进程(docker run --init、tini 或 shareProcessNamespace);守护进程自身不回收孤儿进程。
- 源码构建要求 Go 1.25+,沙箱若没有 CA 证书包还得配置 SSL_CERT_FILE 或固定 registry 指纹;WSS beacon 不支持指纹固定。
- 测试必须以 go test -parallel 4 运行,无限并行会耗尽端口;许可为 AGPL-3.0,对闭源集成方有限制。
这个 Agent 与同类方案有什么区别?
README 明确把自己定位为 MCP 的替代方向:它强调「不是 API,也不是框架,而是基础设施」,指出现有 Agent 通过中心化 API 通信会让平台看到全部流量、控制访问并成为单点。Pilot Protocol 的差异在于把平台移出数据路径——由 rendezvous 负责发现与打洞,隧道建立后数据直连加密 UDP,并用虚拟地址与端口替代纯 API 调用。
与相关度最高的同类 agent 并排比较关键指标。
| Agent | 源码审查 | 形态 / 费用 | Star | 最近更新 | 主语言 | 完整支持的平台 |
|---|---|---|---|---|---|---|
| Pilot Protocol 代理网络栈 当前 | 48 · 缺口较多 | 命令行工具免费 | ★ 147 | 1 天前 | Go | — |
| OrgKernel 智能体信任内核 | 66 · 存在缺口 | 代码库 / SDK免费 | ★ 2.7k | 3 个月前 | Python | — |
| AI Maestro | 56 · 缺口较多 | 命令行工具免费 + 模型费 | ★ 816 | 今天 | TypeScript | Codex · Claude Code |
| Jev Guard | 79 · 表现良好 | Agent 插件 / 技能免费 + 模型费 | ★ 63 | 7 天前 | JavaScript | Claude Code |
FollowAgents 如何评估这个 Agent?
查看各维度的扣分理由
README 明确说明节点默认私有、需要双向信任握手,且对遥测、广播、评审、技能注入四项默认开启功能给出了风险说明与退出方式,数据流透明度较好(2)。但 least_privilege 仅得 1:安装脚本通过 curl | sh 执行,且 gateway 示例要求 sudo 与 NET_ADMIN,权限较大且未提供细粒度最小权限说明。user_confirmation 仅得 1:技能注入默认 manual 但安装即写入 agent 配置目录,广播默认开启且可向 agent 投递任意数据,缺少逐次确认。sensitive_data_handling 仅得 1:README 提到遥测发送 Ed25519 签名与 IP,但未说明密钥存储、日志脱敏等敏感数据处理细节。dependency_security 仅得 1:go.mod 依赖大量 pilot-protocol 自有模块与 sigstore 等间接依赖,未见依赖审计或漏洞扫描证据。external_effects 仅得 1:自动更新器每小时检查并自动应用更新,属于外部副作用,虽有 --pin 但默认行为影响较大。rollback 仅得 1:提供卸载命令与 --version 固定,但未见自动更新失败回滚或状态恢复的明确机制。source_attribution 仅得 1:README 链接了 IETF 草案、白皮书与技能仓库,但未在仓库内给出代码来源或第三方组件归属说明。
self_consistency 得 2:README 对架构、端口、传输模式(auto/compat/udp)的描述与 go.mod、测试脚本基本一致,未发现明显矛盾。dependency_availability 仅得 1:go.mod 中大量依赖为 pilot-protocol 自有模块(app-store、beacon、common 等),其可用性与版本稳定性无法从本仓库静态确认,且存在 replace 指令指向特定伪版本。failure_messages 得 2:README 展示了结构化 JSON 错误(含 code、message、hint),测试脚本也验证了错误处理路径,失败信息较为清晰。
audience_and_scenarios 得 2:README 面向 agent 开发者、运维与受限沙箱用户,给出了 CLI、SDK、容器与代理场景。capability_boundaries 得 2:明确说明核心协议仅用 Go 标准库、gateway 为可选额外组件、广播为 WIP,边界较清楚。trigger_precision 仅得 1:技能注入在 auto 模式下每 15 分钟自动更新,评审提示在约 5% 调用时拦截 stdout,触发条件对自动化场景不够精确。environment_fit 得 2:详细覆盖了无 systemd 容器、HTTPS 代理、compat 模式、CA 证书缺失等环境适配。
information_architecture 得 2:README 结构清晰,含问题、架构、安装、测试、隐私控制等章节。install_notes 得 2:安装步骤、从源码构建、卸载、代理与容器注意事项均有说明。naming_stability 仅得 1:CLI 命令与端口命名较稳定,但仓库内未见版本化命名约定或弃用策略。examples_and_faq 得 2:提供了 CLI、JSON、Node SDK 示例与演示 agent 流程。known_limitations 仅得 1:README 提到广播 WIP、测试需 -parallel 4、NAT 对称时走中继,但缺少集中式已知限制清单。license 得 2:LICENSE 为完整 AGPL-3.0 文本,与元数据一致。versioning_changelog 仅得 1:SECURITY.md 提到 1.8.x 支持,但仓库内未见 CHANGELOG 或语义化版本说明。maintenance_responsibility 仅得 1:SECURITY.md 给出联系邮箱与响应时间,但发布者身份未经验证,维护责任归属不明确。
output_usability 得 2:CLI 支持 --json 结构化输出,SDK 提供编程接口,输出可直接用于自动化。marginal_value 得 2:为 agent 提供地址、加密隧道与信任模型,相对集中式 API 有明确差异化价值。cost_benefit 仅得 1:默认开启遥测、广播、评审与技能注入,且自动更新器持续运行,对普通用户的收益与运维/隐私成本之间的权衡说明不足。
claim_traceability 仅得 1:README 声称 1048 个测试通过、AES-256-GCM 加密等,但仓库内未提供可追溯的测试报告或基准数据。cross_source_corroboration 仅得 1:README、SECURITY.md、go.mod 与测试脚本之间部分一致,但关键安全声明缺乏多源交叉验证。fact_inference_separation 仅得 1:文档将事实描述与营销性表述(如“不是框架,是基础设施”)混合,未明确区分已验证事实与推断。
- 安装脚本通过 curl | sh 执行,且 gateway 示例要求 sudo 与 NET_ADMIN,权限较大,建议在隔离环境中先行审查。
- 遥测、广播、评审与技能注入四项功能默认开启;广播可向 agent 投递任意数据,技能注入会写入 agent 配置目录,建议按需关闭。
- 自动更新器每小时检查并自动应用更新,可能引入未审查的变更,建议使用 --pin 或关闭自动更新。
- go.mod 依赖大量 pilot-protocol 自有模块与间接依赖,其可用性与安全性无法从本仓库静态确认。
- 发布者身份未经验证,维护责任与更新路径不明确,生产使用前应独立评估。