site logo

Marico's space

自主Agent架构

编程技术 2026-09-28 14:49:26 8

最近折腾了一套面向自主Agent的架构方案,踩了几个坑,这篇把核心设计理念说清楚。

自然界里,蚂蚁群体不需要中央指挥就能协调行为。每只蚂蚁根据局部信号——比如信息素——和简单规则做出反应,大量信号交互后涌现出能解决复杂问题的群体行为。

这个类比对思考分布式系统很有启发,但有个重要区别:软件架构不应该简单复制自然,而是要把它的原则——局部性、信号、协同和适应性——转化为可验证的技术机制。

在当下的软件工程实践中,这个思路和一个大趋势直接相关:把部分处理和决策能力下沉到网络边缘(Edge),而不是把所有操作集中在远程基础设施上。

目标不是干掉云,而是明确什么必须留在数据源附近、什么可以本地运行、哪些外部服务是真正必需的。

自主Agent的六根支柱

这篇文章提出一套主权架构的六个核心支柱,面向自主Agent设计:

  • 信号网络
  • Git作为期望状态基础设施
  • Python作为编排核心
  • 轻量级协议
  • 边缘架构
  • 技术治理与可追溯性

这不是手把手的教程,而是一份架构路线图,旨在设计出自治性、可追溯性和运维控制都是显式设计属性的分布式系统。

为什么是边缘?从集中式模型到本地决策

多年来,很多软件架构遵循一种集中式模式:数据发送到远程服务,在那里执行核心逻辑,然后把结果返回设备。

这种模式对很多场景仍然适用。但不是所有系统都有相同的约束条件。

机器人、传感器、工业自动化、车载系统、关键基础设施,还有那些需要在网络间歇性中断时继续运行的Agent,可能都需要本地处理、更低延迟和降级运行能力。

所以边缘计算不应该仅仅被定义为一种性能优化手段。

在主权架构里,边缘是一种控制决策:

  • 敏感数据可以保留在数据源附近
  • 关键决策可以在本地执行
  • 即使与远程服务断连,业务也能继续运行
  • 架构可以减少到外部基础设施的不必要流量
  • 每个节点都能维护系统运维能力的明确部分
核心原则:主权不等于与云断连。意思是外部依赖不应该自动成为决策、运维或故障的唯一节点。

信号网络:事件驱动架构

如果把边缘比作躯体,信号网络就是神经系统。

事件驱动架构(EDA)不需要不断轮询所有组件状态,而是让节点发布相关变更,其他组件对此做出响应。

这种模式在消息和连接系统中很常见,比如NATS和MQTT,虽然每种技术有不同的特性和保障。

比如MQTT被设计为面向物联网和资源受限网络的轻量级发布/订阅协议。NATS则提供发布/订阅、请求/响应和流式处理模式,能力上更偏向分布式系统和边缘场景。

在这套架构里,核心理念更通用:不要不断询问所有事情的状态,而是在发生变化时发出信号,让感兴趣的组件自行响应。

一个信号的概念示例:

{ "timestamp": 1766646840.426, "type": "mosquito_pulse", "origin": "manager_alpha", "status": "active", "mode": "master"
}

这条消息可以代表遥测事件、状态变更、协调信号或需要处理的某种条件。

信号网络解耦了生产者和消费者,允许在不重构整个系统的前提下引入新组件。

Git作为期望状态基础设施

Git被官方定义为分布式版本控制系统。它在主权架构里的价值远超代码存储。

一个Git仓库可以作为以下内容的可追溯层:

  • 行为规则
  • 声明式配置
  • 组件间契约
  • 技术文档
  • schema和规格说明
  • 部署策略
  • 配置产物
  • 变更历史

但有个重要澄清:Git不应该被误当作运维数据库或绝对不可变的账本。

它的优势在于保存和分发项目变更历史。每个克隆都包含完整仓库历史,允许分布式协作,并在远程服务器不可用时仍能恢复信息。

在主权架构里,这允许分离两个概念:

期望状态:系统声明它应该是什么样。

运维状态:此刻各节点上正在发生什么。

Git可以表达前者。数据库、队列、日志和遥测数据可以表达后者。这种分离对于避免把版本控制工具变成承担过多职责的组件至关重要。

Python作为编排核心

在这套架构里,Python承担协调层的角色。

这不意味着Python必须执行所有高频操作。边缘节点可以按不同层次划分职责:

  • Python负责业务逻辑和编排
  • 编译型二进制负责高性能运算
  • 轻量级协议负责节点间通信
  • 本地数据库负责运维状态
  • Git负责配置、规格说明和可追溯性
  • 专用服务负责需要不同运行时的任务

这种分离允许在Python最能发挥价值的地方使用它:连接组件、处理事件、应用规则、协调任务和维护高层逻辑。

原则不是选一种语言做所有事,而是把每种职责分配到合适的层级。

轻量级协议:可验证身份的序列化

轻量级二进制协议构成了架构中的一个特定层级。

它的目的是提供一种面向机器的通信格式,适用于消息大小、发送者身份和数据可验证性都很重要的场景。

架构可以把协议视为节点间的契约边界:

输入 → 验证 → 解析 → 处理 → 响应

加密身份允许把一条消息不仅仅当作任意字节,而是当作与身份和验证规则关联的单元。

验证需要考虑的实现要素:

  • 消息完整性
  • 真实性
  • 节点身份
  • 防重放攻击
  • 协议版本
  • Schema兼容性
  • 执行上下文

示例验证签名:

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

每个组件都有独特的功能:

  • 信号网络负责通信
  • Python负责协调
  • 协议定义可验证的通信边界
  • 边缘在数据源附近执行
  • Git保存历史和期望状态
  • 治理提供规则,让上面的一切在演进中不失可追溯性

主权作为架构属性

技术主权不应该被简化为一句政治或商业口号。

在工程层面,它可以表达为系统的一个可验证属性:

当一个外部依赖消失时,系统还能继续做什么?

答案可以识别出架构中哪些部分真正自治,哪些仍然依赖外部服务。

一个系统可以使用互联网、云、代码托管平台、外部API或第三方服务,同时仍然保持边缘架构。

关键问题不是是否存在依赖,而是:当这个依赖不可用时会发生什么?

这个场景——降级模式——是评估分布式系统真实自治能力最有用的测试之一。

总结

主权不是孤立。

它是在定义条件下决策、运行和恢复的能力。

面向自主Agent的架构可以组合信号网络、Git、Python、轻量级协议和边缘节点,而不会把其中任何一个变成万能解决方案。

架构源于职责分离:

  • 事件传输信号
  • 节点执行本地决策
  • 协议建立契约
  • Git保存历史和期望状态
  • 治理提供可追溯性
  • 边缘基础设施让真正需要本地化的能力留在数据附近

像蚂蚁群体一样,系统不需要每个决策都经过单一节点来协调。它需要信号、规则、身份、记忆,最重要的是需要可验证的机制来了解正在发生什么。

主权不是孤立:它是自主决策的能力。

可追溯性与源码

协议规格、映射矩阵和与此架构相关的产物通过开源生态系统公开获取。

参考节点:

节点 A16 — 萨尔瓦多圣米格尔

示例验证标识符:

VALIDADO_NODO_A16_SV_2026_07_17_0120_AUTONOMO