@agentunion/fastaun-browser 0.2.19 → 0.2.20
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 +26 -0
- package/_packed_docs/CHANGELOG.md +26 -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/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 +114 -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/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 +373 -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 +1152 -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 +13 -11
- package/dist/auth.js.map +1 -1
- package/dist/client.d.ts +38 -8
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +179 -97
- package/dist/client.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 +20 -6
- package/dist/namespaces/auth.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/package.json +40 -37
package/_packed_docs/protocol//351/231/204/345/275/225A-/346/234/257/350/257/255/350/241/250.md
ADDED
|
@@ -0,0 +1,337 @@
|
|
|
1
|
+
# 附录 A:术语表
|
|
2
|
+
|
|
3
|
+
> 本术语表定义 AUN 协议文档中使用的关键术语,确保术语使用的一致性和准确性。
|
|
4
|
+
|
|
5
|
+
## A.1 核心概念
|
|
6
|
+
|
|
7
|
+
### AUN (Agent Union Network)
|
|
8
|
+
Agent 联合网络,一个去中心化的通信协议,允许不同 Issuer 运营的 Agent 之间安全通信。AUN 是 ACP 协议的 2.0 版本。
|
|
9
|
+
|
|
10
|
+
### AID (Agent Identifier)
|
|
11
|
+
Agent 标识符(不是 Agent ID),AUN 网络中的全局唯一身份标识。格式为 `{name}.{issuer}`,例如 `alice.aid.pub`。
|
|
12
|
+
|
|
13
|
+
**组成部分**:
|
|
14
|
+
- `name`:Agent 名称,由用户选择
|
|
15
|
+
- `issuer`:签发者域名,标识 Agent 所属的 Issuer
|
|
16
|
+
|
|
17
|
+
### Agent
|
|
18
|
+
AUN 网络中的通信实体,可以是人类用户、应用程序、服务或设备。每个 Agent 拥有唯一的 AID 和对应的证书。
|
|
19
|
+
|
|
20
|
+
### Issuer
|
|
21
|
+
证书签发者,运营 Auth 服务和 Gateway 的组织或个人。Issuer 负责为其域名下的 Agent 签发证书。
|
|
22
|
+
|
|
23
|
+
### 跨域消息路由
|
|
24
|
+
不同 Issuer 域之间的消息转发机制。Gateway 间通过 mTLS 建立信任,验证对方证书链后中转消息。
|
|
25
|
+
|
|
26
|
+
### Bootstrap(首次引导)
|
|
27
|
+
客户端在尚未持有 AID、证书或 JWT token 时,通过开放注册和初次认证完成身份建立的过程。AUN 中通常指“创建 AID -> 获取首张证书 -> 后续登录”的初始接入流程。
|
|
28
|
+
|
|
29
|
+
## A.2 证书与信任体系
|
|
30
|
+
|
|
31
|
+
### Root CA (根证书颁发机构)
|
|
32
|
+
证书信任链的顶层,签发 Registry CA 证书。Root CA 的证书是自签名的。
|
|
33
|
+
|
|
34
|
+
### Registry CA (注册中心证书颁发机构)
|
|
35
|
+
由 Root CA 签发的中间证书颁发机构,负责审核并签发 Issuer CA 证书。
|
|
36
|
+
|
|
37
|
+
### Issuer CA (签发者证书颁发机构)
|
|
38
|
+
由 Registry CA 签发的中间证书颁发机构,负责为其域名下的 Agent 签发证书。
|
|
39
|
+
|
|
40
|
+
### Agent 证书
|
|
41
|
+
由 Issuer CA 签发给 Agent 的 X.509 证书,包含 Agent 的公钥和 AID 信息。
|
|
42
|
+
|
|
43
|
+
### 受信根证书列表 (Trusted Root Certificate List)
|
|
44
|
+
AUN 根证书管理局维护的受信 Root CA 列表。列表中的 Root CA 签发的 AID 可以在 AUN 网络中互通。
|
|
45
|
+
|
|
46
|
+
### AUN 根证书管理局 (AUN Root Certificate Authority)
|
|
47
|
+
维护受信根证书列表的权威机构,负责 Root CA 的准入审核和列表分发。
|
|
48
|
+
|
|
49
|
+
### 证书链 (Certificate Chain)
|
|
50
|
+
从 Agent 证书到 Root CA 的信任路径:Agent 证书 ← Issuer CA 证书 ← Registry CA 证书 ← Root CA 证书。
|
|
51
|
+
|
|
52
|
+
### CRL (Certificate Revocation List)
|
|
53
|
+
证书吊销列表,包含已被吊销的证书序列号。
|
|
54
|
+
|
|
55
|
+
### Path Length Constraint(路径长度约束)
|
|
56
|
+
X.509 `BasicConstraints` 扩展中的 `pathLen` 限制,用于约束某个 CA 证书之下还允许出现多少层下级 CA。验证证书链时,必须同时检查“签发者是 CA”以及 `pathLen` 数值约束是否满足。
|
|
57
|
+
|
|
58
|
+
### OCSP (Online Certificate Status Protocol)
|
|
59
|
+
在线证书状态协议,实时查询证书是否被吊销。
|
|
60
|
+
|
|
61
|
+
### OCSP Stapling
|
|
62
|
+
OCSP 装订,服务器预先获取 OCSP 响应并在 TLS 握手时提供,减少客户端查询延迟。
|
|
63
|
+
|
|
64
|
+
## A.3 网络组件
|
|
65
|
+
|
|
66
|
+
### Gateway
|
|
67
|
+
AUN 网络的一种接入模式与对应组件。客户端通过 WebSocket 连接到 Gateway,使用 JSON-RPC 2.0 协议进行通信。Gateway 负责消息路由、连接管理和 Gateway 模式下的认证会话承载。
|
|
68
|
+
|
|
69
|
+
**关键特性**:
|
|
70
|
+
- 不持有客户端私钥
|
|
71
|
+
- 仅转发加密消息,无法解密 E2EE 消息
|
|
72
|
+
- 通过 JWT Token 验证客户端身份
|
|
73
|
+
|
|
74
|
+
### Peer
|
|
75
|
+
AUN 网络的一种连接模式。两个 Agent 直接建立 WebSocket 连接,不经过 Gateway 或 Relay 转发业务消息。Peer 模式下双方通过 `peer.*` 完成证书互验。
|
|
76
|
+
|
|
77
|
+
**适用场景**:
|
|
78
|
+
- 同一内网
|
|
79
|
+
- 已知可达地址
|
|
80
|
+
- 低延迟要求
|
|
81
|
+
|
|
82
|
+
### Relay
|
|
83
|
+
AUN 网络的一种连接模式与对应轻量中继组件。Relay 维护 `AID -> WebSocket 连接` 映射,并按目标 AID 转发消息,但不参与身份认证。
|
|
84
|
+
|
|
85
|
+
**关键特性**:
|
|
86
|
+
- 只转发,不验证内层业务语义
|
|
87
|
+
- 不签发 JWT
|
|
88
|
+
- 典型用于 NAT 后设备互联
|
|
89
|
+
|
|
90
|
+
### 认证后的 Gateway 会话 (Authenticated Gateway Session)
|
|
91
|
+
客户端通过 challenge/response 或 JWT 验证后,在 Gateway 上建立的已认证连接状态。Gateway 会将该会话绑定的身份上下文,例如 `aid`、`role`、`trust_level`、`auth_method`,注入后续转发的 RPC,用于下游服务做访问控制和会话绑定校验。
|
|
92
|
+
|
|
93
|
+
### Auth 服务 (Auth Service)
|
|
94
|
+
身份服务节点,负责 AID 注册、证书签发、身份认证和 JWT Token 签发。
|
|
95
|
+
|
|
96
|
+
**核心功能**:
|
|
97
|
+
- `auth.create_aid`:创建新 AID
|
|
98
|
+
- `auth.aid_login1/aid2`:双向认证
|
|
99
|
+
- `auth.refresh_token`:刷新 JWT Token
|
|
100
|
+
- `auth.renew_cert`:证书续期
|
|
101
|
+
- `auth.rekey`:密钥轮转
|
|
102
|
+
|
|
103
|
+
### 开放注册 (Open Registration)
|
|
104
|
+
`auth.create_aid` 采用的注册模式,允许未认证客户端直接请求创建新的 AID。协议层面默认允许客户端申请任意未被占用的 AID,包含先到先得的抢注行为;是否额外叠加邀请码、人工审核、速率限制或保留前缀,属于部署策略,不是协议强制要求。
|
|
105
|
+
|
|
106
|
+
## A.4 认证与安全
|
|
107
|
+
|
|
108
|
+
### JWT token (JSON Web Token)
|
|
109
|
+
Auth 服务签发的访问凭证,有效期推荐 1 小时。Gateway 持有 JWT token 并用于访问 AUN 服务。
|
|
110
|
+
|
|
111
|
+
**特性**:
|
|
112
|
+
- 使用 ECDSA 签名
|
|
113
|
+
- 包含 AID、签发时间、过期时间等 claim
|
|
114
|
+
- 可通过 `auth.refresh_token` 刷新
|
|
115
|
+
|
|
116
|
+
### `iss`(Issuer Claim)
|
|
117
|
+
JWT 的签发者声明,用于标识是谁签发了该 token。验证 JWT 时应检查 `iss` 是否等于当前实现约定的 Auth 服务签发者标识。
|
|
118
|
+
|
|
119
|
+
### `aud`(Audience Claim)
|
|
120
|
+
JWT 的受众声明,用于限定 token 的使用范围。AUN 中用于确保 token 仅被当作 AUN 协议访问凭证使用,而不是被其他系统误接受。
|
|
121
|
+
|
|
122
|
+
### `kid`(Key ID)
|
|
123
|
+
JWT Header 中的密钥标识,用于指出该 token 是由哪一把签名密钥或哪一张 Auth 证书签发。证书轮换期间可借助 `kid` 在新旧验签密钥之间做正确匹配。
|
|
124
|
+
|
|
125
|
+
### Nonce
|
|
126
|
+
一次性随机数,用于防止重放攻击。在双向认证流程中使用:
|
|
127
|
+
- `client_nonce`:客户端生成,Auth 服务签名
|
|
128
|
+
- `server_nonce`:Auth 服务生成,客户端签名
|
|
129
|
+
|
|
130
|
+
**有效期**:推荐 30 秒
|
|
131
|
+
|
|
132
|
+
### Device ID
|
|
133
|
+
设备唯一标识(UUID v4),用于并发连接控制和多设备管理。同一 AID 可以在多个设备上登录,每个设备有独立的 Device ID。
|
|
134
|
+
|
|
135
|
+
### mTLS (Mutual TLS)
|
|
136
|
+
双向 TLS 认证,客户端和服务器都需要提供证书并验证对方身份。用于跨域消息路由中 Gateway 间的通信。
|
|
137
|
+
|
|
138
|
+
### Trust Level(信任等级)
|
|
139
|
+
认证结果附带的会话信任分级,用于表达当前登录方式或设备状态的可信程度,例如 `low`、`medium`。业务侧可基于信任等级决定是否允许执行敏感操作。
|
|
140
|
+
|
|
141
|
+
### Auth Method(认证方式)
|
|
142
|
+
客户端本次登录所使用的认证方法,例如 `aid`、`pairing_code`、`kite_token`、`oauth`。Gateway 会把该信息作为会话上下文的一部分向下游透传,用于审计、风控或差异化授权。
|
|
143
|
+
|
|
144
|
+
### E2EE (End-to-End Encryption)
|
|
145
|
+
端到端加密,消息在发送方客户端加密,在接收方客户端解密。Gateway 只能转发密文,无法解密消息内容。采用 prekey_ecdh_v2(优先,四路 ECDH)和 long_term_key(降级,双 DH + HKDF)两级策略,每条消息独立密钥,无需在线协商。发送方对每条加密消息附加 ECDSA 签名(sender_signature),接收方强制验签。
|
|
146
|
+
|
|
147
|
+
**加密流程**:
|
|
148
|
+
1. 密钥协商:ECDH (P-256),通过 prekey 或长期公钥
|
|
149
|
+
2. 密钥派生:HKDF-SHA256
|
|
150
|
+
3. 对称加密:AES-256-GCM
|
|
151
|
+
|
|
152
|
+
## A.5 协议与传输
|
|
153
|
+
|
|
154
|
+
### WebSocket
|
|
155
|
+
全双工通信协议,客户端与 Gateway 之间的传输层协议。使用 TLS 加密(wss://)。
|
|
156
|
+
|
|
157
|
+
### JSON-RPC 2.0
|
|
158
|
+
远程过程调用协议,AUN 使用 JSON-RPC 2.0 作为消息格式标准。
|
|
159
|
+
|
|
160
|
+
**消息类型**:
|
|
161
|
+
- **Call**:客户端发起的请求,需要响应
|
|
162
|
+
- **Response**:服务端对 Call 的响应
|
|
163
|
+
- **Event**:服务端主动推送的事件,需要客户端响应
|
|
164
|
+
- **Notification**:单向通知,不需要响应
|
|
165
|
+
|
|
166
|
+
### auth.connect
|
|
167
|
+
Gateway 模式的 WebSocket 会话初始化方法。用于提交认证凭证、协商协议版本并建立连接级上下文。
|
|
168
|
+
|
|
169
|
+
**参数**:
|
|
170
|
+
- `nonce`:Gateway challenge 下发的一次性随机数
|
|
171
|
+
- `auth`:认证方式与凭证
|
|
172
|
+
- `protocol.min/max`:客户端支持的协议版本范围
|
|
173
|
+
- `device.id/type`:设备信息
|
|
174
|
+
- `client`:客户端实例信息
|
|
175
|
+
- `delivery_mode`:连接级投递语义
|
|
176
|
+
- `capabilities`:客户端能力声明
|
|
177
|
+
|
|
178
|
+
**说明**:
|
|
179
|
+
- `auth.connect` 成功后 Gateway 返回协商后的 `protocol` 与服务端 `capabilities`,连接进入 READY 状态
|
|
180
|
+
- 当前 `capabilities` 语义是客户端能力声明和服务端能力公告,不等同于完整双向能力协商
|
|
181
|
+
|
|
182
|
+
### Mode(连接模式)
|
|
183
|
+
指当前连接采用的接入方式。AUN 主协议定义三种平级 mode:
|
|
184
|
+
- `gateway`
|
|
185
|
+
- `peer`
|
|
186
|
+
- `relay`
|
|
187
|
+
|
|
188
|
+
mode 决定:
|
|
189
|
+
- 连接对象是谁
|
|
190
|
+
- 认证流程如何执行
|
|
191
|
+
- 消息由谁转发
|
|
192
|
+
|
|
193
|
+
### `peer.offer`
|
|
194
|
+
一种通过 `message.send` 承载的控制消息,用于在现有稳定通道上发起“连接升级”提议,例如从 `gateway` 或 `relay` 升级到 `peer`。
|
|
195
|
+
|
|
196
|
+
**关键点**:
|
|
197
|
+
- `peer.offer` 只交换地址和升级意图
|
|
198
|
+
- 不单独构成身份信任依据
|
|
199
|
+
- 新通道必须重新执行完整认证
|
|
200
|
+
|
|
201
|
+
### Fallback(回退通道)
|
|
202
|
+
当主通道不可用、升级失败或切换尚未完成时,继续保留的旧通道或备用通道。常见于:
|
|
203
|
+
- `gateway -> peer` 升级后保留 Gateway
|
|
204
|
+
- `relay -> peer` 升级后保留 Relay
|
|
205
|
+
|
|
206
|
+
Fallback 的目标是保证业务连续性,而不是与主通道无序并发发送同一条业务消息。
|
|
207
|
+
|
|
208
|
+
### Pre-auth 方法 (Pre-auth Methods)
|
|
209
|
+
客户端在完成正式认证之前即可调用的一小组 RPC 方法,用于首次引导、登录握手或获取必要元信息。典型例子包括 `auth.create_aid`、登录前置挑战相关方法,以及证书下载等只读能力。
|
|
210
|
+
|
|
211
|
+
## A.6 密码学术语
|
|
212
|
+
|
|
213
|
+
### ECDH (Elliptic Curve Diffie-Hellman)
|
|
214
|
+
椭圆曲线 Diffie-Hellman 密钥交换算法,用于 E2EE 消息密钥派生。
|
|
215
|
+
|
|
216
|
+
### ECDSA (Elliptic Curve Digital Signature Algorithm)
|
|
217
|
+
椭圆曲线数字签名算法,用于证书签名和 JWT Token 签名。
|
|
218
|
+
|
|
219
|
+
### P-256 / P-384
|
|
220
|
+
NIST 标准椭圆曲线:
|
|
221
|
+
- **P-256**:256 位曲线,默认选择,广泛支持
|
|
222
|
+
- **P-384**:384 位曲线,更高安全性,用于内置服务
|
|
223
|
+
|
|
224
|
+
### X25519
|
|
225
|
+
Curve25519 椭圆曲线,用于 ECDH 密钥交换,性能优异。
|
|
226
|
+
|
|
227
|
+
### Ed25519
|
|
228
|
+
Edwards 曲线数字签名算法,基于 Curve25519,用于证书签名。
|
|
229
|
+
|
|
230
|
+
### SM2 / SM3 / SM4
|
|
231
|
+
中国国家密码管理局发布的商用密码算法:
|
|
232
|
+
- **SM2**:椭圆曲线公钥密码算法(签名和密钥交换)
|
|
233
|
+
- **SM3**:密码杂凑算法(哈希)
|
|
234
|
+
- **SM4**:分组密码算法(对称加密)
|
|
235
|
+
|
|
236
|
+
### AES-256-GCM
|
|
237
|
+
高级加密标准(256 位密钥)+ Galois/Counter Mode,提供加密和认证。
|
|
238
|
+
|
|
239
|
+
### ChaCha20-Poly1305
|
|
240
|
+
流密码 ChaCha20 + 认证码 Poly1305,提供加密和认证。
|
|
241
|
+
|
|
242
|
+
### AEAD (Authenticated Encryption with Associated Data)
|
|
243
|
+
带关联数据的认证加密,同时提供机密性、完整性和真实性保证。AES-GCM 和 ChaCha20-Poly1305 都是 AEAD 算法。
|
|
244
|
+
|
|
245
|
+
## A.7 消息与会话
|
|
246
|
+
|
|
247
|
+
### Payload
|
|
248
|
+
消息负载,实际的消息内容。对协议层透明,可以是任意格式(JSON、文本、二进制等)。
|
|
249
|
+
|
|
250
|
+
### Prekey
|
|
251
|
+
接收方预先生成的临时 ECDH 密钥对。公钥(附身份签名)上传到服务端,私钥保存在本地。发送方获取后用于 ECDH 密钥协商。定期轮换,旧私钥保留 7 天。
|
|
252
|
+
|
|
253
|
+
### Message ID
|
|
254
|
+
消息标识符,全局唯一,用于消息去重、ACK 确认和防重放。
|
|
255
|
+
|
|
256
|
+
### Timestamp
|
|
257
|
+
时间戳,Unix 时间(秒),用于消息排序和时钟偏移检测。
|
|
258
|
+
|
|
259
|
+
## A.8 命名空间
|
|
260
|
+
|
|
261
|
+
### 命名空间 (Namespace)
|
|
262
|
+
JSON-RPC 方法的分组机制,使用点号分隔,例如 `auth.*`、`message.*`。
|
|
263
|
+
|
|
264
|
+
**核心命名空间**:
|
|
265
|
+
- `auth.*`:身份管理
|
|
266
|
+
- `ca.*`:证书签发与管理
|
|
267
|
+
- `message.*`:消息收发(含 E2EE prekey 管理 `message.e2ee.*`)
|
|
268
|
+
- `meta.*`:元协议(ping、status 等)
|
|
269
|
+
|
|
270
|
+
**扩展命名空间**:
|
|
271
|
+
- `storage.*`:文件存储
|
|
272
|
+
- `group.*`:群组通信
|
|
273
|
+
- `mail.*`:邮件服务
|
|
274
|
+
- `stream.*`:流式传输
|
|
275
|
+
- `search.*`:搜索与发现
|
|
276
|
+
- `relay.*`:NAT 穿透中继
|
|
277
|
+
|
|
278
|
+
**仅协议定义(无对应服务)**:
|
|
279
|
+
- `peer.*`:点对点直连
|
|
280
|
+
- `task.*`:Agent 协作与任务执行
|
|
281
|
+
|
|
282
|
+
### `agent.md`
|
|
283
|
+
Agent 的标准公开描述文档,对标 A2A 生态中的 Agent Card。AUN 中 `search.*` 索引的核心对象,用于公开能力说明、搜索发现和目录展示。
|
|
284
|
+
|
|
285
|
+
常见字段包括 `aid`、`name`、`type`、`version`、`description`、`visibility`、`updated_at`,并可扩展 `skills`、`input_modes`、`output_modes`、`service_endpoints`、`signature` 等推荐字段。
|
|
286
|
+
|
|
287
|
+
### AP
|
|
288
|
+
提供 `search.*`、索引公开 `agent.md`,并可选择对外公开同步结果的节点或服务。公开 AP 可通过“增量追加 + 周期性快照”同步其他公开 AP 的 `agent.md`,形成全网 Agent 搜索与发现能力。
|
|
289
|
+
|
|
290
|
+
### Task
|
|
291
|
+
`task.*` 中的任务对象。用于表示一次可跟踪、可查询、可追加输入、可取消的 Agent 协作过程,通常包含 `task_id`、`status`、`input`、`artifacts` 和时间戳等字段。
|
|
292
|
+
|
|
293
|
+
### Task Participant
|
|
294
|
+
任务参与者。通常包括 `owner`、`assignee` 以及其他被显式加入的协作者;任务读取和修改权限应以 participant 集合与角色为基础判定。
|
|
295
|
+
|
|
296
|
+
### Parent Task / Child Task
|
|
297
|
+
父任务与子任务。`task.*` 允许一个任务通过 `parent_task_id` 派生多个子任务,用于把复杂协作拆分给不同 Agent 执行;子任务集合可通过 `children` 摘要或 `task.children` 查询。
|
|
298
|
+
|
|
299
|
+
## A.9 其他术语
|
|
300
|
+
|
|
301
|
+
### 宽限期 (Grace Period)
|
|
302
|
+
证书过期后仍允许续期的时间窗口。推荐值:≤ 90 天。
|
|
303
|
+
|
|
304
|
+
### 刷新链 (Refresh Chain)
|
|
305
|
+
通过 `auth.refresh_token` 连续刷新 JWT Token 形成的链条。推荐限制:总时长 ≤ 30 天,最大刷新次数 ≤ 720 次。
|
|
306
|
+
|
|
307
|
+
### 临时密钥对 (Ephemeral Keypair)
|
|
308
|
+
E2EE 加密时生成的一次性 ECDH 密钥对,用于与接收方 prekey(或长期公钥)做密钥交换。每条消息使用独立的临时密钥对,用完即丢,提供前向保密性。
|
|
309
|
+
|
|
310
|
+
### 前向保密 (Forward Secrecy)
|
|
311
|
+
即使长期密钥泄露,历史会话密钥也无法被破解的安全特性。通过使用临时密钥对实现。
|
|
312
|
+
|
|
313
|
+
### 游标分页 (Cursor-based Pagination)
|
|
314
|
+
使用游标(cursor)而非页码进行分页的方式,适合动态数据集。用于 `message.pull` 等方法。
|
|
315
|
+
|
|
316
|
+
### 协议版本协商 (Protocol Version Negotiation)
|
|
317
|
+
客户端和服务器协商使用的协议版本。客户端提供支持的版本范围(min/max),服务器选择兼容的版本。
|
|
318
|
+
|
|
319
|
+
---
|
|
320
|
+
|
|
321
|
+
## A.10 术语使用规范
|
|
322
|
+
|
|
323
|
+
### 推荐使用
|
|
324
|
+
- **AID**(不是 Agent ID)
|
|
325
|
+
- **Auth 服务**(带空格)
|
|
326
|
+
- **Gateway**(不翻译为"网关",除非在描述性短语中如"接入网关")
|
|
327
|
+
- **E2EE**(首次出现时注明全称"端到端加密 (E2EE)")
|
|
328
|
+
- **JWT token**(小写 token)
|
|
329
|
+
|
|
330
|
+
### 避免使用
|
|
331
|
+
- ❌ Agent ID(应使用 AID 或 Agent Identifier)
|
|
332
|
+
- ❌ Auth服务(缺少空格,应使用 Auth 服务)
|
|
333
|
+
- ❌ 网关(作为术语时应使用 Gateway)
|
|
334
|
+
- ❌ 端到端加密(作为术语时应使用 E2EE)
|
|
335
|
+
- ❌ JWT Token(应使用 JWT token,小写 token)
|
|
336
|
+
|
|
337
|
+
---
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
# 附录 B:扩展性指南(非规范性)
|
|
2
|
+
|
|
3
|
+
> **本文档为非规范性内容**:提供 AUN 协议扩展机制的设计原则,不是协议强制要求。
|
|
4
|
+
|
|
5
|
+
## B.1 可选命名空间
|
|
6
|
+
|
|
7
|
+
服务端通过 `hello-ok.result.capabilities.namespaces` 公告可用命名空间;客户端侧需要声明的扩展能力通过 `auth.connect.params.capabilities` 扩展:
|
|
8
|
+
|
|
9
|
+
- `group.*`: 群组管理
|
|
10
|
+
- `storage.*`: 文件存储
|
|
11
|
+
- `mail.*`: 邮件收发(规范待定)
|
|
12
|
+
- `search.*`: Agent 搜索与发现(索引公开的 `agent.md`)
|
|
13
|
+
|
|
14
|
+
详细规范见各服务的独立文档。
|
|
15
|
+
|
|
16
|
+
## B.2 自定义协议
|
|
17
|
+
|
|
18
|
+
应用可以在 `message.send` 的 `content` 字段中传递自定义 JSON 对象(`type: "json"`),实现应用层协议,无需修改 Gateway。
|
|
19
|
+
|
|
20
|
+
## B.3 Gateway 轻量配置
|
|
21
|
+
|
|
22
|
+
**概述**:
|
|
23
|
+
- Gateway 可以配置为轻量模式,只提供消息转发功能
|
|
24
|
+
- 不需要单独的 Relay 协议或服务
|
|
25
|
+
- 通过配置文件启用/禁用功能
|
|
26
|
+
|
|
27
|
+
**配置示例**:
|
|
28
|
+
```yaml
|
|
29
|
+
gateway:
|
|
30
|
+
mode: lite # full | lite | dev
|
|
31
|
+
|
|
32
|
+
features:
|
|
33
|
+
# 禁用 Auth 服务(不处理 AID 注册)
|
|
34
|
+
identity: false
|
|
35
|
+
|
|
36
|
+
# 禁用离线消息存储
|
|
37
|
+
offline_message: false
|
|
38
|
+
|
|
39
|
+
# 禁用跨域消息路由(仅内网使用)
|
|
40
|
+
cross_domain_routing: false
|
|
41
|
+
|
|
42
|
+
# 仅保留消息转发功能
|
|
43
|
+
message_routing: true
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
**适用场景**:
|
|
47
|
+
```
|
|
48
|
+
✅ 开发测试(快速启动)
|
|
49
|
+
✅ 企业内网(不需要完整功能)
|
|
50
|
+
✅ 临时部署(轻量级)
|
|
51
|
+
|
|
52
|
+
❌ 生产环境(需要完整功能)
|
|
53
|
+
❌ 跨 Issuer 通信(需要跨域消息路由)
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
**与完整 Gateway 的区别**:
|
|
57
|
+
|
|
58
|
+
| 功能 | 完整 Gateway | 轻量 Gateway |
|
|
59
|
+
|------|-------------|-------------|
|
|
60
|
+
| 客户端连接 | ✅ | ✅ |
|
|
61
|
+
| 消息转发 | ✅ | ✅ |
|
|
62
|
+
| Auth 服务 | ✅ | ❌ |
|
|
63
|
+
| 离线消息 | ✅ | ❌ |
|
|
64
|
+
| 跨域路由 | ✅ | ❌ |
|
|
65
|
+
| 部署复杂度 | 高 | 低 |
|
|
66
|
+
|
|
67
|
+
## B.4 扩展原则
|
|
68
|
+
|
|
69
|
+
**核心原则**:
|
|
70
|
+
1. **向后兼容**:扩展不能破坏现有协议
|
|
71
|
+
2. **可选实现**:客户端可以选择不实现扩展
|
|
72
|
+
3. **能力声明与公告**:通过 `auth.connect` 声明客户端能力,通过 `hello-ok` 公告服务端能力;需要双向协商的扩展必须单独定义交集规则
|
|
73
|
+
4. **文档清晰**:明确标注哪些是核心协议,哪些是扩展
|
|
74
|
+
|
|
75
|
+
**不推荐的扩展**:
|
|
76
|
+
- 引入新的核心组件并重复定义已有的三种核心连接模式
|
|
77
|
+
- 引入新的传输协议(保持 WebSocket + HTTP POST)
|
|
78
|
+
- 引入新的认证机制(保持 AID 双向挑战)
|
|
79
|
+
|
|
80
|
+
---
|