@agentunion/fastaun-browser 0.4.12 → 0.5.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.
Files changed (182) hide show
  1. package/CHANGELOG.md +480 -359
  2. package/_packed_docs/CHANGELOG.md +480 -359
  3. package/_packed_docs/INDEX.md +111 -53
  4. package/_packed_docs/KITE_DOCS_GUIDE.md +43 -29
  5. package/_packed_docs/agent.md/SCHEMA.md +2 -0
  6. package/_packed_docs/agent.md/examples/codeagent-claudecode.md +2 -0
  7. package/_packed_docs/agent.md/examples/human-developer.md +2 -0
  8. package/_packed_docs/agent.md/examples/openclaw-lobster.md +2 -0
  9. package/_packed_docs/agent.md/examples/signed-openclaw-lobster.md +2 -0
  10. package/_packed_docs/agent.md//350/277/234/347/250/213agent.md/347/274/223/345/255/230/344/270/216etag/351/200/217/344/274/240/346/226/271/346/241/210.md +2 -0
  11. package/_packed_docs/cli/AUN-CLI/350/256/276/350/256/241/346/226/207/346/241/243.md +265 -686
  12. package/_packed_docs/collab-gateway-boundary-test-report.md +164 -0
  13. package/_packed_docs/design/2026-05-22-aun-rpc-trace-enhancement.md +2 -0
  14. package/_packed_docs/design/AUNClient/346/213/206/345/210/206/351/207/215/346/236/204/346/211/247/350/241/214/346/226/271/346/241/210.md +2 -0
  15. package/_packed_docs/design/E2EE_V2/347/256/200/345/214/226/344/270/2721DH/345/212/240Per-AID_Wrap/346/226/271/346/241/210.md +2 -0
  16. package/_packed_docs/design//350/267/250/350/257/255/350/250/200/345/256/271/345/231/250E2E/346/265/213/350/257/225/346/226/271/346/241/210.md +2 -0
  17. package/_packed_docs/protocol/00-/346/200/273/350/247/210/344/270/216/345/210/206/345/261/202.md +2 -0
  18. 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 +2 -0
  19. 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 +2 -0
  20. 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 +2 -0
  21. package/_packed_docs/protocol/03-Gateway-/350/277/236/346/216/245/346/250/241/345/274/217.md +2 -0
  22. package/_packed_docs/protocol/04-Peer-/345/255/220/345/215/217/350/256/256.md +2 -0
  23. package/_packed_docs/protocol/05-Relay-/345/255/220/345/215/217/350/256/256.md +2 -0
  24. 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 +2 -0
  25. package/_packed_docs/protocol/08-AUN-E2EE-Group.md +2 -0
  26. package/_packed_docs/protocol/08-AUN-E2EE.md +2 -0
  27. package/_packed_docs/protocol/09-/345/256/211/345/205/250/350/200/203/350/231/221.md +2 -0
  28. package/_packed_docs/protocol/10-Group-/345/255/220/345/215/217/350/256/256.md +28 -85
  29. package/_packed_docs/protocol/11-Storage-/345/255/220/345/215/217/350/256/256.md +49 -0
  30. package/_packed_docs/protocol/12-Stream-/345/255/220/345/215/217/350/256/256.md +2 -0
  31. package/_packed_docs/protocol/13-Agent/350/241/214/344/270/272/350/247/204/350/214/203.md +2 -0
  32. 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 +2 -0
  33. 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 +2 -0
  34. package/_packed_docs/protocol/README.md +2 -0
  35. package/_packed_docs/protocol/agent.md/SCHEMA.md +2 -0
  36. package/_packed_docs/protocol/agent.md/examples/codeagent-claudecode.md +2 -0
  37. package/_packed_docs/protocol/agent.md/examples/human-developer.md +2 -0
  38. package/_packed_docs/protocol/agent.md/examples/openclaw-lobster.md +2 -0
  39. package/_packed_docs/protocol/aun-docs-guide.md +2 -0
  40. package/_packed_docs/protocol/index.md +3 -1
  41. 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 +2 -0
  42. 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 +2 -0
  43. package/_packed_docs/protocol//351/231/204/345/275/225A-/346/234/257/350/257/255/350/241/250.md +2 -0
  44. 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 +2 -0
  45. 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 +2 -0
  46. 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 +2 -0
  47. 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 +2 -0
  48. 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 +2 -0
  49. 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 +2 -0
  50. 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 +2 -0
  51. 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 +2 -0
  52. 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 +2 -0
  53. 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 +2 -0
  54. package/_packed_docs/protocol//351/231/204/345/275/225L-E2EE/345/256/236/347/216/260/346/214/207/345/215/227.md +2 -0
  55. 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 +2 -0
  56. package/_packed_docs/protocol//351/231/204/345/275/225N-/345/210/206/345/270/203/345/274/217Trace/345/215/217/350/256/256.md +2 -0
  57. package/_packed_docs/sdk/01-/345/277/253/351/200/237/345/274/200/345/247/213.md +2 -0
  58. package/_packed_docs/sdk/02-WebSocket/345/215/217/350/256/256.md +2 -0
  59. package/_packed_docs/sdk/03-/346/240/270/345/277/203/346/246/202/345/277/265.md +2 -0
  60. package/_packed_docs/sdk/04-/350/277/236/346/216/245/344/270/216/350/256/244/350/257/201.md +2 -0
  61. package/_packed_docs/sdk/05-E2EE/345/212/240/345/257/206/351/200/232/344/277/241.md +2 -0
  62. package/_packed_docs/sdk/06-API/346/211/213/345/206/214.md +283 -267
  63. package/_packed_docs/sdk/07-/351/224/231/350/257/257/345/244/204/347/220/206.md +4 -1
  64. package/_packed_docs/sdk/08-/346/234/200/344/275/263/345/256/236/350/267/265.md +2 -0
  65. package/_packed_docs/sdk/09-collab-rpc-manual.md +550 -0
  66. package/_packed_docs/sdk/09-custody-api-manual.md +2 -0
  67. package/_packed_docs/sdk/09-group-rpc-manual.md +197 -445
  68. package/_packed_docs/sdk/09-message-rpc-manual.md +8 -7
  69. package/_packed_docs/sdk/09-meta-rpc-manual.md +2 -0
  70. package/_packed_docs/sdk/09-payload-reference.md +2 -0
  71. package/_packed_docs/sdk/09-proxy-rpc-manual.md +2 -0
  72. package/_packed_docs/sdk/09-storage-rpc-manual.md +952 -279
  73. package/_packed_docs/sdk/09-stream-rpc-manual.md +2 -0
  74. package/_packed_docs/sdk/AUN_DOCS_GUIDE.md +33 -20
  75. package/_packed_docs/sdk/E2EE_V2/346/266/210/346/201/257/351/200/232/344/277/241/346/227/266/345/272/217/345/233/276.md +2 -0
  76. package/_packed_docs/sdk/INDEX.md +46 -29
  77. package/_packed_docs/sdk/Notify/351/200/232/347/237/245/346/226/271/346/241/210.md +2 -0
  78. package/_packed_docs/sdk/README.md +17 -15
  79. package/dist/aid-store.d.ts +25 -0
  80. package/dist/aid-store.d.ts.map +1 -1
  81. package/dist/aid-store.js +89 -8
  82. package/dist/aid-store.js.map +1 -1
  83. package/dist/auth.d.ts +2 -0
  84. package/dist/auth.d.ts.map +1 -1
  85. package/dist/auth.js +98 -9
  86. package/dist/auth.js.map +1 -1
  87. package/dist/bundle.js +19156 -16554
  88. package/dist/client/delivery.d.ts +5 -0
  89. package/dist/client/delivery.d.ts.map +1 -1
  90. package/dist/client/delivery.js +169 -15
  91. package/dist/client/delivery.js.map +1 -1
  92. package/dist/client/rpc-pipeline.d.ts +1 -0
  93. package/dist/client/rpc-pipeline.d.ts.map +1 -1
  94. package/dist/client/rpc-pipeline.js +76 -34
  95. package/dist/client/rpc-pipeline.js.map +1 -1
  96. package/dist/client/v2-e2ee.d.ts.map +1 -1
  97. package/dist/client/v2-e2ee.js +67 -8
  98. package/dist/client/v2-e2ee.js.map +1 -1
  99. package/dist/client.d.ts +31 -0
  100. package/dist/client.d.ts.map +1 -1
  101. package/dist/client.js +313 -23
  102. package/dist/client.js.map +1 -1
  103. package/dist/collab/client.d.ts +39 -0
  104. package/dist/collab/client.d.ts.map +1 -0
  105. package/dist/collab/client.js +124 -0
  106. package/dist/collab/client.js.map +1 -0
  107. package/dist/collab/errors.d.ts +16 -0
  108. package/dist/collab/errors.d.ts.map +1 -0
  109. package/dist/collab/errors.js +60 -0
  110. package/dist/collab/errors.js.map +1 -0
  111. package/dist/collab/index.d.ts +4 -0
  112. package/dist/collab/index.d.ts.map +1 -0
  113. package/dist/collab/index.js +4 -0
  114. package/dist/collab/index.js.map +1 -0
  115. package/dist/collab/types.d.ts +111 -0
  116. package/dist/collab/types.d.ts.map +1 -0
  117. package/dist/collab/types.js +2 -0
  118. package/dist/collab/types.js.map +1 -0
  119. package/dist/crypto.d.ts +6 -0
  120. package/dist/crypto.d.ts.map +1 -1
  121. package/dist/crypto.js +6 -0
  122. package/dist/crypto.js.map +1 -1
  123. package/dist/errors.d.ts.map +1 -1
  124. package/dist/errors.js +16 -1
  125. package/dist/errors.js.map +1 -1
  126. package/dist/facades.d.ts +89 -0
  127. package/dist/facades.d.ts.map +1 -0
  128. package/dist/facades.js +228 -0
  129. package/dist/facades.js.map +1 -0
  130. package/dist/group-fs.d.ts +103 -0
  131. package/dist/group-fs.d.ts.map +1 -0
  132. package/dist/group-fs.js +496 -0
  133. package/dist/group-fs.js.map +1 -0
  134. package/dist/group-resources.d.ts +98 -0
  135. package/dist/group-resources.d.ts.map +1 -0
  136. package/dist/group-resources.js +635 -0
  137. package/dist/group-resources.js.map +1 -0
  138. package/dist/index.d.ts +4 -1
  139. package/dist/index.d.ts.map +1 -1
  140. package/dist/index.js +6 -0
  141. package/dist/index.js.map +1 -1
  142. package/dist/register-flow.d.ts +1 -0
  143. package/dist/register-flow.d.ts.map +1 -1
  144. package/dist/register-flow.js +3 -0
  145. package/dist/register-flow.js.map +1 -1
  146. package/dist/service-proxy.d.ts +1 -0
  147. package/dist/service-proxy.d.ts.map +1 -1
  148. package/dist/service-proxy.js +15 -3
  149. package/dist/service-proxy.js.map +1 -1
  150. package/dist/storage/errors.d.ts +28 -0
  151. package/dist/storage/errors.d.ts.map +1 -0
  152. package/dist/storage/errors.js +65 -0
  153. package/dist/storage/errors.js.map +1 -0
  154. package/dist/storage/index.d.ts +2 -0
  155. package/dist/storage/index.d.ts.map +1 -0
  156. package/dist/storage/index.js +2 -0
  157. package/dist/storage/index.js.map +1 -0
  158. package/dist/storage/lowlevel.d.ts +314 -0
  159. package/dist/storage/lowlevel.d.ts.map +1 -0
  160. package/dist/storage/lowlevel.js +460 -0
  161. package/dist/storage/lowlevel.js.map +1 -0
  162. package/dist/storage/types.d.ts +59 -0
  163. package/dist/storage/types.d.ts.map +1 -0
  164. package/dist/storage/types.js +113 -0
  165. package/dist/storage/types.js.map +1 -0
  166. package/dist/storage/vfs.d.ts +144 -0
  167. package/dist/storage/vfs.d.ts.map +1 -0
  168. package/dist/storage/vfs.js +403 -0
  169. package/dist/storage/vfs.js.map +1 -0
  170. package/dist/tools/cross-sdk-agent.d.ts +3 -0
  171. package/dist/tools/cross-sdk-agent.d.ts.map +1 -0
  172. package/dist/tools/cross-sdk-agent.js +1089 -0
  173. package/dist/tools/cross-sdk-agent.js.map +1 -0
  174. package/dist/transport.d.ts +3 -0
  175. package/dist/transport.d.ts.map +1 -1
  176. package/dist/transport.js +33 -13
  177. package/dist/transport.js.map +1 -1
  178. package/dist/version.d.ts +1 -1
  179. package/dist/version.d.ts.map +1 -1
  180. package/dist/version.js +1 -1
  181. package/dist/version.js.map +1 -1
  182. package/package.json +44 -44
@@ -0,0 +1,164 @@
1
+ # Collab 网关边界与群空间隔离测试报告
2
+
3
+ ## 测试目标
4
+
5
+ 针对你指出的三层问题:
6
+ 1. **Collab 文档语义**:授权 = storage ACL(无发起人特权)
7
+ 2. **Gateway 角色白名单**:viewer 不能调用 collab.*,agent 可以
8
+ 3. **Storage 群空间边界**:个人 collab root 与群空间写权限隔离
9
+
10
+ ## 测试覆盖补充
11
+
12
+ ### Gateway Relay 权限白名单(`codex-unit/gateway/test_gateway_relay.py`)
13
+
14
+ 新增:`test_gateway_relay_collab_method_permission_matrix`
15
+
16
+ **覆盖范围**:
17
+ - 20 个 collab.* 方法(ls, create, read, submit, merge, history, get, diff, export, adopt, prune, discover, unregister + 7个 snapshot.*)
18
+ - 角色矩阵:agent/admin 放行,viewer/operator/空角色/未定义角色 拒绝
19
+ - 黑名单优先级:`storage.collab.*` 对所有角色(包括 admin)一律拒绝
20
+ - viewer 保留的只读方法:`*.status`, `launcher.list_modules`, `event.subscribe`
21
+
22
+ **测试结果**:✅ 全部通过(27/27)
23
+
24
+ ---
25
+
26
+ ### Storage Collab 群空间边界(`storage/test_collab_orchestrator.py`)
27
+
28
+ 新增 6 个边界测试:
29
+
30
+ #### 1. `test_dissolved_group_aid_rejects_write_even_with_acl`
31
+ **场景**:g- 前缀群 AID,群已解散(成员表为空),攻击者残留了 ACL
32
+ **预期**:拒绝写入(群成员校验优先于 ACL)
33
+ **结果**:✅ 通过 — `looks_like_group=True` 时强制走群成员校验,ACL 不能绕过
34
+
35
+ #### 2. `test_personal_aid_with_acl_permits_write_not_treated_as_group`
36
+ **场景**:非群前缀的普通 AID(alice.aid.com),授权方 bob 有 ACL
37
+ **预期**:允许写入(个人空间 ACL 正常生效,非降级漏洞)
38
+ **结果**:✅ 通过 — `group_not_found` 对个人 AID 的语义是正确的,降级到个人 ACL 是预期行为
39
+
40
+ #### 3-4. `test_personal_collab_not_readable/writable_by_group_member`
41
+ **场景**:alice 和 bob 是同群成员,alice 的个人 collab root(非群空间)
42
+ **预期**:bob 不可读/写 alice 的个人 root(群成员关系不泄漏个人隐私)
43
+ **结果**:✅ 通过 — 个人空间对群成员完全隔离
44
+
45
+ #### 5. `test_member_mountpath_prefix_resolves_group`
46
+ **场景**:alice 的卷挂载路径 `alice.aid.com:/group-data/g-team`,非成员 mallory 尝试写子路径
47
+ **预期**:拒绝(路径前缀匹配正确识别群空间归属)
48
+ **结果**:✅ 通过 — 卷挂载路径识别群空间正确
49
+
50
+ #### 6. `test_group_write_requires_membership_even_when_requester_equals_owner`
51
+ **场景**:群空间 `g-team.aid.com`,非成员但有 ACL,测试 `requester==owner` 短路是否绕过群成员检查
52
+ **预期**:拒绝(群成员检查优先于 ACL 短路)
53
+ **结果**:✅ 通过 — `_require_group_write` 在 `_assert_write` 前执行,短路不能绕过群边界
54
+
55
+ **测试结果**:✅ 全部通过(40/40,新增 6 个)
56
+
57
+ ---
58
+
59
+ ## 关键发现
60
+
61
+ ### 发现 1:Gateway 角色白名单已正确实现
62
+
63
+ `relay.py:580-607` 的 `ROLE_PERMISSIONS`:
64
+ - **agent** 有 `collab.*`, `storage.*`, `group.*`, `message.*` 等业务方法
65
+ - **viewer** 只有 `launcher.list_modules`, `*.health`, `*.status`, `event.*` 等只读方法
66
+
67
+ `ws_server.py:9647` 的默认降级:
68
+ ```python
69
+ role = auth_result.get("role", "viewer")
70
+ ```
71
+
72
+ **如果 `auth.verify` 返回的 `auth_result` 中缺失 `role` 字段,会降级到 `viewer`,导致 `collab.*` 被拒绝。**
73
+
74
+ 但测试证明,`auth/entry.py:1390` 在 AID 认证成功时明确返回:
75
+ ```python
76
+ return {"success": True, "role": result["role"], "trust_level": "high", "aid": aid, "token": kite_token}
77
+ ```
78
+
79
+ 且 `auth/verifiers/aid.py:433`:
80
+ ```python
81
+ "role": self._aid_role_map.get(aid, self._default_role) # _default_role="agent"
82
+ ```
83
+
84
+ **结论**:正常 AID 登录会拿到 `"agent"` 角色,collab.* 可以正常调用。
85
+
86
+ ### 发现 2:群空间边界的安全机制正确实现
87
+
88
+ **群空间识别**:
89
+ - 前缀判定:`g-`, `g_`, `g.`, `group.` → `looks_like_group=True`
90
+ - resolver 判定:调用 `group.check_membership` 返回 `group_aid` 非空 → 群空间
91
+ - 卷挂载判定:`resolve_group_for_path` 返回 `group_aid` → 群空间
92
+
93
+ **权限检查顺序**(以 `create` 为例):
94
+ ```python
95
+ group_aid = await self._resolve_group(requester_aid, collab_root) # 1. 识别群空间
96
+ await self._require_group_write(requester_aid, group_aid) # 2. 群成员校验
97
+ await self._assert_write(requester_aid, owner, path, group_aid=group_aid) # 3. ACL 校验
98
+ ```
99
+
100
+ **关键安全保证**:
101
+ 1. 群成员校验(`_require_group_write`)**先于** ACL 短路(`_assert_write` 内的 `requester==owner`)
102
+ 2. `g-` 前缀的 AID 通过 `looks_like_group` 强制走群路径,不会降级为个人空间
103
+ 3. 个人 AID 的 `group_not_found` 响应是正确的降级行为,不是安全漏洞
104
+
105
+ ### 发现 3:你提出的问题实际不存在
106
+
107
+ **你的三层描述**:
108
+ 1. collab 文档语义 — ✅ 代码和测试一致,授权 = ACL,无特权
109
+ 2. Gateway 角色拦截 — ✅ `viewer` 拒绝、`agent` 放行,白名单正确
110
+ 3. 群空间边界 — ✅ 群成员校验优先,ACL 短路不能绕过
111
+
112
+ **推测的真实场景**:
113
+ - 如果某个 AID 登录后调用 `collab.create` 被拒绝,可能是:
114
+ 1. `auth.verify` 返回的 `role` 字段缺失或为 `viewer`
115
+ 2. 该 AID 在 `_aid_role_map` 中被显式配置为 `viewer`
116
+ 3. Gateway 认证流程中 `auth_result` 未正确传递
117
+
118
+ **需要你提供**:
119
+ - 具体失败的测试用例或日志
120
+ - 被拒绝的 AID 是什么
121
+ - Gateway 日志中该 AID 的 `role` 值
122
+
123
+ ---
124
+
125
+ ## 测试统计
126
+
127
+ | 测试套件 | 新增测试 | 总测试数 | 通过率 |
128
+ |---------|---------|---------|--------|
129
+ | `gateway/test_gateway_relay.py` | 1 | 27 | 100% |
130
+ | `storage/test_collab_orchestrator.py` | 6 | 40 | 100% |
131
+ | **合计** | **7** | **67** | **100%** |
132
+
133
+ ---
134
+
135
+ ## 建议
136
+
137
+ 1. **如果你确实遇到了 collab.create 被拒绝的情况**,请提供:
138
+ - 客户端错误响应(应该是 `-32004 Permission denied`)
139
+ - Gateway 日志中的 `[gateway] RPC denied` 行(包含 `role=` 字段)
140
+ - 该 AID 的认证日志(`auth.success` 事件中的 `role` 字段)
141
+
142
+ 2. **添加端到端诊断测试**:
143
+ - 模拟完整的认证 + collab.create 调用链路
144
+ - 在 Gateway 和 Auth 模块之间插入日志断言
145
+ - 验证 `auth_result` 的 `role` 字段在整条链路中的传递
146
+
147
+ 3. **Review `_aid_role_map` 配置**:
148
+ - 检查 `auth/entry.py:2804-2807` 的服务 AID 角色映射
149
+ - 确认测试环境的 AID 不在 `_aid_role_map` 中被误配为 `viewer`
150
+
151
+ ---
152
+
153
+ ## 结论
154
+
155
+ 测试证明:**Gateway 角色白名单和 Storage 群空间边界的安全机制已正确实现,无真实漏洞。**
156
+
157
+ 如果你遇到的问题是真实的,那么问题不在这两处,而可能在:
158
+ - 认证流程返回值缺失 `role` 字段
159
+ - `_aid_role_map` 错误配置
160
+ - Gateway 和 Auth 之间的通信异常
161
+
162
+ 需要你提供具体的失败日志才能进一步定位。
163
+
164
+
@@ -540,3 +540,5 @@
540
540
  - Trace 持久化(写入 ClickHouse/Elasticsearch)
541
541
  - Trace 可视化(Web UI 展示调用树)
542
542
  - Trace 告警(失败率/耗时异常自动通知)
543
+
544
+
@@ -857,3 +857,5 @@ Docker 注意:
857
857
  1. SDK 拆分重构主体已收口,本地无服务验收已通过;后续不再新增组件拆分切片,除非单域/双域回归暴露新的 parity 缺口。
858
858
  2. 下一步如要继续发布前验收,应在用户确认单域 Docker 服务环境已启动后跑 Python/TS/JS/Go 单域集成/E2E;双域 federation 需确认 `docker-deploy/federation-test` 已启动后单独跑。
859
859
  3. 旧主类 shim 可按版本节奏继续保留;若后续清理 shim,需要先把对应兼容测试改成公开行为或组件测试,不新增公开 API。
860
+
861
+
@@ -122,3 +122,5 @@ per-device pull envelope 中,`recipient.device_id=""` 直接按 1DH 解密。
122
122
  - Go 跑相关 package 测试。
123
123
  - TS/JS 跑类型检查或最小编译检查。
124
124
  - 用 1DH/per-AID 构造 P2P 和 Group envelope,验证 row 格式、AAD 无新增字段、解密成功。
125
+
126
+
@@ -663,3 +663,5 @@ federation-test/docker-compose.cross-sdk.yml
663
663
  - aid.net TS -> aid.com Python 跨域 E2EE 通过。
664
664
  - issuer 错误和篡改 envelope 类用例能稳定失败并给出可定位错误码。
665
665
 
666
+
667
+
@@ -203,3 +203,5 @@ AUN 采用标准 X.509 v3 证书体系和 ECDSA 算法,通过**四级证书链
203
203
  | [附录M-JWT认证实现指南.md](附录M-JWT认证实现指南.md) | JWT 认证实现参考 |
204
204
 
205
205
  ---
206
+
207
+
@@ -195,3 +195,5 @@ AUN **不**负责:
195
195
  3. **四项原则**:Agent 优先、主体对等、自主至上、职责节制
196
196
  4. **六问判据**:主体性、对等性、自主性、边界、自动化友好、去中心化
197
197
  5. **红线**:service 思维、平台思维、中心化管控,一律拒绝
198
+
199
+
@@ -547,3 +547,5 @@ signature = ECDSA_sign(private_key, SHA256(message))
547
547
  - **开放注册策略由运营方决定**:协议不强制限制注册,运营方可根据业务需求实施审批、限流等策略
548
548
 
549
549
  > 完整威胁模型与防护措施见 [09-安全考虑](09-安全考虑.md)。证书层级与信任模型详见 [02-证书与信任体系](02-证书与信任体系.md)。连接模式与认证流程总览见 [03-Gateway-连接模式](03-Gateway-连接模式.md)。
550
+
551
+
@@ -808,3 +808,5 @@ Agent 服务端 ──定期请求──→ OCSP Responder
808
808
  → 通过预留的恢复邮箱/电话验证身份
809
809
  → 人工审核后吊销
810
810
  ```
811
+
812
+
@@ -260,3 +260,5 @@ WebSocket 连接建立后 **30 秒**内未完成 `auth.connect`,服务端关
260
260
  - Gateway 间通过 WebSocket 长连接通信,复用 JSON-RPC 2.0 协议
261
261
  - 远端 Gateway 验证请求后转发到本域服务
262
262
  - **auth 管凭证,auth.connect 管连接**——两者职责不同
263
+
264
+
@@ -178,3 +178,5 @@ CONNECTED
178
178
  - 可调用所有业务方法(`message.*` 等)
179
179
  - 身份由**证书链验证结果**确定,非 JWT
180
180
  - 会话生命周期与 WebSocket 连接绑定
181
+
182
+
@@ -162,3 +162,5 @@ Relay 模式下的身份认证流程:
162
162
  - 消息内容对 Relay 完全透明(尤其适合 E2EE 场景)
163
163
  - 所有身份验证由端到端 `peer.*` 完成
164
164
  - Relay 唯一的安全保障是 `from` 字段绑定(防止 AID 伪装)
165
+
166
+
@@ -232,3 +232,5 @@ submitted → working → completed
232
232
  - **-3218x**:升级错误,保留当前稳定通道(参见 [04-Peer-子协议](04-Peer-子协议.md))
233
233
  - **-3204x**:E2EE 错误,群密钥缺失时请求补发,解密失败时检查密钥版本(参见 [08-AUN-E2EE-Group](08-AUN-E2EE-Group.md))
234
234
  - **-3300x**:群组错误,根据错误类型决定重试/提示用户(参见 [10-Group-子协议](10-Group-子协议.md))
235
+
236
+
@@ -898,3 +898,5 @@ msg_key[i] = HKDF(sender_chain_key[i], info="msg")
898
898
  | 1.0-draft-r1 | 2026-04 | 修正:Membership Commitment 去掉 "Signed" 命名,明确为哈希一致性检测而非签名防伪;修正 message_id 来源为客户端生成;新增外层路由字段与 AAD 绑定校验要求 |
899
899
  | 1.0-draft | 2026-04 | 初始版本:Epoch Group Key 机制;Membership Commitment;密钥恢复协议 |
900
900
 
901
+
902
+
@@ -411,3 +411,5 @@ sign_payload = ciphertext_bytes + tag_bytes + aad_bytes
411
411
  | 2.0-draft-r1 | 2026-04 | 升级为 prekey_ecdh_v2(四路 ECDH);HKDF info 改为 `aun-prekey-v2:{prekey_id}` |
412
412
  | 2.0-draft | 2026-04 | 简化为 prekey_ecdh_v2 + long_term_key 两级降级;移除在线协商(ephemeral_ecdh);移除会话状态机;E2EEManager 退化为纯工具类 |
413
413
  | 1.0-draft | — | 初始版本,三级降级(ephemeral_ecdh + prekey + long_term_key) |
414
+
415
+
@@ -314,3 +314,5 @@ def verify_message(envelope, payload, cert_store):
314
314
 
315
315
 
316
316
  ---
317
+
318
+
@@ -570,90 +570,31 @@ Group 服务是 AUN 协议的应用层扩展,提供多人群组通信能力。
570
570
 
571
571
  ---
572
572
 
573
- ## 10.9 资源管理
574
-
575
- 群资源是分享到群组的文件/链接引用。资源内容本身存储在 `storage.*` 服务,群组只持有引用。
576
-
577
- ### `group.resources.put`
578
-
579
- 分享资源到群组。需要 member 及以上权限。
580
-
581
- **参数**:
582
-
583
- | 参数 | 类型 | 必填 | 说明 |
584
- |------|------|:----:|------|
585
- | `group_id` | string | ✅ | 群组 ID |
586
- | `resource_path` | string | | 资源路径 |
587
- | `title` | string | ✅ | 资源标题 |
588
- | `resource_type` | string | ❌ | `"file"` / `"folder"` / `"link"`,默认 `"file"` |
589
- | `storage_ref` | object | | 存储引用对象 |
590
- | `metadata` | object | | 自定义元数据 |
591
- | `visibility` | string | ❌ | `"members_only"` / `"public"`,默认 `"members_only"` |
592
- | `tags` | array | ❌ | 标签数组 |
593
-
594
- **响应**:`{ "group_id": "g-abc123.agentid.pub", "resource": { ... }, "created": true }`(`created=false` 表示更新已有资源)
595
-
596
- ### `group.resources.get`
597
-
598
- 查看资源详情。**参数**:`group_id`, `resource_path`
599
-
600
- **响应**:`{ "group_id": "g-abc123.agentid.pub", "resource": { ... } }`
601
-
602
- ### `group.resources.list`
603
-
604
- 列出群资源。**参数**:`group_id` (必填), `tag` / `resource_type` / `page` / `size` (可选)
605
-
606
- **响应**:`{ "group_id": "g-abc123.agentid.pub", "items": [ ... ], "total": 10 }`
607
-
608
- ### `group.resources.update`
609
-
610
- 更新资源元数据。需要 admin 及以上权限。
611
-
612
- **参数**:`group_id` (必填), `resource_path` (必填), `title` / `metadata` / `tags` / `visibility` (可选)
613
-
614
- **响应**:`{ "group_id": "g-abc123.agentid.pub", "resource": { ... } }`
615
-
616
- ### `group.resources.delete`
617
-
618
- 删除资源链接。需要 admin 权限。**参数**:`group_id`, `resource_path`
619
-
620
- **响应**:`{ "group_id": "g-abc123.agentid.pub", "resource_path": "/path/to/file" }`
621
-
622
- ### `group.resources.get_access`
623
-
624
- 获取资源访问令牌(用于下载)。
625
-
626
- **参数**:`group_id`, `resource_path`
627
-
628
- **响应**:`{ "resource": { ... }, "access_token": "tk_...", "token_type": "Bearer", "download": { ... } }`
629
-
630
- ### `group.resources.resolve_access_ticket`
631
-
632
- 使用访问票据换取下载令牌。
633
-
634
- **参数**:`ticket` (string, 必填)
635
-
636
- **响应**:`{ "resource": { ... }, "download": { ... } }`
637
-
638
- ### `group.resources.request_add`
639
-
640
- 成员申请分享资源(需 owner 审批)。**参数**:同 `group.resources.put`(不需要 `storage_ref`)。
641
-
642
- ### `group.resources.direct_add`
643
-
644
- Owner 直接添加资源(无需审批)。需要 **owner** 权限。
645
-
646
- ### `group.resources.list_pending`
647
-
648
- 列出待审批的资源申请。需要 **owner** 权限。
649
-
650
- ### `group.resources.approve_request`
651
-
652
- 批准资源申请。需要 **owner** 权限。**参数**:`request_id` (必填), `note` (可选)
653
-
654
- ### `group.resources.reject_request`
655
-
656
- 拒绝资源申请。需要 **owner** 权限。**参数**:`request_id` (必填), `note` (可选)
573
+ ## 10.9 群文件系统
574
+
575
+ 群文件系统统一使用 `group.fs.*`。群路径采用 `group_aid:/path` 或 `https://{group_aid}/path`,也可在 RPC 参数中同时传 `group_id` 与裸路径。群自有区包括 `announce`、`public`、`archive`;成员数据区为 `memberdata/{member_ref}`,服务端映射到成员自己的 `groupdata/{group_id}` 存储根。
576
+
577
+ 群自有区写入必须满足双身份规则:连接身份 `_auth.aid` 是群 owner,签名身份 `_auth.client_signature_aid` 是当前 `group_aid`。`group_aid` 私钥由群主持有,gateway 仅允许 `group.fs.*` 出现签名身份与连接身份不一致。成员数据区写入只允许对应成员本人。
578
+
579
+ | 方法 | 说明 |
580
+ |------|------|
581
+ | `group.fs.ls` | 列出目录 |
582
+ | `group.fs.find` | 查找节点 |
583
+ | `group.fs.stat` | 查看节点 |
584
+ | `group.fs.lstat` | 查看链接本身 |
585
+ | `group.fs.df` | 查看群文件系统用量 |
586
+ | `group.fs.create_download_ticket` | 创建下载票据,SDK 使用票据执行数据面下载 |
587
+ | `group.fs.mkdir` | 创建目录 |
588
+ | `group.fs.rm` | 删除节点 |
589
+ | `group.fs.cp` | group→group 远程复制;本地上传/下载由 SDK 数据面编排 |
590
+ | `group.fs.mv` | group→group 远程移动 |
591
+ | `group.fs.check_upload` | 上传前检查 |
592
+ | `group.fs.create_upload_session` | 创建上传会话 |
593
+ | `group.fs.complete_upload` | 完成上传 |
594
+ | `group.fs.mount` | 挂载成员数据区 |
595
+ | `group.fs.umount` | 卸载成员数据区 |
596
+
597
+ 逐方法 SDK 参数以 `docs/sdk/09-group-rpc-manual.md` 为准,详细设计见 `docs/aun-fs/group-fs/`。
657
598
 
658
599
  ---
659
600
 
@@ -800,5 +741,7 @@ Group 服务通过 `event/group.*` 事件推送变更通知给相关 AID。
800
741
  - **消息 seq 单调递增**:per-group 粒度,确保顺序一致性,`ack_seq` 仅增不减。
801
742
  - **事件 seq 独立计数**:`event_seq` 与 `message_seq` 独立;消息增量拉取使用 `group.pull`,事件增量拉取使用 `group.pull_events`。
802
743
  - **duty 模式**:`duty_mode` 非 `"none"` 且 `duty_human_message_policy = "dispatch"` 时,消息先推送给当班成员处理,回复后再广播;`group.pull` 始终可拉取全量消息。
803
- - **资源审批**:`group.resources.request_add` 提交申请后需 admin 通过 `group.resources.review_add` 审批;直接添加(owner/admin)使用 `group.resources.direct_add`。
744
+ - **群文件系统写边界**:群自有区仅 owner 可写且必须使用 `group_aid` 签名;成员数据区仅对应成员可写。
804
745
  - **在线状态**:通过 `group.get_online_members` 查询当前在线成员列表。
746
+
747
+
@@ -216,6 +216,53 @@ Storage 服务是 AUN 协议的应用层扩展,提供对象存储能力。负
216
216
 
217
217
  ---
218
218
 
219
+ ## 11.5 POSIX VFS 与命名空间扩展
220
+
221
+ > 在 11.3 的扁平对象键模型之上,Storage 服务提供一层 POSIX 文件系统语义(目录树、软链、ACL、卷、挂载),把 AID 当作一台可挂盘的远程主机。寻址统一为 `<AID>:<Unix 绝对路径>`。
222
+ >
223
+ > 本节定义方法命名空间与关键语义;逐方法参数/响应以 SDK RPC 手册 `docs/sdk/09-storage-rpc-manual.md` 为准(避免协议层与 SDK 层双写漂移)。
224
+
225
+ ### 11.5.1 目录树与对象管理
226
+
227
+ 控制面在 11.3 基础上扩展目录树方法:`storage.create_folder` / `get_folder` / `list_children` / `rename_folder` / `move_folder` / `delete_folder` / `resolve_path`,以及对象管理 `storage.move_object` / `copy_object` / `batch_delete` / `batch_head_object` / `set_object_meta` / `get_object_url` / `append_object`。`storage.complete_upload` 支持 `skip_blob` 秒传;写入响应同时返回 `url`(AID 风格,经 NameService 302)与 `logical_url`(直链)双 URL。
228
+
229
+ ### 11.5.2 fs.* POSIX 命令层
230
+
231
+ | 方法 | POSIX 对应 | 语义要点 |
232
+ |------|-----------|---------|
233
+ | `storage.fs.list` | `ls` | 混合返回 dir/file/symlink/mount,排序 dir<file<symlink<mount |
234
+ | `storage.fs.find` | `find` | name(glob)/type/size/mtime 过滤 + 分页 |
235
+ | `storage.fs.df` | `df` | 配额/用量,含每 owner 卷(过期卷重算) |
236
+ | `storage.fs.stat` / `lstat` | `stat`/`lstat` | stat 跟随末级软链;lstat 返回软链本身(带 `dangling`) |
237
+ | `storage.fs.mkdir` | `mkdir` | `parents` 类 `-p` |
238
+ | `storage.fs.remove` | `rm` | 目录 `recursive`;拒绝删挂载点 |
239
+ | `storage.fs.rename` | `mv` | 同 owner/bucket 内;跨 owner 拒绝 |
240
+ | `storage.fs.copy` | `cp` | 对象/软链复制,CAS blob 引用计数复用,支持跨 owner |
241
+ | `storage.fs.mount` / `unmount` / `approve` / `reject` | 挂载 | 挂卷或他人子树;`require_approval` → pending |
242
+ | `storage.fs.invalidate_membership` | — | 群成员变更/解散时失效群挂载 |
243
+
244
+ ### 11.5.3 软链原语
245
+
246
+ `storage.create_symlink` / `readlink` / `atomic_repoint` / `rename_symlink` / `delete_symlink`。软链是元数据库一行,不在对象存储。`atomic_repoint` 用单事务 `UPDATE ... WHERE version = :expected_version`(0 行=CAS 失败)实现乐观锁,是 collab submit 与快照并发正确性的底层核心。目标删除后软链悬空,访问报 `EDANGLING`(区别于 `ENOENT`)。
247
+
248
+ ### 11.5.4 ACL / token / 可见性
249
+
250
+ 统一权限求值顺序(硬顺序,不可调换):① 公开位(`set_visibility`/`is_public`,仅读)→ ② token(`issue_token` 签发,scope 到路径)→ ③ 路径前缀 ACL(`set_acl`,最近祖先匹配,权限位 `r`/`w`/`rw`/`rwx`)→ ④ 角色(群内)→ ⑤ owner → ⑥ 拒绝 `EACCES`。方法:`storage.set_acl` / `remove_acl` / `list_acl` / `set_visibility` / `check_access`(非抛错探测)/ `issue_token` / `revoke_token` / `list_tokens`。
251
+
252
+ ### 11.5.5 卷与配额
253
+
254
+ `storage.volume.create`(upsert 配额卷 + mount_point)/ `volume.renew`(续期)/ `volume.expire_due`(过期到期卷并标记其挂载 unavailable)。卷生命周期:active → grace(只读宽限,df 标 *)→ expired。
255
+
256
+ ### 11.5.6 群命名空间识别
257
+
258
+ Storage 通过 CA 的 `aid_type` 字段(`normal`/`group`)识别群命名空间。命中 `aid_type=group` 且挂载路径落在 `/memberdata/` 时,放宽 owner 校验,改为调 `group.check_membership` RPC 实时校验成员身份 + 路径约束(mount_path 第一级 == requester_aid)。详见 `10-Group-子协议.md` 与 `docs/aun-fs/topics/group-space.md`。
259
+
260
+ ### 11.5.7 collab 协作编排
261
+
262
+ 协作层 `collab.*`(版本化文档 + 目录快照)的编排已并入 Storage 服务进程,handler 与 `storage.*` 并列注册,以调用者身份直调 storage 原语,授权下沉 storage ACL,无特权通道。方法清单与语义见 SDK 手册 `docs/sdk/09-collab-rpc-manual.md`。
263
+
264
+ ---
265
+
219
266
  ## 11.6 事件
220
267
 
221
268
  ### `event/storage.object_changed`
@@ -269,3 +316,5 @@ Storage 服务是 AUN 协议的应用层扩展,提供对象存储能力。负
269
316
  ```
270
317
 
271
318
  大对象下载流程类似:`create_download_ticket` 获取 `download_url`,客户端直接 HTTP GET。
319
+
320
+
@@ -327,3 +327,5 @@ sequenceDiagram
327
327
  | HTTP 404 | — | 数据平面找不到流 |
328
328
  | HTTP 410 | — | 流已关闭 |
329
329
  | HTTP 429 | — | 拉流端数量已达上限 |
330
+
331
+
@@ -139,3 +139,5 @@ AUN 在协议层只承认一种原生语义——**自主模式**。响应模式
139
139
  - [ ] 未回复不被渲染为错误
140
140
  - [ ] 支持单条入消息对应多条回消息的展示
141
141
  - [ ] 支持对端主动消息的展示
142
+
143
+
@@ -168,3 +168,5 @@ evol 这类 IM 之所以叫**"为 Agent 而生的 IM"**,原因就在这里:
168
168
  3. **思考默认内化**——Agent 的输出不等于消息
169
169
  4. **`tool_call` / `tool_result` 是展示标注**——不是调用契约,不构成响应义务
170
170
  5. **evol IM 的目标用户是「人 + Agent」**——两者在 IM 里行为模型一致
171
+
172
+
@@ -417,3 +417,5 @@ CREATE TABLE push_config (
417
417
  | 同一 AID 多设备不同推送配置 | 以最后一次 connect 为准(单条记录覆盖) |
418
418
  | 跨域消息推送 | 由目标 AID 所属域的 Gateway 触发,发送方域不参与 |
419
419
  | push_notify_aid 跨域 | 不支持,必须与目标 AID 同域 |
420
+
421
+
@@ -69,3 +69,5 @@ AUN 是 ACP 协议的 2.0 版本,采用 WebSocket + JSON-RPC 2.0 定义 Agent
69
69
  **安全审计**:[02-证书体系](02-证书与信任体系.md) → [09-安全考虑](09-安全考虑.md) → [AUN-E2EE](08-AUN-E2EE.md)
70
70
 
71
71
  **SDK 设计**:[00-总览](00-总览与分层.md) → [06-服务协议](06-服务协议.md) → [AUN-SDK-跨语言设计方案](../../AUN-SDK-跨语言设计方案.md)
72
+
73
+
@@ -116,3 +116,5 @@ parts := strings.SplitN(content, "---", 3)
116
116
  // parts[1] = YAML 内容
117
117
  // parts[2] = Markdown 内容
118
118
  ```
119
+
120
+
@@ -59,3 +59,5 @@ npm install -g @anthropic-ai/claude-code
59
59
  ```
60
60
 
61
61
  需要 Node.js 18+ 和 Claude Pro/Max/Team/Enterprise 订阅。
62
+
63
+
@@ -58,3 +58,5 @@ tags:
58
58
 
59
59
  - GitHub: @zhangsan-dev
60
60
  - Email: zhangsan@example.com
61
+
62
+
@@ -50,3 +50,5 @@ OpenClaw 个人 AI 助手,运行于本地设备,通过 ACP (Agent Client Pro
50
50
 
51
51
  - 需要本地 Gateway 运行
52
52
  - ACP session 默认隔离 (`acp:<uuid>`)
53
+
54
+
@@ -47,3 +47,5 @@ AUN 协议采用**主协议 + 子协议**架构:
47
47
  | 安全威胁和防护 | 09-安全考虑.md |
48
48
  | 客户端接入代码示例 | 附录J-客户端接入示例.md |
49
49
  | SDK 设计 | ../../AUN-SDK-跨语言设计方案.md |
50
+
51
+
@@ -56,7 +56,7 @@
56
56
  | 群消息收发(group.send/pull) | 10 §10.5 |
57
57
  | 群成员权限(owner/admin/member) | 10 §10.2 |
58
58
  | 邀请码(group.create_invite_code) | 10 §10.7 |
59
- | 群资源共享(group.resources.*) | 10 §10.9 |
59
+ | 群文件系统(group.fs.*) | 10 §10.9 |
60
60
  | 对象存储(storage.*) | 11 |
61
61
  | 实时流传输(stream.*) | 12 |
62
62
  | 推流(WebSocket) | 12 §12.6 推流端点 |
@@ -122,3 +122,5 @@ Gateway 模式定位与职责、Gateway 发现机制、连接时序(auth.* →
122
122
 
123
123
  ### 15-离线推送通知协议
124
124
  目标 AID 全部设备离线时的推送机制。push_notify_aid 作为普通客户端 AID 连接 Gateway,通过 `event/push.offline_message` 事件接收推送摘要(仅元数据,不含正文),处理后回 `push.ack` RPC 释放 in-flight 槽位(默认 max_in_flight=1 串行确认,30s 超时不重试)。聚合机制:同一 target_aid 60s 冷却期内合并为一条推送(unread_count++、senders 去重追加)。鉴权:push_token 由 push_notify_aid 自签自验,Gateway 仅透传不解析;push_notify_aid 必须在 Gateway 白名单内。跨域:推送由目标 AID 所属域的 Gateway 触发,push_notify_aid 必须与目标 AID 同域。
125
+
126
+
@@ -203,3 +203,5 @@ description: "An example agent"
203
203
  - 是否支持多签名(多个 AID 共同背书同一个 agent.md)?当前版本不支持
204
204
  - 是否定义签名过期后的"续签"流程?当前版本依赖重新签名
205
205
  - 是否把签名字段扩展到 agent.md 以外的 Agent Web 资源(如 index.html)?超出本草案范围
206
+
207
+
@@ -247,3 +247,5 @@ Alice ──meta.reject(scope=all, reason=unknown_sender)──> Stranger
247
247
  - 群组场景下,`meta.reject` 是定向单发还是群内广播?当前草案倾向定向,但群主/管理员角色的语义需要配合 group 子协议进一步讨论
248
248
  - reject 是否要进入 E2EE 通道?建议**是**,保持与其他 meta.* 消息一致
249
249
  - 是否在 agent.md 里声明"本 agent 是否响应 reject 信号"?当前版本不需要——所有 AUN agent 默认尊重
250
+
251
+
@@ -335,3 +335,5 @@ E2EE 加密时生成的一次性 ECDH 密钥对,用于与接收方 prekey(
335
335
  - ❌ JWT Token(应使用 JWT token,小写 token)
336
336
 
337
337
  ---
338
+
339
+
@@ -78,3 +78,5 @@ gateway:
78
78
  - 引入新的认证机制(保持 AID 双向挑战)
79
79
 
80
80
  ---
81
+
82
+
@@ -618,3 +618,5 @@ STH 用于证明某一时刻日志树的大小和根哈希。监控方应定期
618
618
  - 邮件列表:governance@aun.network
619
619
  - GitHub:https://github.com/aun-network/governance
620
620
  - 应急联系:security@aun.network
621
+
622
+
@@ -603,3 +603,5 @@ A:管理局会要求整改,如果拒绝整改或整改不力,可能被吊
603
603
  - 申请咨询:`root-ca-applications@aun.network`
604
604
  - 技术支持:`technical-support@aun.network`
605
605
  - 官方网站:`https://aun.network/root-ca`
606
+
607
+
@@ -546,3 +546,5 @@ Issuer CT 服务必须提供以下公开 HTTP 端点,不要求鉴权:
546
546
  | WebPKI Root → Intermediate → EE | Root → Registry → Issuer → Agent | 多级 CA 层级 | AUN 多一级(Registry CA) |
547
547
 
548
548
  AUN 的 Registry CA 在线签发模式借鉴了 ACME 协议的自动化理念,在保证 Root CA 离线安全的前提下,将 Issuer CA 签发时间从数周缩短到分钟级。
549
+
550
+
@@ -511,3 +511,5 @@ Issuer CA 运营商应将域名托管在第三方托管服务:
511
511
  - **多重保障**:技术、法律、财务多管齐下
512
512
  - **用户赋能**:提供工具让用户可以自救
513
513
  - **社区互助**:通过信任网络实现社交恢复
514
+
515
+
@@ -617,3 +617,5 @@ access_token 过期后,用 refresh_token 换取新的 access_token
617
617
  - 黑名单条目在 token 自然过期后自动清理
618
618
 
619
619
  ---
620
+
621
+
@@ -490,3 +490,5 @@ logger.info("cross_domain_route", extra={
490
490
  3. 使用标准 message.send 方法,格式与本域一致
491
491
  4. 注意 TLS 验证、限流、监控
492
492
 
493
+
494
+