| **Agent-Human** | Agent 与人类协同 | 人类审批 | 无 |
1.2 按协作模式分类
| 模式 | 描述 | 协议 | 状态 |
|------|------|------|------|
| **顺序协同** | A → B → C 链式执行 | 委托链 | ✅ 已实现 |
| **并行协同** | A → B & C 同时执行 | 批量委托 | ✅ 已实现 |
| **层级协同** | 主协调者 + 执行者 | 委托 | ✅ 已实现 |
| **对等协同** | Agent 之间平等协商 | P2P A2A | 🔜 待实现 |
| **竞争协同** | 多个 Agent 竞标任务 | 竞价协议 | 🔜 待实现 |
1.3 按同步模式分类
| 模式 | 描述 | 端点 | 状态 |
|------|------|------|------|
| **同步** | 等待结果返回 | `/a2a/v1/task/` | ✅ 已实现 |
| **异步** | 立即返回 task_id,后台执行 | `/delegate/` + `GET /tasks/{id}` | ✅ 已实现 |
| **事件驱动** | 发布/订阅 | 🔜 待实现 | ❌ |
---
2. Intra-OS 协同(机构内部)
2.1 架构
```
┌─────────────────────────────────┐
│ Maian OS (同一实例) │
│ │
│ ┌──────────┐ │
│ │ Gateway │ (8888) │
│ └────┬─────┘ │
│ │ │
│ ┌────▼──────────┐ │
│ │ Agent Factory │ (8877) │
│ │ │ │
│ │ ┌─────┐ ┌─────┐ ┌─────┐ │
│ │ │main │ │worker│ │tool │ │
│ │ └──┬──┘ └──┬──┘ └──┬──┘ │
│ └────┼───────┼───────┼─────────┘
│ │ │ │ │
│ ┌────▼───────▼───────▼─────────┐ │
│ │ 共享状态(可选) │ │
│ └────────────────────────────┘ │
└─────────────────────────────────┘
```
2.2 委托协议
**端点:** `POST /delegate/{from_agent}/{to_agent}`
**请求:**
{
"action": "run_code",
"code": "print(1+1)"
}
**响应(同步):**
{
"status": "completed",
"result": {"output": "2\n", "error": null}
}
**响应(异步):**
{
"task_id": "uuid",
"status": "pending",
"message": "Task submitted, poll GET /tasks/uuid"
}
2.3 并行协同
**端点:** `POST /delegate/batch`
**请求:**
{
"tasks": [
{"to": "maian-worker", "payload": {"action": "run_code", "code": "print(1+1)"}},
{"to": "maian-worker", "payload": {"action": "run_code", "code": "print(2+2)"}},
{"to": "maian-main", "payload": {"prompt": "say hi"}}
]
}
**响应:**
{
"task_ids": ["uuid1", "uuid2", "uuid3"],
"status": "pending",
"message": "Submitted 3 tasks"
}
2.4 会话上下文
**创建会话:** `POST /sessions` → `{"session_id": "uuid"}`
**带会话委托:** `POST /sessions/{session_id}/delegate/{to_agent}`
会话上下文会注入到 `payload._session_context`,支持多轮协同共享状态。
---
3. Inter-OS 协同(机构间)
3.1 架构
```
┌─────────────────┐ ┌─────────────────┐
│ OS-A │ │ OS-B │
│ │ │ │
│ Agent Factory │ │ Agent Factory │
│ (8877) │ │ (8877) │
│ │ │ │ │ │
│ Gateway (8888) │ ◄──A2A──►│ Gateway (8888)│
│ │ │ │ │ │
│ Soraecho Reg │ │ Soraecho Reg │
└───────┬─────────┘ └───────┬─────────┘
│ │
└──────────┬───────────────┘
│
┌───────▼────────┐
│ Soraecho 网络 │
│ (发现+注册) │
└────────────────┘
```
3.2 跨 OS 调用流程
• **发现:** OS-A 通过 Soraecho 查询 OS-B 的 AgentCard
• **获取端点:** 读取 `endpoints[]` 中的 A2A 地址
3. **签名:** OS-A Agent 用 Ed25519 私钥签名请求
4. **直连调用:** OS-A → OS-B Gateway(不经过 Soraecho 转发)
5. **验证:** OS-B 验证签名(DID Auth)
6. **执行:** OS-B 执行任务
7. **结算:** KOAN 结算(待集成)
3.3 DID 签名验证
**请求头:**
```
X-Maian-Signature: {
"signer_did": "did:key:maian-main-20260726",
"signer_name": "maian-main",
"public_key_b64": "base64...",
"signature_b64": "base64...",
"timestamp": 1785068782,
"payload_hash": "sha256..."
}
```
**验证规则:**
• ✅ 签名有效(Ed25519 验证通过)
• ✅ payload 未被篡改(hash 匹配)
• ⚠️ 时间戳在 ±5 分钟内(防重放,允许时钟偏差)
3.4 跨 OS 发现协议
**发现请求:**
```
GET /api/v1/agentcard/discover?capability=model.chat&limit=20
```
**AgentCard 格式(跨 OS):**
{
"did": "did:key:os-b-agent-001",
"name": "OS-B-Agent",
"capabilities": ["model.chat", "code.run"],
"endpoints": ["http://os-b.example.com:8888/a2a/v1/task"],
"public_key_b64": "base64...",
"price_per_token": 0.00015,
"os": "maian-os"
}
---
4. Agent-Human 协同
4.1 场景
| 场景 | 描述 |
|------|------|
| **Human-in-the-loop** | Agent 执行前需要人类审批 |
| **人类反馈** | 人类纠正 Agent 的输出 |
| **人类作为 Agent** | 人类通过 UI 加入协同网络 |
4.2 协议(待实现)
```
Agent → Human: 请求审批(task_id + description)
Human → Agent: 审批结果(approve / reject / modify)
```
---
5. 任务状态机
```
┌─────────┐
│ pending │
└────┬────┘
│
▼
┌─────────┐
│ running │
└────┬────┘
│
┌──────┴──────┐
▼ ▼
┌─────────┐ ┌─────────┐
│completed│ │ error │
└─────────┘ └─────────┘
```
**状态查询:** `GET /tasks/{task_id}`
---
6. 安全机制
6.1 信任等级
| 等级 | 场景 | 验证方式 |
|------|------|---------|
| **L0** | 同一进程内 | 无需验证 |
| **L1** | 同一 OS(内网) | 可选签名 |
| **L2** | 跨 OS(外网) | 强制 DID 签名 |
| **L3** | 跨 OS + 结算 | DID 签名 + KOAN 验证 |
6.2 防篡改/防重放
• **防篡改:** payload 签名验证(Ed25519)
• **防重放:** timestamp 检查(±5 分钟窗口)
• **防伪造:** DID 公钥验证(从 Soraecho 查询)
---
7. 最佳实践
7.1 何时用同步 vs 异步
| 场景 | 推荐模式 |
|------|---------|
| 快速查询(< 1s) | 同步 |
| 长时间任务(> 2s) | 异步 + 轮询 |
| 批量任务 | 异步 batch |
| 需要取消/超时 | 异步 + task_id |
7.2 错误处理
• 同步:返回 HTTP 错误码 + error 字段
• 异步:task.status = "error",查询 task_id 获取错误
7.3 超时设置
| 操作 | 推荐超时 |
|------|---------|
| A2A 同步调用 | 30s |
| 跨 OS 调用 | 60s |
| 异步任务最大执行时间 | 300s |
---
8. 版本历史
| 版本 | 日期 | 变更 |
|------|------|------|
| v1.0 | 2026-07-26 | 初始版本,定义 Intra/Inter 分类 |