Files
synapse/docs/01-synapse-raw-protocol.md
2026-06-27 14:08:30 +08:00

329 lines
10 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 灵隙原始协议(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:初始版本,定义核心概念与设计原则