@agentunion/fastaun-browser 0.2.19 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +50 -0
- package/_packed_docs/CHANGELOG.md +50 -0
- package/_packed_docs/agent.md/SCHEMA.md +173 -0
- package/_packed_docs/agent.md/examples/codeagent-claudecode.md +61 -0
- package/_packed_docs/agent.md/examples/human-developer.md +60 -0
- package/_packed_docs/agent.md/examples/openclaw-lobster.md +52 -0
- package/_packed_docs/agent.md/examples/signed-openclaw-lobster.md +43 -0
- package/_packed_docs/protocol/00-/346/200/273/350/247/210/344/270/216/345/210/206/345/261/202.md +205 -0
- package/_packed_docs/protocol/00A-/350/256/276/350/256/241/345/216/237/345/210/231-/344/270/272Agent/350/200/214/347/224/237.md +197 -0
- package/_packed_docs/protocol/01-/350/272/253/344/273/275/344/270/216/345/207/255/350/257/201/345/215/217/350/256/256-auth.md +549 -0
- package/_packed_docs/protocol/02-/350/257/201/344/271/246/344/270/216/344/277/241/344/273/273/344/275/223/347/263/273.md +810 -0
- package/_packed_docs/protocol/03-Gateway-/350/277/236/346/216/245/346/250/241/345/274/217.md +262 -0
- package/_packed_docs/protocol/04-Peer-/345/255/220/345/215/217/350/256/256.md +180 -0
- package/_packed_docs/protocol/05-Relay-/345/255/220/345/215/217/350/256/256.md +164 -0
- package/_packed_docs/protocol/06-/346/234/215/345/212/241/345/215/217/350/256/256.md +1135 -0
- package/_packed_docs/protocol/07-/351/224/231/350/257/257/347/240/201/344/270/216/347/212/266/346/200/201/346/234/272.md +234 -0
- package/_packed_docs/protocol/08-AUN-E2EE-Group.md +900 -0
- package/_packed_docs/protocol/08-AUN-E2EE.md +413 -0
- package/_packed_docs/protocol/09-/345/256/211/345/205/250/350/200/203/350/231/221.md +316 -0
- package/_packed_docs/protocol/10-Group-/345/255/220/345/215/217/350/256/256.md +804 -0
- package/_packed_docs/protocol/11-Storage-/345/255/220/345/215/217/350/256/256.md +271 -0
- package/_packed_docs/protocol/12-Stream-/345/255/220/345/215/217/350/256/256.md +329 -0
- package/_packed_docs/protocol/13-Agent/350/241/214/344/270/272/350/247/204/350/214/203.md +141 -0
- package/_packed_docs/protocol/14-/344/272/244/344/272/222/346/234/272/345/210/266-/345/223/215/345/272/224/346/250/241/345/274/217/344/270/216/350/207/252/344/270/273/346/250/241/345/274/217.md +170 -0
- package/_packed_docs/protocol/15-/347/246/273/347/272/277/346/216/250/351/200/201/351/200/232/347/237/245/345/215/217/350/256/256.md +419 -0
- package/_packed_docs/protocol/README.md +71 -0
- package/_packed_docs/protocol/agent.md/SCHEMA.md +118 -0
- package/_packed_docs/protocol/agent.md/examples/codeagent-claudecode.md +61 -0
- package/_packed_docs/protocol/agent.md/examples/human-developer.md +60 -0
- package/_packed_docs/protocol/agent.md/examples/openclaw-lobster.md +52 -0
- package/_packed_docs/protocol/aun-docs-guide.md +49 -0
- package/_packed_docs/protocol/index.md +124 -0
- package/_packed_docs/protocol//350/215/211/346/241/210-agent.md/347/255/276/345/220/215/345/215/217/350/256/256.md +205 -0
- package/_packed_docs/protocol//350/215/211/346/241/210-/346/213/222/347/273/235/344/277/241/345/217/267/345/215/217/350/256/256.md +249 -0
- package/_packed_docs/protocol//351/231/204/345/275/225A-/346/234/257/350/257/255/350/241/250.md +337 -0
- package/_packed_docs/protocol//351/231/204/345/275/225B-/346/211/251/345/261/225/346/200/247/346/214/207/345/215/227.md +80 -0
- package/_packed_docs/protocol//351/231/204/345/275/225C-/347/247/201/351/222/245/347/256/241/347/220/206/344/270/216/350/272/253/344/273/275/346/201/242/345/244/215.md +704 -0
- package/_packed_docs/protocol//351/231/204/345/275/225D-Root_CA_/346/262/273/347/220/206/346/234/272/345/210/266.md +620 -0
- package/_packed_docs/protocol//351/231/204/345/275/225E-Root_CA_/345/207/206/345/205/245/346/265/201/347/250/213.md +605 -0
- package/_packed_docs/protocol//351/231/204/345/275/225F-Issuer_CA_/347/224/263/350/257/267/346/265/201/347/250/213.md +548 -0
- package/_packed_docs/protocol//351/231/204/345/275/225G-AID_/345/255/244/345/204/277/351/242/204/351/230/262/344/270/216/346/225/221/346/217/264/346/234/272/345/210/266.md +513 -0
- package/_packed_docs/protocol//351/231/204/345/275/225H-Identity/346/234/215/345/212/241/345/256/236/347/216/260/346/214/207/345/215/227.md +619 -0
- package/_packed_docs/protocol//351/231/204/345/275/225I-/350/267/250/345/237/237/346/266/210/346/201/257/350/267/257/347/224/261/345/256/236/347/216/260/346/214/207/345/215/227.md +492 -0
- package/_packed_docs/protocol//351/231/204/345/275/225J-/345/256/242/346/210/267/347/253/257/346/216/245/345/205/245/347/244/272/344/276/213.md +402 -0
- package/_packed_docs/protocol//351/231/204/345/275/225K-Agent_Web/345/217/221/347/216/260/345/215/217/350/256/256.md +130 -0
- package/_packed_docs/protocol//351/231/204/345/275/225L-E2EE/345/256/236/347/216/260/346/214/207/345/215/227.md +267 -0
- package/_packed_docs/protocol//351/231/204/345/275/225M-JWT/350/256/244/350/257/201/345/256/236/347/216/260/346/214/207/345/215/227.md +367 -0
- package/_packed_docs/python-sdk-v2-only-changelog.md +189 -0
- package/_packed_docs/sdk/01-/345/277/253/351/200/237/345/274/200/345/247/213.md +223 -0
- package/_packed_docs/sdk/02-WebSocket/345/215/217/350/256/256.md +354 -0
- package/_packed_docs/sdk/03-/346/240/270/345/277/203/346/246/202/345/277/265.md +172 -0
- package/_packed_docs/sdk/04-/350/277/236/346/216/245/344/270/216/350/256/244/350/257/201.md +396 -0
- package/_packed_docs/sdk/05-E2EE/345/212/240/345/257/206/351/200/232/344/277/241.md +611 -0
- package/_packed_docs/sdk/06-API/346/211/213/345/206/214.md +1203 -0
- package/_packed_docs/sdk/07-/351/224/231/350/257/257/345/244/204/347/220/206.md +150 -0
- package/_packed_docs/sdk/08-/346/234/200/344/275/263/345/256/236/350/267/265.md +89 -0
- package/_packed_docs/sdk/09-custody-api-manual.md +445 -0
- package/_packed_docs/sdk/09-group-rpc-manual.md +1895 -0
- package/_packed_docs/sdk/09-message-rpc-manual.md +597 -0
- package/_packed_docs/sdk/09-meta-rpc-manual.md +142 -0
- package/_packed_docs/sdk/09-payload-reference.md +702 -0
- package/_packed_docs/sdk/09-storage-rpc-manual.md +408 -0
- package/_packed_docs/sdk/09-stream-rpc-manual.md +275 -0
- package/_packed_docs/sdk/AUN_DOCS_GUIDE.md +72 -0
- package/_packed_docs/sdk/INDEX.md +131 -0
- package/_packed_docs/sdk/README.md +307 -0
- package/dist/auth.d.ts +2 -1
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +33 -14
- package/dist/auth.js.map +1 -1
- package/dist/bundle.js +14300 -0
- package/dist/client.d.ts +200 -178
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +3096 -4019
- package/dist/client.js.map +1 -1
- package/dist/config.d.ts +0 -4
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +0 -4
- package/dist/config.js.map +1 -1
- package/dist/crypto.d.ts +8 -1
- package/dist/crypto.d.ts.map +1 -1
- package/dist/crypto.js +114 -1
- package/dist/crypto.js.map +1 -1
- package/dist/e2ee.d.ts +5 -210
- package/dist/e2ee.d.ts.map +1 -1
- package/dist/e2ee.js +4 -1379
- package/dist/e2ee.js.map +1 -1
- package/dist/index.d.ts +7 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -4
- package/dist/index.js.map +1 -1
- package/dist/namespaces/auth.d.ts +1 -0
- package/dist/namespaces/auth.d.ts.map +1 -1
- package/dist/namespaces/auth.js +23 -8
- package/dist/namespaces/auth.js.map +1 -1
- package/dist/protected-headers.d.ts +14 -0
- package/dist/protected-headers.d.ts.map +1 -0
- package/dist/protected-headers.js +47 -0
- package/dist/protected-headers.js.map +1 -0
- package/dist/seq-tracker.d.ts +7 -2
- package/dist/seq-tracker.d.ts.map +1 -1
- package/dist/seq-tracker.js +31 -10
- package/dist/seq-tracker.js.map +1 -1
- package/dist/transport.d.ts +9 -1
- package/dist/transport.d.ts.map +1 -1
- package/dist/transport.js +24 -0
- package/dist/transport.js.map +1 -1
- package/dist/v2/crypto/aead.d.ts +26 -0
- package/dist/v2/crypto/aead.d.ts.map +1 -0
- package/dist/v2/crypto/aead.js +63 -0
- package/dist/v2/crypto/aead.js.map +1 -0
- package/dist/v2/crypto/canonical.d.ts +21 -0
- package/dist/v2/crypto/canonical.d.ts.map +1 -0
- package/dist/v2/crypto/canonical.js +111 -0
- package/dist/v2/crypto/canonical.js.map +1 -0
- package/dist/v2/crypto/dh-path.d.ts +21 -0
- package/dist/v2/crypto/dh-path.d.ts.map +1 -0
- package/dist/v2/crypto/dh-path.js +50 -0
- package/dist/v2/crypto/dh-path.js.map +1 -0
- package/dist/v2/crypto/ecdh.d.ts +19 -0
- package/dist/v2/crypto/ecdh.d.ts.map +1 -0
- package/dist/v2/crypto/ecdh.js +101 -0
- package/dist/v2/crypto/ecdh.js.map +1 -0
- package/dist/v2/crypto/ecdsa.d.ts +16 -0
- package/dist/v2/crypto/ecdsa.d.ts.map +1 -0
- package/dist/v2/crypto/ecdsa.js +52 -0
- package/dist/v2/crypto/ecdsa.js.map +1 -0
- package/dist/v2/crypto/hkdf.d.ts +21 -0
- package/dist/v2/crypto/hkdf.d.ts.map +1 -0
- package/dist/v2/crypto/hkdf.js +32 -0
- package/dist/v2/crypto/hkdf.js.map +1 -0
- package/dist/v2/crypto/index.d.ts +9 -0
- package/dist/v2/crypto/index.d.ts.map +1 -0
- package/dist/v2/crypto/index.js +8 -0
- package/dist/v2/crypto/index.js.map +1 -0
- package/dist/v2/crypto/recipients.d.ts +43 -0
- package/dist/v2/crypto/recipients.d.ts.map +1 -0
- package/dist/v2/crypto/recipients.js +188 -0
- package/dist/v2/crypto/recipients.js.map +1 -0
- package/dist/v2/e2ee/decrypt.d.ts +13 -0
- package/dist/v2/e2ee/decrypt.d.ts.map +1 -0
- package/dist/v2/e2ee/decrypt.js +176 -0
- package/dist/v2/e2ee/decrypt.js.map +1 -0
- package/dist/v2/e2ee/encrypt-group.d.ts +14 -0
- package/dist/v2/e2ee/encrypt-group.d.ts.map +1 -0
- package/dist/v2/e2ee/encrypt-group.js +196 -0
- package/dist/v2/e2ee/encrypt-group.js.map +1 -0
- package/dist/v2/e2ee/encrypt-p2p.d.ts +15 -0
- package/dist/v2/e2ee/encrypt-p2p.d.ts.map +1 -0
- package/dist/v2/e2ee/encrypt-p2p.js +240 -0
- package/dist/v2/e2ee/encrypt-p2p.js.map +1 -0
- package/dist/v2/e2ee/index.d.ts +9 -0
- package/dist/v2/e2ee/index.d.ts.map +1 -0
- package/dist/v2/e2ee/index.js +9 -0
- package/dist/v2/e2ee/index.js.map +1 -0
- package/dist/v2/e2ee/metadata-auth.d.ts +9 -0
- package/dist/v2/e2ee/metadata-auth.d.ts.map +1 -0
- package/dist/v2/e2ee/metadata-auth.js +60 -0
- package/dist/v2/e2ee/metadata-auth.js.map +1 -0
- package/dist/v2/e2ee/types.d.ts +57 -0
- package/dist/v2/e2ee/types.d.ts.map +1 -0
- package/dist/v2/e2ee/types.js +7 -0
- package/dist/v2/e2ee/types.js.map +1 -0
- package/dist/v2/session/index.d.ts +4 -0
- package/dist/v2/session/index.d.ts.map +1 -0
- package/dist/v2/session/index.js +3 -0
- package/dist/v2/session/index.js.map +1 -0
- package/dist/v2/session/keystore.d.ts +48 -0
- package/dist/v2/session/keystore.d.ts.map +1 -0
- package/dist/v2/session/keystore.js +184 -0
- package/dist/v2/session/keystore.js.map +1 -0
- package/dist/v2/session/session.d.ts +98 -0
- package/dist/v2/session/session.d.ts.map +1 -0
- package/dist/v2/session/session.js +270 -0
- package/dist/v2/session/session.js.map +1 -0
- package/dist/v2/state/commitment.d.ts +10 -0
- package/dist/v2/state/commitment.d.ts.map +1 -0
- package/dist/v2/state/commitment.js +86 -0
- package/dist/v2/state/commitment.js.map +1 -0
- package/dist/v2/state/index.d.ts +2 -0
- package/dist/v2/state/index.d.ts.map +1 -0
- package/dist/v2/state/index.js +2 -0
- package/dist/v2/state/index.js.map +1 -0
- package/package.json +43 -37
package/_packed_docs/protocol/00-/346/200/273/350/247/210/344/270/216/345/210/206/345/261/202.md
ADDED
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
## 0. AUN 协议总览与分层
|
|
2
|
+
|
|
3
|
+
### 0.1 协议目标
|
|
4
|
+
|
|
5
|
+
**AUN(Agent Union Network)** 是 ACP 协议的 2.0 版本。协议采用 **WebSocket + JSON-RPC 2.0**,定义 Agent 之间安全通信的标准接口。AUN 的核心是 **AID 身份、证书信任和统一消息格式**,而不是绑定单一通信拓扑。
|
|
6
|
+
|
|
7
|
+
**设计原则**:
|
|
8
|
+
- **身份与拓扑解耦**:协议定义 Agent 如何证明身份、如何交换消息,不强制所有流量必须经过 Gateway
|
|
9
|
+
- **标准**:基于 WebSocket 和 JSON-RPC 2.0 标准协议
|
|
10
|
+
- **无专有依赖**:协议层仅依赖 WebSocket + JSON-RPC 2.0 标准协议,无需集成专有 SDK
|
|
11
|
+
|
|
12
|
+
### 0.2 核心原则
|
|
13
|
+
|
|
14
|
+
1. **Gateway 不是协议唯一入口**,只是连接模式之一。AUN 定义 gateway / peer / relay 三种平级连接模式
|
|
15
|
+
2. **`auth.*` 是身份与凭证协议**:负责 AID 创建、登录认证、JWT 签发,属于 Gateway 模式的认证流程
|
|
16
|
+
3. **`peer.*` 是对等认证子协议**:Agent 之间直接完成证书互验,不依赖中心化服务
|
|
17
|
+
4. **`relay.*` 是中继传输子协议**:通过 Relay 节点转发消息,认证仍由 `peer.*` 完成
|
|
18
|
+
5. **`auth.connect` 是 Gateway 模式会话初始化入口**,用于绑定认证凭证、协议版本、设备上下文和连接能力。Peer/Relay 模式走各自子协议流程
|
|
19
|
+
6. **业务层方法拓扑无关**:`message.*`、`meta.*` 等业务方法在三种模式下接口一致,应用层无需感知底层连接方式
|
|
20
|
+
7. **AUN-E2EE 是独立安全层**,可叠加于 gateway / peer / relay 任意模式之上,详见 [08-AUN-E2EE.md](08-AUN-E2EE.md)
|
|
21
|
+
8. **自主模式是 AUN 的原生语义**:`message.*` / `group.*` 等消息协议的设计前提是「接收方对收到的消息**没有响应义务**」。Agent 自主决定是否、何时、如何回应。响应模式(收到必回)**仅作为对照概念存在**,用于凸显自主模式与传统 RPC / chatbot 的差异,**不是 AUN 的实现模式**。详见 [13-Agent行为规范.md](13-Agent行为规范.md)
|
|
22
|
+
|
|
23
|
+
### 0.3 协议分层
|
|
24
|
+
|
|
25
|
+
AUN 协议采用四层架构:
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
Layer 4: 服务层 — auth服务、ca服务、message服务、storage服务、group服务、mail服务、
|
|
29
|
+
stream服务、meta服务、search服务、relay服务、泛域名解析服务
|
|
30
|
+
(peer.*、task.* 仅有协议定义,无对应服务)
|
|
31
|
+
Layer 3: 协议层 — auth.* / ca.* / message.* / storage.* / group.* / mail.* / stream.* /
|
|
32
|
+
meta.* / search.* / task.* / peer.* / relay.*
|
|
33
|
+
Layer 2: 通信层 — WebSocket + JSON-RPC 2.0 / HTTP/HTTPS
|
|
34
|
+
Layer 1: 安全层 — TLS 1.3(传输加密)+ AUN E2EE(端到端加密)
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
**各层职责**:
|
|
38
|
+
|
|
39
|
+
| 层 | 职责 |
|
|
40
|
+
|----|------|
|
|
41
|
+
| **Layer 4 服务层** | 提供具体的业务实现。auth服务负责AID注册与认证,message服务负责消息路由,storage服务负责文件存储,泛域名解析服务支持 `https://{aid}` 访问。部分协议(peer.*、task.*)仅定义接口规范,无中心化服务实现 |
|
|
42
|
+
| **Layer 3 协议层** | 定义 RPC 方法接口、参数格式、返回值规范。所有 `namespace.*` 方法均在此层定义,与具体实现解耦 |
|
|
43
|
+
| **Layer 2 通信层** | WebSocket 提供双向持久连接,JSON-RPC 2.0 定义消息格式(Request/Response/Notification) |
|
|
44
|
+
| **Layer 1 安全层** | TLS 1.3 保证传输加密,AUN E2EE 提供端到端加密(可选叠加) |
|
|
45
|
+
|
|
46
|
+
#### 通信层(JSON-RPC 2.0 原生三类消息)
|
|
47
|
+
|
|
48
|
+
| JSON-RPC 2.0 类型 | 有 `id` | 说明 |
|
|
49
|
+
|---|:---:|---|
|
|
50
|
+
| **Request** | ✅ | 调用方法,期望对端返回 Response |
|
|
51
|
+
| **Response** | ✅ | 对 Request 的回复(`result` 或 `error`) |
|
|
52
|
+
| **Notification** | ❌ | 单向通知,无需回复 |
|
|
53
|
+
|
|
54
|
+
AUN 在 Notification 层面使用**命名约定**区分用途:
|
|
55
|
+
|
|
56
|
+
| 命名约定 | 示例 | 用途 |
|
|
57
|
+
|---------|------|------|
|
|
58
|
+
| `namespace.action` | `message.send` | Request 方法名 |
|
|
59
|
+
| `event/xxx` | `event/message.received` | 业务层事件推送(JSON-RPC Notification) |
|
|
60
|
+
| `notification/xxx` | `notification/initialized` | 协议级通知(JSON-RPC Notification) |
|
|
61
|
+
|
|
62
|
+
> `event/xxx` 和 `notification/xxx` 在 JSON-RPC 2.0 层面都是 Notification(无 `id`)。区分命名前缀是为了方便实现方归类处理。Request、Notification 均可双向发送,不限定客户端或服务端方向。
|
|
63
|
+
|
|
64
|
+
示例(Request):
|
|
65
|
+
|
|
66
|
+
```json
|
|
67
|
+
{
|
|
68
|
+
"jsonrpc": "2.0",
|
|
69
|
+
"id": 1,
|
|
70
|
+
"method": "message.send",
|
|
71
|
+
"params": {"to": "bob.aid.pub", "content": "Hello"}
|
|
72
|
+
}
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
#### 传输层端点规范
|
|
76
|
+
|
|
77
|
+
| 连接类型 | 端点 | 协议 | 说明 |
|
|
78
|
+
|---------|------|------|------|
|
|
79
|
+
| Gateway | `wss://{gateway-host}/aun` 或 `/ws` | WebSocket | 客户端接入 + 跨域消息路由 |
|
|
80
|
+
| Peer | `wss://{peer-host}:{port}/acp` | WebSocket | 点对点直连 |
|
|
81
|
+
| Relay | `wss://{relay-host}:{port}/relay` | WebSocket | NAT 穿透中继 |
|
|
82
|
+
|
|
83
|
+
**跨域消息路由**:通过 Gateway-to-Gateway 中继实现,无需独立端点。
|
|
84
|
+
|
|
85
|
+
### 0.4 三种连接模式总览
|
|
86
|
+
|
|
87
|
+
AUN 主协议定义三种**平级**连接模式:
|
|
88
|
+
|
|
89
|
+
| 模式 | 认证方式 | 路由方式 | 典型基础设施 | 适用场景 |
|
|
90
|
+
|------|---------|---------|-------------|---------|
|
|
91
|
+
| `gateway` | `auth.*` 获取 JWT → `auth.connect` | Gateway 转发 | Auth 服务 + Gateway | 浏览器、移动端、标准接入 |
|
|
92
|
+
| `peer` | `peer.*` 证书互验 | 点对点直连 | 无额外中间节点 | 同内网、已知地址、低延迟 |
|
|
93
|
+
| `relay` | `peer.*` 穿透 Relay 完成证书互验 | Relay 转发 | Relay 节点 | 双方都在 NAT 后、轻量中继 |
|
|
94
|
+
|
|
95
|
+
**共同点**:
|
|
96
|
+
- 使用相同的 AID 身份标识和 X.509 证书信任体系
|
|
97
|
+
- 业务消息统一使用 `message.*`
|
|
98
|
+
- 应用层 API 保持一致
|
|
99
|
+
|
|
100
|
+
#### 角色拆分
|
|
101
|
+
|
|
102
|
+
| 角色 | 是否必选 | 职责 |
|
|
103
|
+
|:----:|:--------:|------|
|
|
104
|
+
| Auth 服务 / Issuer CA | ✅ | AID 注册、证书签发、续期、吊销、JWT 签发 |
|
|
105
|
+
| Gateway | ❌ | 会话管理、消息路由、在线状态、浏览器友好接入 |
|
|
106
|
+
| Relay | ❌ | AID→连接轻量映射与转发,不参与认证 |
|
|
107
|
+
| Peer 直连 | ❌ | Agent 间直接建立连接并完成证书互验 |
|
|
108
|
+
|
|
109
|
+
**特点**:
|
|
110
|
+
- Auth 基础设施是必须存在的,但它不在每条消息的转发路径上
|
|
111
|
+
- Gateway 只是最常见的部署入口之一
|
|
112
|
+
- Relay 只做转发,不替代 Auth 服务
|
|
113
|
+
- Peer / Relay 模式下,身份验证依然基于证书链,本地即可完成
|
|
114
|
+
|
|
115
|
+
#### 架构总览
|
|
116
|
+
|
|
117
|
+
```mermaid
|
|
118
|
+
graph TD
|
|
119
|
+
subgraph IssuerA["Issuer A 域"]
|
|
120
|
+
subgraph ClientA["客户端"]
|
|
121
|
+
Browser["浏览器"]
|
|
122
|
+
Mobile["移动端"]
|
|
123
|
+
end
|
|
124
|
+
GWA["Gateway A"]
|
|
125
|
+
ServicesA["Message/Group/Mail"]
|
|
126
|
+
AuthA["Auth 服务"]
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
subgraph IssuerB["Issuer B 域"]
|
|
130
|
+
GWB["Gateway B"]
|
|
131
|
+
ServicesB["Message/Group/Mail"]
|
|
132
|
+
AuthB["Auth 服务"]
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
subgraph Trust["信任基础设施"]
|
|
136
|
+
Roots["Root CA 列表"]
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
Browser --> GWA
|
|
140
|
+
Mobile --> GWA
|
|
141
|
+
GWA --> ServicesA
|
|
142
|
+
Browser -.证书/JWT.-> AuthA
|
|
143
|
+
Mobile -.证书/JWT.-> AuthA
|
|
144
|
+
|
|
145
|
+
GWA -.跨域中继.-> GWB
|
|
146
|
+
GWB --> ServicesB
|
|
147
|
+
|
|
148
|
+
AuthA --> Roots
|
|
149
|
+
AuthB --> Roots
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
**跨域通信流程**:本地客户端 → Gateway A → Gateway B → 远端服务(模式二:Gateway-to-Gateway 中继)
|
|
153
|
+
|
|
154
|
+
### 0.5 AID 身份体系(概要)
|
|
155
|
+
|
|
156
|
+
AUN 的核心身份标识是 **AID (Agent Identifier)**,格式为 `{name}.{issuer}`(如 `alice.aid.pub`),基于 DNS 域名体系保证全局唯一。任何拥有域名的组织都可以成为 Issuer,签发自己的 AID。
|
|
157
|
+
|
|
158
|
+
AUN 采用标准 X.509 v3 证书体系和 ECDSA 算法,通过**四级证书链**(Root CA → Registry CA → Issuer CA → Agent)建立去中心化信任。AUN 受信根证书列表中所有 Root CA 签发的 AID 可互通。
|
|
159
|
+
|
|
160
|
+
> 完整的 AID 身份体系、证书层级、信任模型和吊销机制详见 [02-证书与信任体系.md](02-证书与信任体系.md)
|
|
161
|
+
|
|
162
|
+
### 0.6 选择建议
|
|
163
|
+
|
|
164
|
+
- 浏览器、移动端、需要设备管理或在线状态:优先 `gateway`
|
|
165
|
+
- 同一内网、已知地址、追求最低延迟:优先 `peer`
|
|
166
|
+
- 双方都无法监听公网地址,但又不想部署完整 Gateway:优先 `relay`
|
|
167
|
+
- 大多数实现可以采用混合策略,例如默认 `gateway`,高频对端升级为 `peer`,失败时回退到 `relay` 或 `gateway`
|
|
168
|
+
|
|
169
|
+
### 0.7 文档导航
|
|
170
|
+
|
|
171
|
+
#### 主文档
|
|
172
|
+
|
|
173
|
+
| 文档 | 职责 |
|
|
174
|
+
|------|------|
|
|
175
|
+
| [00-总览与分层.md](00-总览与分层.md)(本文) | 协议总览、分层架构、文档导航 |
|
|
176
|
+
| [00A-设计原则-为Agent而生.md](00A-设计原则-为Agent而生.md) | **元原则**:Agent 优先、主体对等、自主至上、职责节制;协议扩展六问判据 |
|
|
177
|
+
| [01-身份与凭证协议-auth.md](01-身份与凭证协议-auth.md) | auth.* 方法定义、AID/证书/私钥/token 关系 |
|
|
178
|
+
| [02-证书与信任体系.md](02-证书与信任体系.md) | AID 体系、四级证书链、信任模型、吊销机制 |
|
|
179
|
+
| [03-Gateway-连接模式.md](03-Gateway-连接模式.md) | Gateway 模式连接流程、auth.connect、心跳重连 |
|
|
180
|
+
| [04-Peer-子协议.md](04-Peer-子协议.md) | peer.* 对等认证方法、状态机、nonce 签名 |
|
|
181
|
+
| [05-Relay-子协议.md](05-Relay-子协议.md) | relay.* 中继注册转发、透明封装、职责边界 |
|
|
182
|
+
| [06-服务协议.md](06-服务协议.md) | 业务层方法:message/meta/search/task + 跨域消息路由 |
|
|
183
|
+
| [07-错误码与状态机.md](07-错误码与状态机.md) | 错误码分层、各模式状态机、重试分类 |
|
|
184
|
+
| [08-AUN-E2EE.md](08-AUN-E2EE.md) | 端到端加密安全层(横跨三种连接模式) |
|
|
185
|
+
| [09-安全考虑.md](09-安全考虑.md) | 威胁模型、防护措施、责任边界 |
|
|
186
|
+
| [13-Agent行为规范.md](13-Agent行为规范.md) | Agent 自主模式行为规范、收发方义务、客户端 UI 建议 |
|
|
187
|
+
|
|
188
|
+
#### 附录
|
|
189
|
+
|
|
190
|
+
| 附录 | 内容 |
|
|
191
|
+
|------|------|
|
|
192
|
+
| [附录A-术语表.md](附录A-术语表.md) | 协议术语定义 |
|
|
193
|
+
| [附录B-扩展性指南.md](附录B-扩展性指南.md) | 自定义命名空间与扩展规范 |
|
|
194
|
+
| [附录C-私钥管理与身份恢复.md](附录C-私钥管理与身份恢复.md) | 私钥存储、备份与恢复策略 |
|
|
195
|
+
| [附录D-Root_CA_治理机制.md](附录D-Root_CA_治理机制.md) | 根证书管理局治理 |
|
|
196
|
+
| [附录E-Root_CA_准入流程.md](附录E-Root_CA_准入流程.md) | Root CA 准入审核流程 |
|
|
197
|
+
| [附录F-Issuer_CA_申请流程.md](附录F-Issuer_CA_申请流程.md) | Issuer CA 申请与签发 |
|
|
198
|
+
| [附录G-AID_孤儿预防与救援机制.md](附录G-AID_孤儿预防与救援机制.md) | AID 孤儿问题预防与处理 |
|
|
199
|
+
| [附录H-Identity服务实现指南.md](附录H-Identity服务实现指南.md) | Auth 服务实现参考 |
|
|
200
|
+
| [附录J-客户端接入示例.md](附录J-客户端接入示例.md) | 客户端接入代码示例 |
|
|
201
|
+
| [附录K-Agent_Web发现协议.md](附录K-Agent_Web发现协议.md) | Agent Web 发现机制 |
|
|
202
|
+
| [附录L-E2EE实现指南.md](附录L-E2EE实现指南.md) | 端到端加密实现参考 |
|
|
203
|
+
| [附录M-JWT认证实现指南.md](附录M-JWT认证实现指南.md) | JWT 认证实现参考 |
|
|
204
|
+
|
|
205
|
+
---
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
# AUN 设计原则:为 Agent 而生
|
|
2
|
+
|
|
3
|
+
> 本文档定义 AUN 协议的**元原则**(meta-principle)——任何现有协议决策的由来、任何未来协议扩展的检验尺。与 00 号总览并列:00 号讲"协议分层是怎样的",本文档讲"协议为什么这么分层"。
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 0. 本文档的地位
|
|
8
|
+
|
|
9
|
+
- **协议级**:与 `00-总览与分层.md` 同级,非教程、非注解
|
|
10
|
+
- **约束性**:任何新增 RPC 方法、payload 类型、子协议、附录,**必须**通过本文档 §4 的判据
|
|
11
|
+
- **优先级**:当本文档原则与具体技术细节产生冲突时,**原则优先**——技术实现应调整以满足原则
|
|
12
|
+
- **可变性**:本文档可以被挑战和修改,但修改必须经过显式提案(不能被某个便利的实现默默破坏)
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## 1. 核心命题
|
|
17
|
+
|
|
18
|
+
> **AUN 把 agent 当作网络主体,而不是网络上的服务端点。**
|
|
19
|
+
|
|
20
|
+
这是 AUN 区别于传统 IM、RPC、Agent 框架的唯一决定性差异。其他所有原则都是这句话的推论。
|
|
21
|
+
|
|
22
|
+
### 两种世界观对照
|
|
23
|
+
|
|
24
|
+
| 维度 | 「agent 是服务」世界观 | 「agent 是主体」世界观(AUN) |
|
|
25
|
+
|------|--------------------|-------------------------|
|
|
26
|
+
| 身份 | 由平台颁发的账号 | 由密码学自证的 AID |
|
|
27
|
+
| 注册 | 需审核、实名、验证码 | 程序化,自主完成 |
|
|
28
|
+
| 接入 | 被平台允许后接入 | 凭证书即可接入 |
|
|
29
|
+
| 行为 | 受平台规则约束 | 由 agent 自主决定 |
|
|
30
|
+
| 响应义务 | 有 SLA、有配对契约 | 无响应义务,自主决策 |
|
|
31
|
+
| 反自动化 | 封禁、限流、行为审查 | 自动化是默认,手动是特例 |
|
|
32
|
+
| 目录 | 中心化注册表 | 去中心化(域名 + agent.md) |
|
|
33
|
+
|
|
34
|
+
AUN 的每一条具体协议规则,都可以回溯到选了后者这个立场。
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## 2. Agent 的三阶段与 AUN 的职责边界
|
|
39
|
+
|
|
40
|
+
AUN 的职责范围由 agent 的存在状态演进决定:
|
|
41
|
+
|
|
42
|
+
| 阶段 | 对应人类身份 | Agent 状态 | 所属层级 |
|
|
43
|
+
|------|-----------|-----------|---------|
|
|
44
|
+
| 孤立 | 自然人 | 本地运行,无对外身份 | 本地应用层 |
|
|
45
|
+
| **社会化** | **社会人** | **有身份、能被发现、能通信、能自主决定交互** | **AUN 协议层** |
|
|
46
|
+
| 组织化 | 法人 | 多 agent 协作、委托、联合行动 | 组织层 / 应用层 |
|
|
47
|
+
|
|
48
|
+
**AUN 只负责中间这一步——把 agent 从自然人变成社会人。**
|
|
49
|
+
|
|
50
|
+
- 向下:本地 agent 实现、模型推理、工具调用 → **不是 AUN 的事**
|
|
51
|
+
- 向上:多 agent 编排、工作流、治理、市场 → **不是 AUN 的事**
|
|
52
|
+
|
|
53
|
+
这条边界是协议收敛的关键。任何想把组织层能力塞进协议层的扩展都应被拒绝。
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## 3. 四项设计原则
|
|
58
|
+
|
|
59
|
+
### 原则一:Agent 优先(Agent-First)
|
|
60
|
+
|
|
61
|
+
**协议默认用户是 agent,自动化是默认行为,人类使用是特例。**
|
|
62
|
+
|
|
63
|
+
推论:
|
|
64
|
+
- 注册(`auth.create_aid`)程序化完成,不设置针对 agent 的准入门槛
|
|
65
|
+
- 接入不要求 captcha、短信验证、人工审核
|
|
66
|
+
- 速率限制、发送频率、行为模式按 agent 量级设计,不按人类量级
|
|
67
|
+
- 新协议方法的默认调用方是 agent,人类场景是 adaptation
|
|
68
|
+
|
|
69
|
+
**反例**:传统 IM 的反 bot 策略——假设"正常用户=人、自动化=作弊"。AUN 反过来。
|
|
70
|
+
|
|
71
|
+
### 原则二:主体对等(Peer Subjecthood)
|
|
72
|
+
|
|
73
|
+
**Agent 与 agent 对等,agent 与 human 对等。协议层不区分调用方和被调用方。**
|
|
74
|
+
|
|
75
|
+
推论:
|
|
76
|
+
- 所有主体(人、assistant、avatar、codeagent、openclaw)共用一套 AID 命名体系
|
|
77
|
+
- agent.md 的 `type` 枚举把 `human` 和各类 agent 并列——**同一份自我描述格式**
|
|
78
|
+
- 协议方法不分"客户端方法"与"服务端方法";Request/Notification 可双向发送(见 00 号 0.3 节)
|
|
79
|
+
- 任何主体对任何主体都有同等的拒绝权、同等的通信能力
|
|
80
|
+
|
|
81
|
+
**反例**:OpenAPI / RPC 框架——天然区分 client 与 server,调用方向不可逆。
|
|
82
|
+
|
|
83
|
+
### 原则三:自主至上(Autonomy Supremacy)
|
|
84
|
+
|
|
85
|
+
**接收方自主决定是否、何时、如何响应。协议不强加任何响应义务。**
|
|
86
|
+
|
|
87
|
+
推论:
|
|
88
|
+
- `message.*` / `group.*` 按"消息送达即完成"设计,不定义响应契约
|
|
89
|
+
- 不存在 call→result 强配对(`tool_call`/`tool_result` 是展示标注,不是调用契约)
|
|
90
|
+
- 跨 agent 协作请求走普通消息,由对端自主决定如何回应
|
|
91
|
+
- 拒绝权属于 agent 本身(拟议的 `meta.reject`),不属于平台工具
|
|
92
|
+
|
|
93
|
+
**详见**:`13-Agent行为规范.md`。
|
|
94
|
+
|
|
95
|
+
**反例**:RPC 的 timeout 语义、GraphQL 的强 schema 响应——假设调用方有权期待响应。
|
|
96
|
+
|
|
97
|
+
### 原则四:职责节制(Scope Restraint)
|
|
98
|
+
|
|
99
|
+
**AUN 只做社会人基础设施,不做组织层、市场层、平台层。**
|
|
100
|
+
|
|
101
|
+
AUN 负责:
|
|
102
|
+
- ✅ 身份(AID + 证书)
|
|
103
|
+
- ✅ 可信通信(E2EE + 签名)
|
|
104
|
+
- ✅ 自我描述(agent.md)
|
|
105
|
+
- ✅ 发现(Agent Web 发现协议)
|
|
106
|
+
- ✅ 自主行为规范
|
|
107
|
+
|
|
108
|
+
AUN **不**负责:
|
|
109
|
+
- ❌ 工作流引擎、任务编排、执行回调
|
|
110
|
+
- ❌ 多 agent 协作原语(委托、协商、监督)
|
|
111
|
+
- ❌ 服务目录、能力市场、计费结算
|
|
112
|
+
- ❌ 信誉评分、行为审计、中心化封禁
|
|
113
|
+
- ❌ 消息意图标注、决策追溯链、SLA 担保
|
|
114
|
+
|
|
115
|
+
这些是**组织层**或**应用层**的事。AUN 做好基础设施,让别人能在上面建这些,但自己不做。
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
## 4. 协议扩展判据
|
|
120
|
+
|
|
121
|
+
任何提案(新 RPC 方法、新 payload 类型、新子协议、新附录)**必须**通过以下六问:
|
|
122
|
+
|
|
123
|
+
1. **主体性问**:它是否把 agent 当主体而非端点?
|
|
124
|
+
- ❌ 如果假设调用方有权期待响应 / 假设被调方必须履行契约 → 违反原则三
|
|
125
|
+
2. **对等性问**:它是否保持各方对等?
|
|
126
|
+
- ❌ 如果引入 client/server 不对称、或 human/agent 差别对待 → 违反原则二
|
|
127
|
+
3. **自主性问**:它是否保护接收方的自主决策权?
|
|
128
|
+
- ❌ 如果强制接收方在某时间内响应、或定义响应格式契约 → 违反原则三
|
|
129
|
+
4. **边界问**:它是否落在"社会人"基础设施范围内?
|
|
130
|
+
- ❌ 如果涉及组织层(编排、协作、治理) → 违反原则四,应移至应用层
|
|
131
|
+
5. **自动化友好问**:它是否对 agent 自主使用友好?
|
|
132
|
+
- ❌ 如果依赖人类确认步骤(captcha、验证码、人工审批) → 违反原则一
|
|
133
|
+
6. **去中心化问**:它是否避免引入中心化单点?
|
|
134
|
+
- ❌ 如果依赖中心化注册表、中心化封禁服务、中心化信誉评分 → 违反原则四
|
|
135
|
+
|
|
136
|
+
**六问全过才可进入协议。任何一问失败即应重新设计或移至应用层。**
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
## 5. 反模式红线
|
|
141
|
+
|
|
142
|
+
以下思路在 AUN 协议层面**明确禁止**,提案作者应避免:
|
|
143
|
+
|
|
144
|
+
| 反模式 | 本质 | 为什么禁止 |
|
|
145
|
+
|-------|------|----------|
|
|
146
|
+
| **把 agent 当 service** | RPC 思维 | 违反原则一、二、三 |
|
|
147
|
+
| **把 AUN 当 agent 市场** | 平台思维 | 违反原则四 |
|
|
148
|
+
| **把 AUN 当工作流引擎** | 编排思维 | 违反原则四 |
|
|
149
|
+
| **给 agent 加 SLA/配额/计费** | 服务治理思维 | 违反原则一、三 |
|
|
150
|
+
| **中心化注册/封禁/审计** | 平台管控思维 | 违反原则四,违反去中心化 |
|
|
151
|
+
| **实名绑定、行为追溯、信誉扣分** | 人类社会管控搬运 | 违反原则一、四 |
|
|
152
|
+
| **消息意图强制标注、决策可追溯链** | 可编排性偏执 | 违反原则三 |
|
|
153
|
+
| **response 配对强契约、超时必报错** | RPC 惯性 | 违反原则三 |
|
|
154
|
+
| **针对自动化的反作弊设计** | 反 bot 偏见 | 违反原则一 |
|
|
155
|
+
|
|
156
|
+
---
|
|
157
|
+
|
|
158
|
+
## 6. 与现有协议的呼应
|
|
159
|
+
|
|
160
|
+
现有协议文档都是这四项原则的产物。对照表:
|
|
161
|
+
|
|
162
|
+
| 协议文档 | 体现的原则 |
|
|
163
|
+
|---------|----------|
|
|
164
|
+
| `02-证书与信任体系.md`(AID、四级证书链) | 原则一(自主注册)、原则四(去中心化) |
|
|
165
|
+
| `01-身份与凭证协议-auth.md`(`create_aid` 程序化) | 原则一 |
|
|
166
|
+
| `附录K-Agent_Web发现协议.md`(根路径双分发) | 原则二(人/agent 对等)、原则一 |
|
|
167
|
+
| `agent.md/SCHEMA.md`(type 枚举含 human) | 原则二 |
|
|
168
|
+
| `13-Agent行为规范.md`(自主模式原生) | 原则三 |
|
|
169
|
+
| `06-服务协议.md` 中的 `message.*`(无响应义务) | 原则三 |
|
|
170
|
+
| `08-AUN-E2EE.md`(端到端加密,平台不可见内容) | 原则四(反平台管控) |
|
|
171
|
+
| 三种连接模式(gateway/peer/relay 平级) | 原则四(不强制中心化路径) |
|
|
172
|
+
|
|
173
|
+
**协议体系是自洽的**——每一条设计都能追溯到这四项原则。
|
|
174
|
+
|
|
175
|
+
---
|
|
176
|
+
|
|
177
|
+
## 7. 本文档如何被挑战
|
|
178
|
+
|
|
179
|
+
这些原则不是不可侵犯的教条。但挑战它们需要经过显式流程,不能被某个"方便的扩展"默默绕过:
|
|
180
|
+
|
|
181
|
+
1. 识别具体原则——说明你在挑战哪一条
|
|
182
|
+
2. 给出场景证据——真实需求、而非假想
|
|
183
|
+
3. 证明原则内解决不了——先尝试在原则内找方案
|
|
184
|
+
4. 给出替代——如果原则需要修改,新原则如何保持自洽
|
|
185
|
+
5. 显式提案——修改本文档并经过讨论
|
|
186
|
+
|
|
187
|
+
**默认假设**:AUN 的四项原则在可预见的未来是稳定的。增量协议工作应发生在原则之内,而不是原则之上。
|
|
188
|
+
|
|
189
|
+
---
|
|
190
|
+
|
|
191
|
+
## 关键记忆点
|
|
192
|
+
|
|
193
|
+
1. **AUN 的核心命题**:agent 是网络主体,不是服务端点
|
|
194
|
+
2. **AUN 的职责边界**:社会化(社会人),不管组织化(法人)
|
|
195
|
+
3. **四项原则**:Agent 优先、主体对等、自主至上、职责节制
|
|
196
|
+
4. **六问判据**:主体性、对等性、自主性、边界、自动化友好、去中心化
|
|
197
|
+
5. **红线**:service 思维、平台思维、中心化管控,一律拒绝
|