329 lines
10 KiB
Markdown
329 lines
10 KiB
Markdown
# 灵隙原始协议(Synapse Raw Protocol)
|
||
|
||
> 版本:1.0.0
|
||
> 状态:草案
|
||
> 类型:纲领性文档
|
||
|
||
---
|
||
|
||
## 1. 协议愿景
|
||
|
||
灵隙(Synapse,原 Agent-to-Agent)协议旨在定义一套通用的、可扩展的智能体间通信标准,使不同系统、不同厂商、不同能力的智能体能够在统一的协议框架下进行协作、交易与能力组合。
|
||
|
||
本协议是灵隙协议族(Synapse Protocol Suite)的原始纲领,定义核心设计理念、架构原则与术语体系,为所有衍生协议提供顶层指导。
|
||
|
||
---
|
||
|
||
## 2. 核心设计理念
|
||
|
||
### 2.1 去中心化对等(Peer-to-Peer)
|
||
- 所有 Agent 在协议层面地位平等,无中心化控制节点
|
||
- 每个 Agent 既是服务提供者,也是服务消费者
|
||
- Agent 间直接通信,不依赖中间 broker(传输层可选择不同实现)
|
||
|
||
### 2.2 能力驱动(Capability-Driven)
|
||
- 通信以能力为核心,而非以身份为核心
|
||
- Agent 声明自身能力,按需发现与调用
|
||
- 能力可组合、可分解、可升级
|
||
|
||
### 2.3 任务导向(Task-Oriented)
|
||
- 所有交互围绕"任务"展开
|
||
- 任务有明确的生命周期、状态机与超时机制
|
||
- 任务支持拆分、合并、委派与协作
|
||
|
||
### 2.4 人类可介入(Human-in-the-Loop)
|
||
- 协议原生支持人类介入决策
|
||
- Agent 可主动请求人类判断
|
||
- 人类决策优先于 Agent 自动决策
|
||
- 支持多级升级(escalation)机制
|
||
|
||
### 2.5 群组协作(Group Collaboration)
|
||
- 支持多 Agent 组成临时或永久群组
|
||
- 群组内有角色分工与权限控制
|
||
- 支持任务拆分-执行-合并的 MapReduce 模式
|
||
- 支持投票、共识等群体决策机制
|
||
|
||
### 2.6 传输无关(Transport Agnostic)
|
||
- 协议语义与底层传输分离
|
||
- 支持 HTTP/2、gRPC、WebSocket、消息队列等多种传输
|
||
- 支持回调(Callback)、轮询(Polling)、同步(Sync)、混合(Hybrid)等多种交互模式
|
||
|
||
### 2.7 安全可信(Secure & Trustworthy)
|
||
- 消息级签名与验证
|
||
- Agent 身份认证与信任等级
|
||
- 支持加密传输
|
||
- 可审计、可追溯
|
||
|
||
---
|
||
|
||
## 3. 协议分层架构
|
||
|
||
```
|
||
┌─────────────────────────────────────────┐
|
||
│ 应用层 (Application) │
|
||
│ 业务逻辑、工作流、领域特定逻辑 │
|
||
├─────────────────────────────────────────┤
|
||
│ 协议层 (Protocol) │
|
||
├─────────────┬───────────────────────────┤
|
||
│ A2A 协议 │ A2N 组群协议 │ ← 本协议族
|
||
│ (P2P) │ (Group) │
|
||
├─────────────┴───────────────────────────┤
|
||
│ 传输层 (Transport) │
|
||
│ HTTP / gRPC / WebSocket / MQ ... │
|
||
├─────────────────────────────────────────┤
|
||
│ 网络层 (Network) │
|
||
│ TCP / UDP / QUIC ... │
|
||
└─────────────────────────────────────────┘
|
||
```
|
||
|
||
### 3.1 协议族构成
|
||
|
||
| 协议名称 | 缩写 | 描述 | 适用场景 |
|
||
|---------|------|------|---------|
|
||
| 灵隙原始协议(Synapse Raw Protocol) | A2A-Raw | 顶层纲领,定义理念、术语、原则 | 指导所有协议设计 |
|
||
| A2A 协议 | A2A-Base | 点对点任务协作协议 | 两个 Agent 间的任务交互 |
|
||
| A2N 组群协议 | A2N-Group | 多 Agent 群组协作协议 | 多个 Agent 协同完成任务 |
|
||
| P2A 调用协议 | P2A-Caller | 非 Agent 调用者接入协议 | 普通服务/前端调用 Agent 能力 |
|
||
|
||
---
|
||
|
||
## 4. 核心概念与术语
|
||
|
||
### 4.1 Agent(智能体)
|
||
能够自主感知环境、做出决策并执行动作的计算实体。
|
||
|
||
**属性:**
|
||
- `agent_id`:Agent 唯一标识
|
||
- `system_id`:所属系统标识
|
||
- `endpoint`:通信端点地址
|
||
- `capabilities`:能力清单
|
||
- `trust_level`:信任等级
|
||
|
||
### 4.2 Task(任务)
|
||
Agent 间协作的基本单位,具有明确的输入、输出与生命周期。
|
||
|
||
**属性:**
|
||
- `task_id`:任务唯一标识
|
||
- `task_type`:任务类型
|
||
- `payload`:任务载荷
|
||
- `status`:任务状态
|
||
- `priority`:优先级
|
||
- `deadline`:截止时间
|
||
|
||
### 4.3 Message(消息)
|
||
Agent 间通信的基本单位。
|
||
|
||
**属性:**
|
||
- `message_id`:消息唯一标识
|
||
- `type`:消息类型
|
||
- `sender`:发送方
|
||
- `receiver`:接收方(P2P)
|
||
- `group_id`:群组标识(群组)
|
||
- `payload`:消息载荷
|
||
- `correlation_id`:关联标识(用于请求-响应关联)
|
||
- `timestamp`:时间戳
|
||
- `signature`:签名
|
||
|
||
### 4.4 Capability(能力)
|
||
Agent 能够执行的任务类型的声明。
|
||
|
||
**属性:**
|
||
- `type`:能力对应的任务类型
|
||
- `name`:能力名称
|
||
- `description`:能力描述
|
||
- `input_schema`:输入参数 schema
|
||
- `output_schema`:输出结果 schema
|
||
- `estimated_time`:预估耗时
|
||
|
||
### 4.5 Group(群组)
|
||
由多个 Agent 组成的协作单元。
|
||
|
||
**属性:**
|
||
- `group_id`:群组唯一标识
|
||
- `name`:群组名称
|
||
- `topology`:拓扑结构
|
||
- `members`:成员列表
|
||
- `roles`:角色定义
|
||
- `status`:群组状态
|
||
|
||
### 4.6 Human-in-the-Loop(人在回路)
|
||
在 Agent 协作过程中,人类可介入进行决策的机制。
|
||
|
||
**关键概念:**
|
||
- `escalation`:升级(将问题提交给人类)
|
||
- `decision`:决策(人类做出的判断)
|
||
- `resume`:恢复(人类决策后继续执行)
|
||
|
||
---
|
||
|
||
## 5. 设计原则
|
||
|
||
### 5.1 简约性(Simplicity)
|
||
- 核心机制保持简单
|
||
- 复杂功能通过组合基础机制实现
|
||
- 可选功能通过能力声明来协商
|
||
|
||
### 5.2 可扩展性(Extensibility)
|
||
- 消息类型可扩展
|
||
- 能力类型可扩展
|
||
- 传输方式可扩展
|
||
- 通过版本号与能力协商保证向后兼容
|
||
|
||
### 5.3 容错性(Fault Tolerance)
|
||
- 网络不可靠是常态
|
||
- 消息可能丢失、重复、延迟
|
||
- Agent 可能故障、离线
|
||
- 协议必须有重试、超时、降级机制
|
||
|
||
### 5.4 可观测性(Observability)
|
||
- 所有交互可追踪
|
||
- 任务状态可查询
|
||
- 支持日志、指标、链路追踪
|
||
|
||
### 5.5 互操作性(Interoperability)
|
||
- 不同语言、不同框架的 Agent 可互操作
|
||
- 协议规范优先于具体实现
|
||
- 提供标准测试用例验证兼容性
|
||
|
||
---
|
||
|
||
## 6. 消息模型总则
|
||
|
||
### 6.1 统一消息信封
|
||
所有协议共享统一的消息信封结构,具体载荷由消息类型决定。
|
||
|
||
```
|
||
UnifiedSynapseMessage
|
||
├── id // 消息ID
|
||
├── version // 协议版本
|
||
├── type // 消息类型
|
||
├── sender // 发送方 AgentEndpoint
|
||
├── receiver? // 接收方(P2P 时)
|
||
├── group_id? // 群组ID(群组时)
|
||
├── correlation_id // 关联ID
|
||
├── reply_to? // 回复的消息ID
|
||
├── payload // 消息载荷(JSON)
|
||
├── priority? // 优先级
|
||
├── signature? // 签名
|
||
├── timestamp // 发送时间
|
||
└── expires_at? // 过期时间
|
||
```
|
||
|
||
### 6.2 消息命名规范
|
||
- 使用 `领域:动作` 格式
|
||
- 全小写,用下划线分隔
|
||
- 示例:`p2p:task_request`, `group:create`, `hil:decision`
|
||
|
||
### 6.3 请求-响应模式
|
||
- 请求消息必须携带唯一 `id`
|
||
- 响应消息通过 `reply_to` 关联请求
|
||
- 支持 ACK/NACK 机制
|
||
- 超时未收到响应应重试或报错
|
||
|
||
---
|
||
|
||
## 7. 任务生命周期总则
|
||
|
||
### 7.1 状态机
|
||
|
||
```
|
||
┌──────────┐
|
||
│ pending │ 待确认
|
||
└────┬─────┘
|
||
│ 确认/拒绝
|
||
┌─────┴──────┐
|
||
▼ ▼
|
||
┌─────────┐ ┌──────────┐
|
||
│confirmed│ │ rejected │ 已拒绝(终态)
|
||
└────┬────┘ └──────────┘
|
||
│ 开始执行
|
||
▼
|
||
┌──────────┐
|
||
│executing │ 执行中
|
||
└────┬─────┘
|
||
│ 信息缺失
|
||
┌────▼─────┐
|
||
│info_needed│ 需要信息
|
||
└────┬─────┘
|
||
│ 信息补充
|
||
▼
|
||
回到 executing
|
||
│
|
||
├──────────────┐
|
||
│ 需人类决策 │
|
||
▼ ▼
|
||
┌──────────┐ ┌───────────┐
|
||
│need_human│ │ 各种终态 │
|
||
└────┬─────┘ └───────────┘
|
||
│ 人类决策
|
||
▼
|
||
回到 executing
|
||
│
|
||
┌────┴────┬─────────┐
|
||
▼ ▼ ▼
|
||
completed failed cancelled
|
||
(完成) (失败) (取消)
|
||
```
|
||
|
||
### 7.2 终态
|
||
- `completed`:成功完成
|
||
- `failed`:执行失败
|
||
- `cancelled`:被取消
|
||
- `rejected`:被拒绝
|
||
|
||
---
|
||
|
||
## 8. 安全模型总则
|
||
|
||
### 8.1 身份认证
|
||
- 每个 Agent 有唯一身份
|
||
- 支持 HMAC、JWT、OAuth2 等多种认证方式
|
||
- 信任等级机制
|
||
|
||
### 8.2 消息完整性
|
||
- 消息签名机制
|
||
- 防止篡改与伪造
|
||
|
||
### 8.3 机密性
|
||
- 支持端到端加密
|
||
- 敏感载荷加密传输
|
||
|
||
### 8.4 访问控制
|
||
- 基于信任等级的权限控制
|
||
- 群组内基于角色的权限控制
|
||
|
||
---
|
||
|
||
## 9. 非目标
|
||
|
||
以下内容**不在**本原始协议的讨论范围内:
|
||
|
||
1. **具体传输协议的实现细节** - 由各传输层实现定义
|
||
2. **特定领域的任务类型** - 由应用层或领域扩展定义
|
||
3. **Agent 内部实现架构** - 仅定义对外接口与行为
|
||
4. **具体编程语言绑定** - 语言无关,可多语言实现
|
||
5. **UI/UX 设计** - 人机界面不在协议范围内
|
||
|
||
---
|
||
|
||
## 10. 参考实现
|
||
|
||
本协议族的参考实现位于:`dp-headless/synapse/`
|
||
|
||
| 模块 | 对应协议 | 文件路径 |
|
||
|------|---------|---------|
|
||
| types 包 | 公共类型定义 | `types/` |
|
||
| p2p 包 | A2A 协议 | `p2p/` |
|
||
| group 包 | A2N 组群协议 | `group/` |
|
||
| externalapi 包 | P2A 调用协议 | `externalapi/` |
|
||
| sdk 包 | P2A 客户端 SDK | `sdk/` |
|
||
|
||
---
|
||
|
||
## 附录 A:协议演进
|
||
|
||
本原始协议作为顶层指导,保持相对稳定。各具体协议可独立版本化演进,但需遵循本协议定义的核心原则。
|
||
|
||
**版本历史:**
|
||
- v1.0.0:初始版本,定义核心概念与设计原则
|