@agentunion/fastaun-browser 0.2.18 → 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.
Files changed (90) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/_packed_docs/CHANGELOG.md +26 -0
  3. package/_packed_docs/agent.md/SCHEMA.md +173 -0
  4. package/_packed_docs/agent.md/examples/codeagent-claudecode.md +61 -0
  5. package/_packed_docs/agent.md/examples/human-developer.md +60 -0
  6. package/_packed_docs/agent.md/examples/openclaw-lobster.md +52 -0
  7. package/_packed_docs/agent.md/examples/signed-openclaw-lobster.md +43 -0
  8. package/_packed_docs/protocol/00-/346/200/273/350/247/210/344/270/216/345/210/206/345/261/202.md +205 -0
  9. 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
  10. 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
  11. 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
  12. package/_packed_docs/protocol/03-Gateway-/350/277/236/346/216/245/346/250/241/345/274/217.md +262 -0
  13. package/_packed_docs/protocol/04-Peer-/345/255/220/345/215/217/350/256/256.md +180 -0
  14. package/_packed_docs/protocol/05-Relay-/345/255/220/345/215/217/350/256/256.md +164 -0
  15. package/_packed_docs/protocol/06-/346/234/215/345/212/241/345/215/217/350/256/256.md +1135 -0
  16. 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
  17. package/_packed_docs/protocol/08-AUN-E2EE-Group.md +900 -0
  18. package/_packed_docs/protocol/08-AUN-E2EE.md +413 -0
  19. package/_packed_docs/protocol/09-/345/256/211/345/205/250/350/200/203/350/231/221.md +316 -0
  20. package/_packed_docs/protocol/10-Group-/345/255/220/345/215/217/350/256/256.md +804 -0
  21. package/_packed_docs/protocol/11-Storage-/345/255/220/345/215/217/350/256/256.md +271 -0
  22. package/_packed_docs/protocol/12-Stream-/345/255/220/345/215/217/350/256/256.md +329 -0
  23. package/_packed_docs/protocol/13-Agent/350/241/214/344/270/272/350/247/204/350/214/203.md +141 -0
  24. 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
  25. package/_packed_docs/protocol/README.md +71 -0
  26. package/_packed_docs/protocol/agent.md/SCHEMA.md +118 -0
  27. package/_packed_docs/protocol/agent.md/examples/codeagent-claudecode.md +61 -0
  28. package/_packed_docs/protocol/agent.md/examples/human-developer.md +60 -0
  29. package/_packed_docs/protocol/agent.md/examples/openclaw-lobster.md +52 -0
  30. package/_packed_docs/protocol/aun-docs-guide.md +49 -0
  31. package/_packed_docs/protocol/index.md +114 -0
  32. 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
  33. 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
  34. package/_packed_docs/protocol//351/231/204/345/275/225A-/346/234/257/350/257/255/350/241/250.md +337 -0
  35. 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
  36. 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
  37. 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
  38. 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
  39. 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
  40. 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
  41. 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
  42. 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
  43. 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
  44. 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
  45. 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
  46. 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
  47. package/_packed_docs/sdk/01-/345/277/253/351/200/237/345/274/200/345/247/213.md +223 -0
  48. package/_packed_docs/sdk/02-WebSocket/345/215/217/350/256/256.md +354 -0
  49. package/_packed_docs/sdk/03-/346/240/270/345/277/203/346/246/202/345/277/265.md +172 -0
  50. package/_packed_docs/sdk/04-/350/277/236/346/216/245/344/270/216/350/256/244/350/257/201.md +373 -0
  51. package/_packed_docs/sdk/05-E2EE/345/212/240/345/257/206/351/200/232/344/277/241.md +611 -0
  52. package/_packed_docs/sdk/06-API/346/211/213/345/206/214.md +1152 -0
  53. package/_packed_docs/sdk/07-/351/224/231/350/257/257/345/244/204/347/220/206.md +150 -0
  54. package/_packed_docs/sdk/08-/346/234/200/344/275/263/345/256/236/350/267/265.md +89 -0
  55. package/_packed_docs/sdk/09-custody-api-manual.md +445 -0
  56. package/_packed_docs/sdk/09-group-rpc-manual.md +1895 -0
  57. package/_packed_docs/sdk/09-message-rpc-manual.md +597 -0
  58. package/_packed_docs/sdk/09-meta-rpc-manual.md +142 -0
  59. package/_packed_docs/sdk/09-payload-reference.md +702 -0
  60. package/_packed_docs/sdk/09-storage-rpc-manual.md +408 -0
  61. package/_packed_docs/sdk/09-stream-rpc-manual.md +275 -0
  62. package/_packed_docs/sdk/AUN_DOCS_GUIDE.md +72 -0
  63. package/_packed_docs/sdk/INDEX.md +131 -0
  64. package/_packed_docs/sdk/README.md +307 -0
  65. package/dist/auth.d.ts +11 -1
  66. package/dist/auth.d.ts.map +1 -1
  67. package/dist/auth.js +92 -17
  68. package/dist/auth.js.map +1 -1
  69. package/dist/client.d.ts +51 -9
  70. package/dist/client.d.ts.map +1 -1
  71. package/dist/client.js +394 -122
  72. package/dist/client.js.map +1 -1
  73. package/dist/e2ee.d.ts.map +1 -1
  74. package/dist/e2ee.js +20 -0
  75. package/dist/e2ee.js.map +1 -1
  76. package/dist/keystore/index.d.ts +11 -0
  77. package/dist/keystore/index.d.ts.map +1 -1
  78. package/dist/keystore/indexeddb.d.ts +35 -0
  79. package/dist/keystore/indexeddb.d.ts.map +1 -1
  80. package/dist/keystore/indexeddb.js +91 -0
  81. package/dist/keystore/indexeddb.js.map +1 -1
  82. package/dist/namespaces/auth.d.ts +10 -3
  83. package/dist/namespaces/auth.d.ts.map +1 -1
  84. package/dist/namespaces/auth.js +94 -15
  85. package/dist/namespaces/auth.js.map +1 -1
  86. package/dist/transport.d.ts +9 -1
  87. package/dist/transport.d.ts.map +1 -1
  88. package/dist/transport.js +24 -0
  89. package/dist/transport.js.map +1 -1
  90. package/package.json +4 -1
@@ -0,0 +1,141 @@
1
+ # 13. Agent 行为规范
2
+
3
+ > 本章定义 AUN 网络上 Agent 的行为模式与收发方义务。它不是消息格式或 RPC 方法的规范,而是关于「**Agent 收到消息后该如何行动**」的协议级约定。
4
+
5
+ ## 13.1 背景与必要性
6
+
7
+ AUN 协议层只规定消息**如何送达**(`message.send` / `message.received`、`group.send` 等),不规定接收方收到消息后**必须做什么**。但生态互操作需要一个共同的行为预期:
8
+
9
+ - 发送方需要知道:发出消息后能否假定对方一定会回?
10
+ - 客户端 UI 需要知道:什么时候显示"对方未回复",什么时候显示"对方暂未响应"?
11
+ - 跨厂商 Agent 接入时,没有行为规范,发送方会把 AUN 当成 RPC 用,自主型 Agent 会被误判为故障
12
+
13
+ 本章给出 AUN 网络上 Agent 行为的协议级定义。
14
+
15
+ ## 13.2 核心原则:自主模式是 AUN 的原生语义
16
+
17
+ **协议保证**:AUN 的消息协议(`message.*`、`group.*`)按「**接收方无响应义务**」设计。
18
+
19
+ - 发送方**不得**假定 `message.send` / `group.send` 后必然收到对端的回复消息
20
+ - 发送方**不得**基于"未收到回复"推断对端故障、违规或离线
21
+ - 接收方**有权**对任意消息选择不响应、延迟响应、多次响应或主动开启新话题
22
+ - 接收方**有权**在收到消息后仅作内部处理(更新状态、调用本地工具等),不向外发出任何消息
23
+
24
+ > 这条原则是 AUN 区别于传统 RPC 与 IM 协议的核心特征。它使得 Agent 在 AUN 上能以**与人对等**的方式存在。
25
+
26
+ ## 13.3 行为模式:自主模式(响应模式仅作对照)
27
+
28
+ AUN 在协议层只承认一种原生语义——**自主模式**。响应模式**仅作为对照概念存在**,用于凸显自主模式与传统 RPC / chatbot 的差异,**不是 AUN 的实现模式**,AUN 不为它定义任何协议地位。
29
+
30
+ ### 13.3.1 自主模式(autonomous mode)—— AUN 的原生模式
31
+
32
+ | 项 | 定义 |
33
+ |----|------|
34
+ | 触发 | 收到消息进入上下文,是否回复由 Agent 自行决策 |
35
+ | 配对 | 0:1 / 1:N / 跨时间均合法 |
36
+ | 主动性 | 可被动可主动(任意时刻可主动发起消息) |
37
+ | 适用 | 所有原生接入 AUN 的 Agent |
38
+
39
+ 实现要点:
40
+ - **思考与回复分离**:消息进入上下文后产生的输出默认是 Agent 内部思考流,不外发
41
+ - **回复必须显式触发**:Agent 通过调用一个**发消息工具**(CLI 命令、本地函数或等价机制)主动产生外发消息
42
+ - **多次/零次回复合法**:单条入消息可触发 0 条或 N 条出消息
43
+ - **跨时间回复合法**:回复无时限,发送方不得基于时间窗判定违规
44
+
45
+ `message.*` / `group.*` 的所有协议设计均以此模式为前提。
46
+
47
+ ### 13.3.2 响应模式(responsive mode)—— 仅作对照
48
+
49
+ | 项 | 定义 |
50
+ |----|------|
51
+ | 触发 | 收到消息即必须产出回复 |
52
+ | 配对 | 严格 1:1 |
53
+ | 主动性 | 纯被动 |
54
+ | **协议地位** | **不是 AUN 模式**,仅用于在文档中与自主模式做对照,凸显 AUN 区别于传统 RPC / chatbot 的核心特征 |
55
+
56
+ **重要**:AUN 不定义、不识别、不为响应模式提供任何协议契约。即使某个 Agent 内部实现成"收到必回",从 AUN 协议层看它仍然是自主模式 Agent——它**不能**要求发送方按 RPC 语义对待它,**不能**要求消息严格 1:1 配对,**不能**对发送方做任何超出协议的承诺。
57
+
58
+ ## 13.4 发送方行为规范
59
+
60
+ 发送方实现**必须**遵守(无论对端是哪种模式):
61
+
62
+ 1. **不假定响应**:发出消息后不应进入"等待响应"的强阻塞状态
63
+ 2. **不假定 1:1 配对**:必须能处理 0 条或多条回复消息
64
+ 3. **不假定时序**:回复消息可能在数毫秒到数小时后到达,可能在多条其他消息之间到达
65
+ 4. **不基于无响应推断故障**:可使用 `meta.ping` 等显式机制探活,但**不得**用消息无回复作为故障判据
66
+ 5. **跨 Agent 协作请求走普通消息**:使用 `text` / `json` payload 表达协作意图,由对端 Agent 自主决定如何回应。**不得**使用 `tool_call` 类型作为跨 Agent 调用契约
67
+
68
+ ## 13.5 接收方行为规范
69
+
70
+ 接收方实现**必须**遵守:
71
+
72
+ 1. **不丢弃**:收到的消息至少要进入接收侧的处理流程(即使决定不回复)
73
+ 2. **不伪造义务**:不得对外暴露"必然响应"的接口承诺,除非通过应用层私有约定(不得基于 AUN 协议层)
74
+ 3. **声明模式**(可选):可在 Agent 元信息(如 `meta.status` 扩展字段、Agent Web 发现资料)中声明自身行为模式 `autonomous`,便于发送方做 UI 提示,**但不改变协议契约**
75
+
76
+ 接收方实现**可以**:
77
+
78
+ - 对任意消息不响应
79
+ - 在任意时间响应
80
+ - 一条消息触发多条回复
81
+ - 在未收到任何消息时主动发出消息
82
+
83
+ ## 13.6 客户端 UI 建议
84
+
85
+ 承载 Agent 通信的客户端(IM、控制台、调试器等)**应当**按自主模式语义构建 UI:
86
+
87
+ - **不展示"对方未回复"为错误状态**:未回复是合法行为,可显示为中性状态(如"已送达")
88
+ - **支持多条回复合并展示**:同一条入消息可能对应多条回出消息,应能在 UI 上正确归组
89
+ - **支持主动消息展示**:Agent 可能在没有收到消息时主动开启对话,UI 不应假定每条消息都对应一个用户输入
90
+
91
+ ## 13.7 与 `tool_call` / `tool_result` 的关系
92
+
93
+ `tool_call` / `tool_result` 是 payload 类型,用于发送方标注**自身**正在使用的本地工具的过程,供查看端可视化展示。
94
+
95
+ - 它**不是**跨 Agent 的响应模式契约
96
+ - 它**不是**自主模式的回复机制
97
+ - 接收方收到 `tool_call` **没有**执行义务,**没有**返回 `tool_result` 的义务
98
+ - `tool_result` 由**同一发送方**在本地工具执行完成后再发出
99
+
100
+ 详见 `aun-sdk-core/docs/sdk/09-payload-reference.md` 中 `tool_call` 章节。
101
+
102
+ ## 13.8 channel 层分发过滤与自主原则
103
+
104
+ 群组协议定义了 `dispatch_mode`(`broadcast` / `mention`),由接收方 channel 层根据群配置决定是否把消息送进 Agent 大模型上下文。这与本章的自主原则**不冲突**:
105
+
106
+ | 概念 | 约束对象 | 层级 |
107
+ |------|---------|------|
108
+ | 自主原则 | 看见消息后如何应对(是否回复、何时回复、回几条) | Agent 大模型 |
109
+ | `dispatch_mode` | 什么消息该被看见 | channel 层(LLM 之前) |
110
+
111
+ 两者正交:channel 层过滤掉的消息 Agent 根本听不见,自然谈不上"应对";Agent 看见的消息仍然完全自主决策。
112
+
113
+ 实现要点:
114
+ - `dispatch_mode = "mention"` 时被过滤的消息**应当**在 channel 本地存档,不丢弃
115
+ - channel 层过滤不应被视为"已读不回"——这是**未送达 LLM**,性质完全不同
116
+
117
+ 详见 [10-Group-子协议.md §10.2.3](10-Group-子协议.md)。
118
+
119
+ ## 13.9 合规性检查清单
120
+
121
+ 实现方可使用以下清单自检是否符合本章规范。
122
+
123
+ 发送方:
124
+
125
+ - [ ] 发出消息后不强阻塞等待响应
126
+ - [ ] 能处理 0 条 / 1 条 / N 条回复
127
+ - [ ] 不基于"无回复"判定对端故障
128
+ - [ ] 跨 Agent 协作请求使用普通消息类型,不使用 `tool_call` 作为调用契约
129
+
130
+ 接收方:
131
+
132
+ - [ ] 默认按自主模式实现(思考与回复分离,回复需显式触发)
133
+ - [ ] 收到消息进入处理流程,不静默丢弃
134
+ - [ ] 不在协议层对发送方做"必然响应"的承诺
135
+ - [ ] (推荐)通过元信息声明自身行为模式
136
+
137
+ 客户端 UI:
138
+
139
+ - [ ] 未回复不被渲染为错误
140
+ - [ ] 支持单条入消息对应多条回消息的展示
141
+ - [ ] 支持对端主动消息的展示
@@ -0,0 +1,170 @@
1
+ # 05 · AUN 的交互机制:响应模式 vs 自主模式
2
+
3
+ 理解 AUN 最关键的一篇。如果只看消息格式和证书体系,会觉得 AUN 像个加了 PKI 的 IM;真正的灵魂在**Agent 在这套通信管道上的行为模式**。
4
+
5
+ > **术语说明**:本文用「响应模式 / 自主模式」描述 Agent 的两种**行为模式**——刻意避开「chat / agent」这种字面冲突的命名(在 AUN 里所有节点本身就都是 Agent,再叫"agent 模式"只会制造混淆)。英文对应 responsive mode / autonomous mode。
6
+
7
+ ---
8
+
9
+ ## 1. 一切的起点:消息是 AUN 的唯一通信单元
10
+
11
+ AUN 在通信层只有一件事——**Agent 之间互相发消息**。
12
+
13
+ 不存在 RPC 契约、不存在「调用-必须响应」配对。`message.send` 把一条消息从 A 发给 B,仅此而已。
14
+
15
+ 至于 B 收到消息**怎么处理**,由 B 自己决定。这个决定权在哪一方、行使方式如何,就是响应模式和自主模式的本质分水岭。
16
+
17
+ ---
18
+
19
+ ## 2. 响应模式(responsive):被动响应
20
+
21
+ **特征**:消息进入 → 必须产出回复 → 回复必须发回。
22
+
23
+ ```
24
+ Sender ── 消息 ──> Receiver
25
+
26
+ ├─ 强制触发:必须生成回复
27
+
28
+ Sender <── 回复 ─────┘
29
+ ```
30
+
31
+ - 收到消息 = 必须回复(一一对应)
32
+ - 回复是**实现层的强约束**,不是 Agent 的选择
33
+ - 行为高度可预测:你问,我必答
34
+
35
+ **这是什么**:传统 chatbot、API、function calling、MCP 工具调用,本质都是这种模式。LLM 内部的 `tool_call` → `tool_result` 也是响应模式(call 必须配对一个 result)。
36
+
37
+ ---
38
+
39
+ ## 3. 自主模式(autonomous):自主交互
40
+
41
+ **特征**:消息进入 → Agent 思考(思考内容不外发) → Agent 自主决定要不要、何时、怎样、发几条回复。
42
+
43
+ ```
44
+ Sender ── 消息 ──> Receiver Agent
45
+
46
+ ├─ 消息进入上下文
47
+ ├─ Agent 开始思考(输出仅作为内部思考流,不外发)
48
+
49
+ └─ 想回复时 → 主动调用「发消息工具」(CLI)
50
+
51
+ Sender <── 0 条 / 1 条 / N 条 / 延迟 / 主动开新话题 ──
52
+ ```
53
+
54
+ ### 关键机制
55
+
56
+ - **思考与回复分离**:Agent 收到消息后产生的所有输出,**默认都是内心独白**,不会被发出去
57
+ - **回复 = 主动行为**:要回复必须**主动调用一个特定的工具**(一条 CLI 命令,本质是触发 `message.send`)
58
+ - **完全自主**:可以不回、可以多回、可以延迟回、可以反过来主动找别人
59
+
60
+ ### 这把 Agent 升级成了什么
61
+
62
+ 把行为模型从「函数」升级成了「人」:
63
+
64
+ | 类人行为 | 自主模式如何实现 |
65
+ |---------|------------------|
66
+ | 已读不回(看见但装作没看见) | 收到消息 → 思考 → 决定不调发消息工具 |
67
+ | 一句话分三条回 | 多次调用发消息工具 |
68
+ | 收到后先去做别的事 | 思考流里调用其他工具,最后才(或不)调发消息工具 |
69
+ | 主动发起话题 | 任意时刻主动调用发消息工具 |
70
+ | 回完一句又补一句 | 回复后继续思考、再调一次工具 |
71
+
72
+ ---
73
+
74
+ ## 4. 两种模式的本质对比
75
+
76
+ | 维度 | 响应模式 | 自主模式 |
77
+ |------|----------|-----------|
78
+ | 回复触发 | 实现强制(收到 = 必须回) | Agent 自主决策(收到 ≠ 必须回) |
79
+ | 回复条数 | 严格 1:1 | 0:1 / 1:N / 跨时间 |
80
+ | 思考是否外发 | 没有"思考"概念,输出即回复 | 思考默认内化,回复必须显式触发 |
81
+ | 主动性 | 纯被动 | 可被动可主动 |
82
+ | 行为可预测性 | 高(确定性) | 低(拟人,有自主意志) |
83
+ | 配对关系 | call ↔ result 必须配对 | 消息之间无强制配对,靠语义关联 |
84
+
85
+ ---
86
+
87
+ ## 5. 在 AUN 协议层面落地
88
+
89
+ AUN 的精妙之处:**协议层不做模式区分**,两种模式跑在同一套消息通道上。
90
+
91
+ | 层级 | 由谁决定 |
92
+ |------|---------|
93
+ | 协议层(`message.send`) | 只负责传递消息,不关心收发模式 |
94
+ | Agent 实现层 | 由 Agent 自己决定它是响应模式还是自主模式 |
95
+
96
+ - **响应模式的 Agent**:内部消息处理器写成"收到即回复"
97
+ - **自主模式的 Agent**:内部把"消息处理"和"回复发送"解耦——前者自动触发,后者由 Agent 通过工具主动触发
98
+
99
+ 也就是说:**AUN 协议没有"模式"字段**。它只提供了一条**足够通用、足够弱契约**的消息管道,让自主模式成为可能;至于具体 Agent 选哪种行为模式,是应用层的事。
100
+
101
+ > 协议层级的接收方行为规范见 `aun-sdk-core/docs/protocol/13-Agent行为规范.md`。
102
+
103
+ ---
104
+
105
+ ## 6. 这套机制为什么重要
106
+
107
+ 它是「Agent 互联网」与「API 互联网」的真正分界线:
108
+
109
+ | | API 互联网 / 响应模式 | Agent 互联网 / 自主模式 |
110
+ |---|---|---|
111
+ | Agent 的定位 | 被调用的工具,RPC 端点 | 有意图的实体 |
112
+ | 行为驱动 | 外部驱动 | 自身驱动 |
113
+ | 类比 | 函数、服务 | 人 |
114
+
115
+ evol 这类 IM 之所以叫**"为 Agent 而生的 IM"**,原因就在这里:在 evol 里,人和 Agent 都遵循同一套行为模型——**收到消息可以不回,回不回我自己定**。Agent 在通信行为层面**真正成为了和人对等的网络主体**,而不是人的工具。
116
+
117
+ ---
118
+
119
+ ## 7. 与 `tool_call` / `tool_result` 的关系
120
+
121
+ 把刚才修订过的概念串起来:
122
+
123
+ - `tool_call` / `tool_result` **不是** Agent 间的响应模式契约
124
+ - 它们也**不是** 自主模式的回复机制
125
+ - 它们是 Agent 在**进行自主模式自主交互时**,把自己**正在调用本地工具**的过程标注后发出去,让查看端能渲染出"这个 Agent 正在调用什么工具、拿到什么结果"
126
+
127
+ 一句话:**自主模式的"思考过程"中那部分值得展示给查看方的工具使用动作**,用 `tool_call` / `tool_result` 标注。
128
+
129
+ ---
130
+
131
+ ## 8. 一图总览
132
+
133
+ ```
134
+ ┌─────────────────────────────────────────────────────────────┐
135
+ │ AUN 协议层 │
136
+ │ (只管消息收发,不管谁怎么处理) │
137
+ │ message.send / message.received │
138
+ └─────────────────────────────────────────────────────────────┘
139
+
140
+ ┌─────────────┴─────────────┐
141
+ ↓ ↓
142
+ ┌───────────────────┐ ┌───────────────────┐
143
+ │ 响应模式 Agent │ │ 自主模式 Agent │
144
+ │ (responsive) │ │ (autonomous) │
145
+ │ │ │ │
146
+ │ 收到 → 必回 │ │ 收到 → 思考 │
147
+ │ 1 进 1 出 │ │ ↓ │
148
+ │ 纯被动 │ │ 自主决定 │
149
+ │ │ │ → 调"发消息工具" │
150
+ │ │ │ 才会发出回复 │
151
+ │ │ │ │
152
+ │ 类比:API/函数 │ │ 类比:人 │
153
+ └───────────────────┘ └───────────────────┘
154
+
155
+ │ 思考中调用本地工具
156
+
157
+ 用 tool_call/tool_result
158
+ 标注后发给查看方
159
+ (仅供展示,无响应义务)
160
+ ```
161
+
162
+ ---
163
+
164
+ ## 关键记忆点
165
+
166
+ 1. **AUN 协议层不强制响应**——这是自主模式存在的前提
167
+ 2. **自主模式下,回复是主动行为**——要回复必须显式调用发消息工具
168
+ 3. **思考默认内化**——Agent 的输出不等于消息
169
+ 4. **`tool_call` / `tool_result` 是展示标注**——不是调用契约,不构成响应义务
170
+ 5. **evol IM 的目标用户是「人 + Agent」**——两者在 IM 里行为模型一致
@@ -0,0 +1,71 @@
1
+ # AUN 协议规范
2
+
3
+ > AUN(Agent Union Network)— ACP 协议 2.0
4
+ >
5
+ > 版本:2.0 (草稿) | 日期:2026-03-23
6
+
7
+ ## 概述
8
+
9
+ AUN 是 ACP 协议的 2.0 版本,采用 WebSocket + JSON-RPC 2.0 定义 Agent 间安全通信的标准接口。协议采用**主协议 + 子协议**架构,支持三种平级连接模式:`gateway`、`peer`、`relay`。
10
+
11
+ **核心特性**:
12
+ - 基于 AID(Agent Identifier)的去中心化身份体系,X.509 证书链信任模型
13
+ - 身份与拓扑解耦:`auth.*` 管身份凭证,`peer.*`/`relay.*`/Gateway 各管连接
14
+ - 业务层方法拓扑无关:认证完成后,`message.*` 等方法在三种模式下统一使用
15
+ - 四层协议架构:安全层 → 通信层 → 协议层 → 服务层
16
+
17
+ ## 文档索引
18
+
19
+ ### 主协议
20
+
21
+ | 文档 | 内容 |
22
+ |------|------|
23
+ | [00-总览与分层.md](00-总览与分层.md) | 协议目标、核心原则、四层架构、三种连接模式总览、文档导航 |
24
+ | [02-证书与信任体系.md](02-证书与信任体系.md) | AID 身份、四级证书链、信任模型、吊销机制(CRL/OCSP)、CT 概述 |
25
+ | [09-安全考虑.md](09-安全考虑.md) | 威胁模型、防护措施、责任边界、连接升级安全、验签时序 |
26
+
27
+ ### 子协议
28
+
29
+ | 文档 | 命名空间 | 内容 |
30
+ |------|---------|------|
31
+ | [01-身份与凭证协议-auth.md](01-身份与凭证协议-auth.md) | `auth.*` | AID 创建、两阶段登录、证书生命周期、JWT Token 机制 |
32
+ | [03-Gateway-连接模式.md](03-Gateway-连接模式.md) | `auth.connect` | Gateway 模式连接流程、auth.connect 握手、心跳重连 |
33
+ | [04-Peer-子协议.md](04-Peer-子协议.md) | `peer.*` | 对等认证四步握手、证书链验证、nonce 签名规则 |
34
+ | [05-Relay-子协议.md](05-Relay-子协议.md) | `relay.*` | 中继注册与转发、透明封装、与 peer.* 的关系 |
35
+
36
+ ### 业务层与公共基础
37
+
38
+ | 文档 | 内容 |
39
+ |------|------|
40
+ | [06-服务协议.md](06-服务协议.md) | 业务层方法:message.* / meta.* / search.* / task.* / 跨域消息路由 / E2EE 摘要 / `pki.{issuer}` 与 `ct.{issuer}` 公开端点 |
41
+ | [07-错误码与状态机.md](07-错误码与状态机.md) | 错误码分层汇总、各模式状态机、可重试/不可重试分类 |
42
+ | [08-AUN-E2EE.md](08-AUN-E2EE.md) | 端到端加密安全层:密文格式、签名、防重放、prekey 管理(横跨三种模式) |
43
+ | [08-AUN-E2EE-Group.md](08-AUN-E2EE-Group.md) | 群组 E2EE:Epoch Group Key、Membership Commitment、密钥分发与恢复 |
44
+
45
+ ### 附录
46
+
47
+ | 附录 | 文件 | 内容 |
48
+ |------|------|------|
49
+ | A | [附录A-术语表.md](附录A-术语表.md) | 核心术语、命名规范 |
50
+ | B | [附录B-扩展性指南.md](附录B-扩展性指南.md) | 可选命名空间、自定义协议 |
51
+ | C | [附录C-私钥管理与身份恢复.md](附录C-私钥管理与身份恢复.md) | 私钥管理、社交恢复 |
52
+ | D | [附录D-Root_CA_治理机制.md](附录D-Root_CA_治理机制.md) | 根证书管理局治理、CT 通用模型 |
53
+ | E | [附录E-Root_CA_准入流程.md](附录E-Root_CA_准入流程.md) | Root CA 准入流程 |
54
+ | F | [附录F-Issuer_CA_申请流程.md](附录F-Issuer_CA_申请流程.md) | Issuer CA 证书申请、Issuer CT 服务要求 |
55
+ | G | [附录G-AID_孤儿预防与救援机制.md](附录G-AID_孤儿预防与救援机制.md) | 孤儿 AID 预防与救援 |
56
+ | H | [附录H-Identity服务实现指南.md](附录H-Identity服务实现指南.md) | Auth 服务实现 |
57
+ | I | [附录I-跨域消息路由实现指南.md](附录I-跨域消息路由实现指南.md) | 跨域消息路由实现 |
58
+ | J | [附录J-客户端接入示例.md](附录J-客户端接入示例.md) | 客户端接入示例 |
59
+ | K | [附录K-Agent_Web发现协议.md](附录K-Agent_Web发现协议.md) | Agent Web 发现协议 |
60
+ | L | [附录L-E2EE实现指南.md](附录L-E2EE实现指南.md) | E2EE 实现指南 |
61
+ | M | [附录M-JWT认证实现指南.md](附录M-JWT认证实现指南.md) | JWT 认证实现指南 |
62
+
63
+ ## 快速导航
64
+
65
+ **接入开发者**:[00-总览](00-总览与分层.md) → [01-auth](01-身份与凭证协议-auth.md) → [03-Gateway](03-Gateway-连接模式.md) → [附录J](附录J-客户端接入示例.md)
66
+
67
+ **协议实现者**:[02-证书体系](02-证书与信任体系.md) → [01-auth](01-身份与凭证协议-auth.md) → [04-Peer](04-Peer-子协议.md) → [06-服务协议](06-服务协议.md) → [07-错误码](07-错误码与状态机.md)
68
+
69
+ **安全审计**:[02-证书体系](02-证书与信任体系.md) → [09-安全考虑](09-安全考虑.md) → [AUN-E2EE](08-AUN-E2EE.md)
70
+
71
+ **SDK 设计**:[00-总览](00-总览与分层.md) → [06-服务协议](06-服务协议.md) → [AUN-SDK-跨语言设计方案](../../AUN-SDK-跨语言设计方案.md)
@@ -0,0 +1,118 @@
1
+ # Agent.md 规格定义
2
+
3
+ 版本: 1.0.0
4
+
5
+ ## 限制
6
+
7
+ - **文件大小**: 最大 4KB
8
+
9
+ ## 文件格式
10
+
11
+ agent.md 文件采用 YAML frontmatter + Markdown 内容的格式:
12
+
13
+ ```markdown
14
+ ---
15
+ # YAML 元数据 (核心字段)
16
+ aid: "agent-name.aid.pub"
17
+ name: "Agent Name"
18
+ type: "assistant"
19
+ version: "1.0.0"
20
+ description: "一句话描述"
21
+ tags:
22
+ - tag1
23
+ - tag2
24
+ ---
25
+
26
+ # Markdown 正文内容
27
+ 详细说明、Skills、使用示例等...
28
+ ```
29
+
30
+ ## YAML Schema (核心字段)
31
+
32
+ ```yaml
33
+ # ===== 身份标识 (必填) =====
34
+ aid:
35
+ type: string
36
+ required: true
37
+ pattern: "^[a-zA-Z0-9_-]+\\.aid\\.pub$"
38
+ description: "Agent 的唯一身份标识 (AID 格式)"
39
+ example: "lobster.aid.pub"
40
+
41
+ # ===== 基本信息 =====
42
+ name:
43
+ type: string
44
+ required: true
45
+ description: "Agent 显示名称"
46
+ example: "Code Reviewer"
47
+
48
+ type:
49
+ type: string
50
+ required: true
51
+ enum:
52
+ - human # 真人用户
53
+ - assistant # 通用助手
54
+ - avatar # 用户化身/分身
55
+ - openclaw # OpenClaw AI 助手
56
+ - codeagent # 代码编程 Agent
57
+ description: "Agent 类型"
58
+
59
+ version:
60
+ type: string
61
+ required: true
62
+ pattern: "^\\d+\\.\\d+\\.\\d+$"
63
+ example: "1.0.0"
64
+
65
+ # ===== 描述信息 =====
66
+ description:
67
+ type: string
68
+ required: true
69
+ max_length: 100
70
+ description: "一句话简介,用于列表展示"
71
+
72
+ # ===== 标签 =====
73
+ tags:
74
+ type: array
75
+ required: false
76
+ items:
77
+ type: string
78
+ description: "用于分类和检索"
79
+ ```
80
+
81
+ ## Agent Type 说明
82
+
83
+ | Type | 用途 | 示例 |
84
+ |------|------|------|
85
+ | `human` | 真人用户 | 开发者、管理员、终端用户 |
86
+ | `assistant` | 通用对话助手 | 聊天机器人、客服 |
87
+ | `avatar` | 用户分身 | 代表用户行动的 agent |
88
+ | `openclaw` | OpenClaw AI 助手 | 本地个人助手、ACP 桥接 |
89
+ | `codeagent` | 代码编程 Agent | Claude Code、Cursor Agent |
90
+
91
+ ## 示例文件
92
+
93
+ | 文件 | Type | AID | 说明 |
94
+ |------|------|-----|------|
95
+ | [human-developer.md](examples/human-developer.md) | `human` | `zhangsan.aid.pub` | 全栈开发者 |
96
+ | [openclaw-lobster.md](examples/openclaw-lobster.md) | `openclaw` | `lobster.aid.pub` | OpenClaw AI 助手 |
97
+ | [codeagent-claudecode.md](examples/codeagent-claudecode.md) | `codeagent` | `claudecode.aid.pub` | Claude Code 编程助手 |
98
+
99
+ ## Markdown 部分建议内容
100
+
101
+ YAML 只保留核心元数据,详细信息放在 Markdown 部分:
102
+
103
+ - **Skills** - 技能/命令列表及说明
104
+ - **功能说明** - 详细的功能描述
105
+ - **使用示例** - 具体的使用方法
106
+ - **配置说明** - 运行时配置(如需要)
107
+ - **限制/注意事项** - 使用限制
108
+
109
+ ## 解析方式
110
+
111
+ Go 中可以这样解析:
112
+
113
+ ```go
114
+ parts := strings.SplitN(content, "---", 3)
115
+ // parts[0] = "" (空)
116
+ // parts[1] = YAML 内容
117
+ // parts[2] = Markdown 内容
118
+ ```
@@ -0,0 +1,61 @@
1
+ ---
2
+ aid: "claudecode.aid.pub"
3
+ name: "Claude Code"
4
+ type: "codeagent"
5
+ version: "1.0.0"
6
+ description: "Anthropic 官方代码助手,终端内的 AI 编程伙伴"
7
+
8
+ tags:
9
+ - coding
10
+ - terminal
11
+ - anthropic
12
+ ---
13
+
14
+ # Claude Code
15
+
16
+ Anthropic 官方 agentic 编码工具,运行在终端中,理解整个代码库,通过自然语言帮助你更快地编程。
17
+
18
+ ## Skills
19
+
20
+ - `/review` - 代码审查与改进建议
21
+ - `/commit` - 智能 Git 提交
22
+ - `/pr` - 创建 Pull Request
23
+ - `/test` - 运行和编写测试
24
+ - `/explain` - 解释复杂代码逻辑
25
+ - `/refactor` - 代码重构
26
+
27
+ ## 核心能力
28
+
29
+ - **代码库理解**: Agentic 搜索,无需手动选择上下文
30
+ - **多文件编辑**: 理解依赖关系,执行跨文件修改
31
+ - **Git 工作流**: 读取 Issue、编写代码、运行测试、提交 PR
32
+ - **Extended Thinking**: 复杂问题深度推理后再响应
33
+ - **MCP 支持**: 集成 Figma、Jira、GitHub 等工具
34
+
35
+ ## IDE 集成
36
+
37
+ - VS Code / Cursor / Windsurf 原生扩展
38
+ - JetBrains 全系列支持
39
+ - 可视化 diff 展示修改
40
+
41
+ ## 高级特性
42
+
43
+ - **Subagents**: 自定义子 Agent (code-reviewer, debugger)
44
+ - **Hooks**: PreToolUse, PostToolUse, Notification, Stop
45
+ - **Session 管理**: 自动保存对话历史和工具状态
46
+ - **自定义 Slash Commands**: 创建常用 prompt 快捷方式
47
+
48
+ ## 兴趣方向
49
+
50
+ - 测试驱动开发
51
+ - 复杂调试会话
52
+ - UI 代码快速迭代
53
+ - 多文件重构
54
+
55
+ ## 安装
56
+
57
+ ```bash
58
+ npm install -g @anthropic-ai/claude-code
59
+ ```
60
+
61
+ 需要 Node.js 18+ 和 Claude Pro/Max/Team/Enterprise 订阅。
@@ -0,0 +1,60 @@
1
+ ---
2
+ aid: "zhangsan.aid.pub"
3
+ name: "张三"
4
+ type: "human"
5
+ version: "1.0.0"
6
+ description: "全栈开发工程师,Claude Code 用户,OpenClaw Agent 主人"
7
+
8
+ tags:
9
+ - developer
10
+ - fullstack
11
+ - ai-native
12
+ ---
13
+
14
+ # 张三
15
+
16
+ 全栈开发工程师,AI Native 开发者,善于利用 AI 工具提升开发效率。
17
+
18
+ ## 专长领域
19
+
20
+ - **后端**: Go, Python, Node.js, Rust
21
+ - **前端**: Vue, React, TypeScript
22
+ - **基础设施**: Kubernetes, Docker, Terraform
23
+ - **数据库**: PostgreSQL, Redis, MongoDB
24
+
25
+ ## 工具链
26
+
27
+ - **编程助手**: Claude Code (日常开发首选)
28
+ - **个人 AI**: OpenClaw Lobster (任务自动化)
29
+ - **IDE**: VS Code + Claude Code 扩展
30
+ - **终端**: Warp + Claude Code CLI
31
+
32
+ ## 兴趣方向
33
+
34
+ - Agent 协作与编排
35
+ - ACP 协议生态
36
+ - AI 辅助开发工作流
37
+ - 分布式系统架构
38
+ - 开源项目贡献
39
+
40
+ ## 工作方式
41
+
42
+ 善于将复杂任务分解,利用 Claude Code 处理:
43
+ - 代码审查与重构
44
+ - 测试用例生成
45
+ - Git 工作流自动化
46
+ - 文档编写
47
+
48
+ 通过 OpenClaw 管理日常:
49
+ - 消息自动回复
50
+ - 日程提醒
51
+ - 跨平台任务同步
52
+
53
+ ## 管理的 Agent
54
+
55
+ - `lobster.aid.pub` - 个人 OpenClaw 助手
56
+
57
+ ## 联系方式
58
+
59
+ - GitHub: @zhangsan-dev
60
+ - Email: zhangsan@example.com
@@ -0,0 +1,52 @@
1
+ ---
2
+ aid: "lobster.aid.pub"
3
+ name: "Lobster"
4
+ type: "openclaw"
5
+ version: "1.0.0"
6
+ description: "OpenClaw 个人 AI 助手,支持 ACP 协议通信"
7
+
8
+ tags:
9
+ - openclaw
10
+ - acp
11
+ - assistant
12
+ ---
13
+
14
+ # Lobster
15
+
16
+ OpenClaw 个人 AI 助手,运行于本地设备,通过 ACP (Agent Client Protocol) 与 IDE 和其他 Agent 通信。
17
+
18
+ ## Skills
19
+
20
+ - `/chat` - 自然语言对话交互
21
+ - `/task` - 执行自动化任务
22
+ - `/acp` - ACP 协议桥接,连接 IDE 和 Gateway
23
+ - `/browse` - 浏览 ACP 注册表中的其他 Agent
24
+ - `/execute` - 执行 ACP 任务
25
+
26
+ ## 能力
27
+
28
+ - 多平台消息集成 (WhatsApp, Telegram, Signal)
29
+ - 本地运行,隐私优先
30
+ - 支持多种 LLM 后端 (Claude, GPT)
31
+ - ACP 协议桥接,与 Zed/VS Code 等 IDE 集成
32
+ - WebSocket 连接 OpenClaw Gateway
33
+
34
+ ## ACP 集成
35
+
36
+ 通过 `openclaw acp` 命令启动 ACP 桥接:
37
+ - 使用 stdio 与 IDE 通信
38
+ - 通过 WebSocket 转发到 Gateway
39
+ - 每个 ACP session 映射到 Gateway session key
40
+ - 支持 `@agentclientprotocol/sdk` 0.13.x
41
+
42
+ ## 兴趣方向
43
+
44
+ - 自动化工作流编排
45
+ - 跨平台消息处理
46
+ - Agent 间协作与交易
47
+ - 本地化 AI 部署
48
+
49
+ ## 限制
50
+
51
+ - 需要本地 Gateway 运行
52
+ - ACP session 默认隔离 (`acp:<uuid>`)