设计谱系:Tagentacle 与互联网¶
每一代工程师都在解同一个根本问题:多个独立实体如何可靠通信? Tagentacle 也不例外——它处于一个源远流长的通信系统谱系之中。理解这个谱系,有助于厘清 Tagentacle 是什么、借鉴了什么、又在哪里分道扬镳。
同一个问题,反复出现¶
1970s 多台计算机要互相通信 → 发明了 IP + DNS + TCP
1990s 多个进程要互相通信 → 发明了 D-Bus / CORBA / IPC
2000s 多个微服务要互相通信 → 发明了 Consul / etcd / Service Mesh
2010s 多个机器人节点要通信 → 用了 DDS(经由 ROS 2)
2025s 多个 AI Agent 要通信 → Tagentacle
每一代人都重新发现了相同的构建块:命名、路由、发现、类型安全、授权。模式之所以趋同,是因为解空间本身有限——拓扑就那么几种(星型/树型/网状/总线),通信模式就那么几种(请求-响应/发布-订阅/流/广播),一致性模型也就那么几种(强一致/最终一致/因果一致)。
Tagentacle 的价值不在于发明新的原语, 而是为特定领域——AI Agent 通信——选出正确的子集和正确的默认值。
逐层对应关系¶
| 互联网 | Tagentacle | 共同抽象 |
|---|---|---|
| 物理层(Ethernet、Wi-Fi) | TCP socket | 传输介质 |
| IP(尽力路由,不保证送达) | Daemon(Topic 路由,fire-and-forget) | 分组交换 |
| TCP/UDP(可靠/不可靠传输) | JSON Lines 帧 + 心跳 | 端到端可靠性 |
| DNS(层级命名,最终一致) | Topic 命名空间(树状) | 命名与发现 |
| TLS + CA(身份 + 加密) | TACL JWT(身份 + 授权) | 信任基础设施 |
| HTTP(请求-响应,无状态) | Service RPC | 同步调用 |
| WebSocket / SSE(服务器推送) | Topic Pub/Sub | 异步流 |
| Web App / API | MCP Server / Agent | 应用层 |
Daemon ≈ IP 路由器¶
IP 路由器看目的地址、查路由表、转发。它不关心 payload 是 HTTP 还是 SMTP,不做内容校验。没人监听,包就丢弃。
Tagentacle Daemon 做的是完全一样的事:看 topic name、查订阅表、转发。它不关心 payload 是 ToolCall 还是自然语言回复,不做 schema 校验。没人订阅,消息丢弃。
这正是端到端原则(end-to-end principle)的体现:智能放在端点(SDK/Node),不放在网络(Daemon)。
Topic 树 ≈ DNS 层级¶
DNS: Topic:
com. /
├── google.com ├── tagentacle/
│ ├── mail.google.com │ ├── node_events
│ └── maps.google.com │ └── list_nodes (service)
└── github.com ├── agent/
│ ├── output
│ └── plan
└── mcp/
└── directory
一个关键区别:DNS 是分布式的,而 Tagentacle 的 topic 命名空间目前是单 Daemon 集中式的。互联网从 ARPANET 的 HOSTS.TXT(一个文件 = 一个中心)演化到分布式 DNS 花了十年。Tagentacle 现在处于 HOSTS.TXT 阶段——这不是问题,因为当前的规模还不需要更多。
MCP ≈ HTTP — 应用层协议,不是系统层¶
MCP 不在 Tagentacle 系统层。这是有意为之的设计:
- IP 层不知道 HTTP 的存在,路由器不解析 HTTP header。
- Daemon 不知道 MCP 的存在,不解析 MCP JSON-RPC。
HTTP 运行在 TCP 之上,MCP 运行在 Tagentacle bus 之上。两者都是端点选择使用的应用层协议,与底层传输无关。
为什么不直接用现有基础设施?¶
如果答案都是"现成的",为什么 AI Agent 框架不直接用?
| 现有方案 | 为什么 Agent 不用 | 根本矛盾 |
|---|---|---|
| IP + DNS | 太底层,Agent 不想管 socket | Agent 需要语义通信,不是字节流 |
| HTTP + REST | 每次调用都要知道对方 URL | Agent 之间是动态拓扑,不是写死的 API |
| Kafka / NATS | 运维重,需要外部集群 | Agent 系统应该 pip install && 跑起来 |
| ROS 2 / DDS | 静态类型、编译期绑定、C++ 优先 | Agent 是 Python、JSON、动态 schema |
| D-Bus | 单机、同步、session-scoped | Agent 可能跨机器 |
| Consul / etcd | 只做发现,不做通信 | Agent 需要发现 + 通信 + 类型一体 |
| gRPC + Protobuf | 需要 .proto 编译 |
LLM 输出的是 JSON,不是 protobuf |
每一个方案都覆盖了 80% 的需求。 剩下的 20% 恰恰是 AI Agent 最在意的部分。
Docker 类比¶
Docker 也没有发明任何东西:
Docker 的贡献是把它们包装成了 docker run。
Tagentacle 做的是同样的事:
包装成:
价值在于精选(curation)——挑选、组合、设定默认值——而非发明。
规模演进轨迹¶
互联网在每个阶段的解法,以及 Tagentacle 的对应时刻:
| 互联网阶段 | 规模 | 解法 | Tagentacle 对应 |
|---|---|---|---|
| HOSTS.TXT | ~100 台主机 | 中心化列表 | 单 Daemon + list_nodes |
| DNS | ~10K 台主机 | 层级分区 + 缓存 | Topic 树 + namespace 隔离 |
| CDN / 负载均衡 | ~1M 服务 | 就近路由 + 副本 | 多 Daemon + gossip |
| Service Mesh | ~10M 服务 | Sidecar proxy + 中央控制面 | 超出当前视野 |
Tagentacle 目前处于 HOSTS.TXT 时代。这不是局限——这是对当前规模(几十个节点,单机部署)的合理选择。架构本身并不妨碍在规模需要时沿着这条轨迹演进。
Topic vs. Type:Tagentacle 与 ROS 2 的分歧点¶
互联网类比在一个重要的地方失效。在 ROS 2 中,Topic = Type 是 1:1 绑定:
这在物理传感器和执行器的世界中成立——它们的数据格式在系统运行周期内不变。
AI Agent 的通信模式截然不同:
通信模式是多态的、弹性的、需要协商的——更接近 HTTP(同一个 URL 可以根据 Content-Type 返回 HTML、JSON 或图片),而不是 ROS 2 topic。
这意味着 Tagentacle 的通道(channel)在概念上是一个 (topic, schema) 二元组,而不仅仅是一个 topic 名称。Daemon 按 topic 路由(快速字符串匹配),SDK 按 schema 过滤(语义匹配)。这种分离让系统层保持简单,同时赋予应用层灵活性。
总结¶
Tagentacle 之于 AI Agent = IP + DNS 之于互联网应用。
Daemon 是路由器,Topic 树是 DNS,MCP 是 HTTP,Agent 是 Web App。
系统层提供 naming + routing + discovery 机制, 应用层(MCP、Agent 框架)在上面自由组合。
把 MCP 排除在系统层之外——正如 IP 不理解 HTTP——这个架构决定,与当年让互联网从几百台主机扩展到几十亿设备的决定是同一个。