
最近折腾了一套面向自主Agent的架构方案,踩了几个坑,这篇把核心设计理念说清楚。
自然界里,蚂蚁群体不需要中央指挥就能协调行为。每只蚂蚁根据局部信号——比如信息素——和简单规则做出反应,大量信号交互后涌现出能解决复杂问题的群体行为。
这个类比对思考分布式系统很有启发,但有个重要区别:软件架构不应该简单复制自然,而是要把它的原则——局部性、信号、协同和适应性——转化为可验证的技术机制。
在当下的软件工程实践中,这个思路和一个大趋势直接相关:把部分处理和决策能力下沉到网络边缘(Edge),而不是把所有操作集中在远程基础设施上。
目标不是干掉云,而是明确什么必须留在数据源附近、什么可以本地运行、哪些外部服务是真正必需的。
这篇文章提出一套主权架构的六个核心支柱,面向自主Agent设计:
这不是手把手的教程,而是一份架构路线图,旨在设计出自治性、可追溯性和运维控制都是显式设计属性的分布式系统。
多年来,很多软件架构遵循一种集中式模式:数据发送到远程服务,在那里执行核心逻辑,然后把结果返回设备。
这种模式对很多场景仍然适用。但不是所有系统都有相同的约束条件。
机器人、传感器、工业自动化、车载系统、关键基础设施,还有那些需要在网络间歇性中断时继续运行的Agent,可能都需要本地处理、更低延迟和降级运行能力。
所以边缘计算不应该仅仅被定义为一种性能优化手段。
在主权架构里,边缘是一种控制决策:
核心原则:主权不等于与云断连。意思是外部依赖不应该自动成为决策、运维或故障的唯一节点。
如果把边缘比作躯体,信号网络就是神经系统。
事件驱动架构(EDA)不需要不断轮询所有组件状态,而是让节点发布相关变更,其他组件对此做出响应。
这种模式在消息和连接系统中很常见,比如NATS和MQTT,虽然每种技术有不同的特性和保障。
比如MQTT被设计为面向物联网和资源受限网络的轻量级发布/订阅协议。NATS则提供发布/订阅、请求/响应和流式处理模式,能力上更偏向分布式系统和边缘场景。
在这套架构里,核心理念更通用:不要不断询问所有事情的状态,而是在发生变化时发出信号,让感兴趣的组件自行响应。
一个信号的概念示例:
{ "timestamp": 1766646840.426, "type": "mosquito_pulse", "origin": "manager_alpha", "status": "active", "mode": "master"
} 这条消息可以代表遥测事件、状态变更、协调信号或需要处理的某种条件。
信号网络解耦了生产者和消费者,允许在不重构整个系统的前提下引入新组件。
Git被官方定义为分布式版本控制系统。它在主权架构里的价值远超代码存储。
一个Git仓库可以作为以下内容的可追溯层:
但有个重要澄清:Git不应该被误当作运维数据库或绝对不可变的账本。
它的优势在于保存和分发项目变更历史。每个克隆都包含完整仓库历史,允许分布式协作,并在远程服务器不可用时仍能恢复信息。
在主权架构里,这允许分离两个概念:
期望状态:系统声明它应该是什么样。
运维状态:此刻各节点上正在发生什么。
Git可以表达前者。数据库、队列、日志和遥测数据可以表达后者。这种分离对于避免把版本控制工具变成承担过多职责的组件至关重要。
在这套架构里,Python承担协调层的角色。
这不意味着Python必须执行所有高频操作。边缘节点可以按不同层次划分职责:
这种分离允许在Python最能发挥价值的地方使用它:连接组件、处理事件、应用规则、协调任务和维护高层逻辑。
原则不是选一种语言做所有事,而是把每种职责分配到合适的层级。
轻量级二进制协议构成了架构中的一个特定层级。
它的目的是提供一种面向机器的通信格式,适用于消息大小、发送者身份和数据可验证性都很重要的场景。
架构可以把协议视为节点间的契约边界:
输入 → 验证 → 解析 → 处理 → 响应
加密身份允许把一条消息不仅仅当作任意字节,而是当作与身份和验证规则关联的单元。
验证需要考虑的实现要素:
示例验证签名:
VALIDADO_NODO_A16_SV_2026_07_17_0120_AUTONOMO 这个字符串作为架构示例中的验证标识符存在。它本身不应该被解释为密码学证明:真正的验证必须依赖于协议实现定义的密码学原语、密钥、元数据和规则。
这个细节很重要。主权架构不应该要求对某个标签盲目信任,而应该允许验证这个断言。
边缘节点是前面各层交汇的地方。
一个节点可以接收信号、维持本地状态、执行协调逻辑、验证消息,并与基础设施定义的期望状态同步。
简化示意:
┌───────────────────────────┐ │ DESIRED STATE │ │ Git / contracts │ └────────────┬──────────────┘ │ ▼
┌───────────────┐ ┌─────────────────────┐ ┌───────────────┐
│ Signal Net │ ───► │ EDGE NODE │ ◄─── │ Protocol │
│ EDA / MQTT │ │ │ │ validation │
│ / NATS │ │ Python / runtime │ └───────────────┘
└───────────────┘ │ Local state │ │ Rules / agents │ └──────────┬──────────┘ │ ▼ ┌────────────────────┐ │ Sensors / │ │ actuators / AI │ └────────────────────┘ 云可以作为补充层继续存在:
架构上的区别在于:边缘节点不再是被远程中心控制的附属终端。它可以保留本地能力,并按照预定义策略运行。
没有治理的自治很快会变成混乱。
因此,分布式架构需要机制来了解:
这里引出第六个原则:每个重要决策都必须留下可验证的痕迹。
技术治理不等于从中央服务器控制每个操作。它意味着定义可以被审计的契约、边界、身份和恢复程序。
自治和治理不是对立的。成熟的架构需要两者兼顾。
六个支柱可以总结如下:
SIGNAL NETWORK │ ▼ EVENTS ──────────────┐ │ ▼ ┌─────────────┐ │ EDGE NODE │ │ │ │ Python │ │ + │ │ agents │ └──────┬──────┘ │ ┌──────────┴──────────┐ ▼ ▼ PROTOCOL LOCAL STATE │ │ └──────────┬──────────┘ ▼ TECHNICAL GOVERNANCE ▲ │ GIT / CONTRACTS 每个组件都有独特的功能:
技术主权不应该被简化为一句政治或商业口号。
在工程层面,它可以表达为系统的一个可验证属性:
当一个外部依赖消失时,系统还能继续做什么?
答案可以识别出架构中哪些部分真正自治,哪些仍然依赖外部服务。
一个系统可以使用互联网、云、代码托管平台、外部API或第三方服务,同时仍然保持边缘架构。
关键问题不是是否存在依赖,而是:当这个依赖不可用时会发生什么?
这个场景——降级模式——是评估分布式系统真实自治能力最有用的测试之一。
主权不是孤立。
它是在定义条件下决策、运行和恢复的能力。
面向自主Agent的架构可以组合信号网络、Git、Python、轻量级协议和边缘节点,而不会把其中任何一个变成万能解决方案。
架构源于职责分离:
像蚂蚁群体一样,系统不需要每个决策都经过单一节点来协调。它需要信号、规则、身份、记忆,最重要的是需要可验证的机制来了解正在发生什么。
主权不是孤立:它是自主决策的能力。
协议规格、映射矩阵和与此架构相关的产物通过开源生态系统公开获取。
参考节点:
节点 A16 — 萨尔瓦多圣米格尔
示例验证标识符:
VALIDADO_NODO_A16_SV_2026_07_17_0120_AUTONOMO