Files
synapse/docs/v1/03_a2n-protocol.md
2026-06-29 02:12:44 +08:00

13 KiB
Raw Permalink Blame History

A2N 协议(Agent-to-N Protocol)

版本:1.0.0 状态:规范 层级:子协议层 基于:灵隙原始协议、A2A 协议 前缀:group: / inter_group:


1. 定位

A2N 协议定义多个 Agent 组成群组进行协同工作的规范,包括群组管理、任务拆分与合并、群体决策、角色与权限、升级机制等。

适用场景:

  • 复杂任务的拆分与并行执行(MapReduce 模式)
  • 多 Agent 协同完成单一目标
  • 群体投票与共识决策
  • 临时或永久的 Agent 工作组
  • 分级升级机制

依赖关系:

  • 群组内成员间的单播通信复用 A2A 协议

2. 功能定义

2.1 群组管理

功能 说明
群组创建 Coordinator 创建群组,定义拓扑结构
群组解散 Coordinator 解散群组
加入群组 Agent 主动申请加入
离开群组 成员主动离开
邀请加入 Coordinator 或成员邀请其他 Agent
接受邀请 被邀请者接受邀请
拒绝邀请 被邀请者拒绝邀请
成员更新通知 成员变动时广播通知
角色变更 Coordinator 调整成员角色
群组冻结 暂停群组活动
群组解冻 恢复群组活动

2.2 群组通信

功能 说明
广播 发送给所有成员
组播 发送给指定成员列表
单播 群内点对点(复用 A2A)
消息中继 通过其他成员转发消息

2.3 任务协作

功能 说明
任务拆分 Coordinator 将大任务拆分为子任务
任务分配 子任务分配给指定 Worker
子任务进度 Worker 上报子任务进度
结果合并 Coordinator 合并子任务结果

2.4 共识投票

功能 说明
发起投票 Coordinator 或 Reviewer 发起投票
提交投票 成员提交选项及理由
达成共识 公布投票结果

2.5 升级机制

功能 说明
共识僵局升级 投票无法达成共识时升级给人类
子任务阻塞升级 子任务阻塞时升级给人类
跨群组升级 升级到更高层级群组

3. 消息类型定义

3.1 群组管理消息(前缀 group:)

消息类型 说明
group:create 创建群组
group:disband 解散群组
group:join 加入群组
group:leave 离开群组
group:invite 邀请加入
group:accept_invite 接受邀请
group:reject_invite 拒绝邀请
group:member_update 成员更新通知
group:role_change 角色变更

3.2 群组通信消息(前缀 group:)

消息类型 说明
group:broadcast 广播(所有成员)
group:multicast 组播(指定成员)
group:direct 群内单播
group:relay 消息中继

3.3 任务协作消息(前缀 group:)

消息类型 说明
group:task_split 任务拆分
group:task_assign 任务分配
group:task_merge 结果合并
group:task_progress 子任务进度

3.4 共识投票消息(前缀 group:)

消息类型 说明
group:vote 发起投票
group:vote_submit 提交投票
group:consensus 达成共识

3.5 HiL 升级消息(前缀 group: / inter_group:)

消息类型 说明
group:consensus_escalate 共识僵局升级给人类
group:subtask_escalate 子任务阻塞升级给人类
group:human_decision 人类决策结果
inter_group:escalate 跨群组升级

4. 核心概念定义

4.1 群组拓扑结构

拓扑类型 说明 适用场景
star 星型,中心 coordinator 协调 简单任务分发
mesh 网状,成员间可直接通信 对等协作
chain 链式,流水线模式 顺序处理
hierarchical 层级型,多层管理 大型复杂任务
fullmesh 全连接网状 高可靠协作

4.2 成员角色

角色 说明 权限
coordinator 协调者 创建/解散群组、任务拆分、发起投票、角色变更
worker 工作者 执行子任务、提交结果、投票
reviewer 审核者 审核结果、发起投票、升级请求
observer 观察者 只读,查看进度

4.3 群组状态

状态 说明
creating 创建中
active 活跃
frozen 冻结(不可执行新任务)
disbanded 已解散(终态)

4.4 合并策略

策略 说明
first_success 首个成功结果即返回
majority 多数结果合并
weighted 按权重加权合并
custom 自定义合并逻辑

4.5 共识类型

类型 说明
majority 多数投票(>50%)
supermajority 绝对多数(>67%)
unanimity 一致同意(100%)
weighted 加权投票

5. 群组生命周期

5.1 状态流转

creating → active → frozen → disbanded
             ↑         ↓
             └─────────┘
               解冻

5.2 群组创建流程

创建者(Coordinator)                被邀请成员
  |                                   |
  |---- group:invite ---------------->|  发送邀请
  |                                   |
  |<--- group:accept_invite ----------|  接受邀请
  |                                   |
  |---- group:member_update --------->|  通知成员更新
  |                                   |
  [群组状态变为 active]                |

5.3 群组解散流程

Coordinator                        所有成员
  |                                   |
  |---- group:disband --------------->|  通知解散
  |                                   |
  [群组状态变为 disbanded]             |

6. 任务协作流程

6.1 MapReduce 模式

                    Coordinator
                         │
          group:task_split(拆分任务)
                         │
       ┌─────────────────┼─────────────────┐
       ▼                 ▼                 ▼
    Worker1           Worker2           Worker3
       │                 │                 │
       │ 执行子任务       │ 执行子任务       │ 执行子任务
       │                 │                 │
       ▼                 ▼                 ▼
    子任务结果        子任务结果        子任务结果
       └─────────────────┼─────────────────┘
                         │
          group:task_merge(合并结果)
                         ▼
                    最终结果

6.2 流程步骤

  1. 任务拆分阶段

    • Coordinator 接收原始任务
    • 将任务拆分为多个子任务
    • 为每个子任务指定执行的 Worker
    • 定义合并策略
  2. 并行执行阶段

    • 各 Worker 并行执行子任务
    • 定期上报进度
    • 子任务完成后上报结果
  3. 结果合并阶段

    • Coordinator 收集所有子任务结果
    • 按合并策略合并结果
    • 返回最终结果

7. 共识投票流程

发起者(vote发起)                   所有成员
  |                                   |
  |---- group:vote ------------------>|  发起投票
  |                                   |
  |<--- group:vote_submit (各成员) ---|  提交投票
  |                                   |
  |---- group:consensus ------------->|  公布结果

8. 载荷结构定义

8.1 群组创建载荷

字段 类型 必填 说明
group_id string ✓ 群组唯一标识
group_name string - 群组名称
topology string ✓ 拓扑结构
config object - 群组配置

8.2 群组配置

字段 类型 说明
max_members integer 最大成员数
vote_threshold float 投票阈值
default_consensus_type string 默认共识类型

8.3 子任务结构

字段 类型 必填 说明
subtask_id string ✓ 子任务标识
description string ✓ 子任务描述
assigned_to string ✓ 执行者 Agent ID
dependencies array - 依赖的子任务 ID 列表
status string ✓ 子任务状态
payload object ✓ 子任务参数

8.4 投票载荷

字段 类型 必填 说明
vote_id string ✓ 投票标识
question string ✓ 投票问题
options array ✓ 选项列表
consensus_type string ✓ 共识类型
deadline string - 截止时间

8.5 投票提交载荷

字段 类型 必填 说明
vote_id string ✓ 投票标识
voter_id string ✓ 投票者 ID
option_id string ✓ 选择的选项
reasoning string - 投票理由

8.6 共识结果载荷

字段 类型 必填 说明
vote_id string ✓ 投票标识
winner string ✓ 获胜选项
vote_counts object ✓ 各选项票数
passed boolean ✓ 是否通过阈值

9. 升级机制

9.1 升级场景

场景 消息类型 说明
共识僵局 group:consensus_escalate 投票超时未达成共识
子任务阻塞 group:subtask_escalate 子任务执行受阻
跨群组 inter_group:escalate 升级到上级群组

9.2 升级载荷

字段 类型 必填 说明
escalation_id string ✓ 升级标识
escalation_type string ✓ 升级类型
escalation_level integer ✓ 升级级别(1/2/3)
context object ✓ 升级上下文
options array - 可选方案

10. 错误处理

群组错误码分段:7000-7999

错误码 名称 说明
7001 群组不存在
7002 群组未激活
7003 成员不存在
7004 不是群组成员
7005 未达成共识
7006 角色不存在
7007 已是成员
7008 群组已满

11. 接口要求

Agent 实现 A2N 协议时必须提供:

接口 说明
群组管理处理器 处理群组创建、加入、离开等
子任务处理器 执行分配的子任务
投票处理器 处理投票相关消息
升级处理器 处理升级请求

12. 与其他协议的关系

  • 依赖原始协议:使用统一消息信封
  • 依赖 A2A 协议:群内单播通信复用 A2A
  • 被 P2A 协议封装:外部调用可触发群组任务