让内网的 AI Agent 自由互联,不再被 NAT 困住
# 让内网的 AI Agent 自由互联:OpenAFP实践总结
*AI Agent 在没有公网的内网里就是“孤岛”。我们造了一座桥。*
---
## 有一天晚上,我折腾了三个小时
在家远程办公,想用家里的 AI 跑一个数据清洗任务。打开 VPN、连上家里电脑、输入地址——连不上。
防火墙规则、端口映射、DDNS,能折腾的都折腾了。最后把数据手动传到云服务器上处理的。
晚上躺在床上想,这种事不应该这么难。BitTorrent 能自动发现节点、Git 能在离线环境下工作——凭什么两个 AI Agent 连个线要折腾成这样?
---
## 网络世界里的一条线
互联网有一条隐形分界线:
- **线这边**:云服务器、公司专线——有公网 IP,别人能找到你
- **线那边**:家里电脑、移动热点、办公室内网——你只能往外连,别人找不到你
AI Agent 的时代来了,但每个 Agent 恰好站在这条线的两边。想让家里的 Agent 和公司的 Agent 协作?先搞定网络层再说。
于是有了 **openafp.net**。
---
## openafp.net:只做三件事
**发现** — Agent 启动后自动找到网络上的其他节点。用分布式哈希表(DHT)加局域网广播,不需要配 IP、填端口。
**穿透** — 两个都没公网 IP 的节点,通过公共中继节点建立连接。中继只转发加密流量,不接触内容。
**调用** — 知道对方有什么能力,按需调用。Agent 声明能力,另一个就能发现并调用。
---
## 一个真实的例子
我出差在外,只有一台连接手机5G热点的笔记本(无公网IP)。家里有一台旧电脑(无公网IP)跑着文件处理Agent,公司内网有一台服务器(无公网IP)跑着数据分析程序。
装上 OpenAFP:
1. 三台机器各自注册能力:文件处理、数据分析。
2. 通过公共中继节点,5G热点下的笔记本、家里电脑、公司服务器自动发现彼此。
3. 在外的笔记本调用家里Agent处理文件,再调用公司Agent分析数据,结果直接返回。
全程不需要公网IP、端口映射、防火墙。出差在外,就像坐在办公室一样调用内网的 AI 能力。
安装命令可在openafp.net获取,30 秒启动后执行 `curl localhost:51888/health`,返回 `{"status":"ok"}` 即加入网络。
---
## 实际在跑:5 个异构节点 24×7 在线验证
过去一个月,我们保持了 5 个节点持续在线:
- 家庭宽带(无公网 IP)
- 5G 移动热点(无公网 IP)
- 杭州云服务器节点 (公网IP)
- 香港云服务器节点 (公网IP)
- 美国硅谷节点(公网 IP 但被限制访问)
全部打通。5G 热点给家庭宽带的 Agent 发指令、海外节点通过香港中继调用杭州能力——这些是实测通过的结果,不是 PPT。
---
## 当前开放的能力
| 能力 | 用途 |
| :--- | :--- |
| `system/hostname` | 获取目标节点的主机名 |
| `system/whoami` | 获取运行用户 |
| `system/ip` | 探测出口 IP |
| `system/ifconfig` | 获取网卡信息 |
| `system/list_agents` | 列出网络上所有在线的 Agent |
| `system/notify` | 向其他节点发送通知 |
| `pull.file` | 从节点拉取文件(限制相对路径,防路径穿越) |
也支持通过配置文件注册自定义脚本能力。
---
## 安全设计
每一层都做了限制:
- 不开放任意 Shell 执行。脚本能力需显式注册路径才生效
- 文件读取只允许相对路径,硬性禁止绝对路径和路径穿越
- 所有能力需主动注册,不默认暴露
- P2P 流有传输容量限制,防内存耗尽
- TLS 加密传输
---
## 协议开源,实现可参考
openafp.net 的核心协议规范(8字段消息结构、发现与调用机制)已完全开源,采用 Apache 2.0 协议。当前公开仓库包含完整的协议文档、安装脚本、API 文档以及示例代码。
核心网络层实现(NAT穿透、中继策略、DHT优化)作为技术沉淀暂不公开,但协议完全开放,任何人可基于协议独立实现。
欢迎访问openafp.net了解协议、试用预编译版本或参与社区讨论。
---
**让内网的 AI Agent 自由互联,不再被 NAT 困住。**
更多推荐


所有评论(0)