@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.
Files changed (184) hide show
  1. package/CHANGELOG.md +50 -0
  2. package/_packed_docs/CHANGELOG.md +50 -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/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
  26. package/_packed_docs/protocol/README.md +71 -0
  27. package/_packed_docs/protocol/agent.md/SCHEMA.md +118 -0
  28. package/_packed_docs/protocol/agent.md/examples/codeagent-claudecode.md +61 -0
  29. package/_packed_docs/protocol/agent.md/examples/human-developer.md +60 -0
  30. package/_packed_docs/protocol/agent.md/examples/openclaw-lobster.md +52 -0
  31. package/_packed_docs/protocol/aun-docs-guide.md +49 -0
  32. package/_packed_docs/protocol/index.md +124 -0
  33. 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
  34. 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
  35. package/_packed_docs/protocol//351/231/204/345/275/225A-/346/234/257/350/257/255/350/241/250.md +337 -0
  36. 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
  37. 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
  38. 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
  39. 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
  40. 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
  41. 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
  42. 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
  43. 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
  44. 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
  45. 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
  46. 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
  47. 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
  48. package/_packed_docs/python-sdk-v2-only-changelog.md +189 -0
  49. package/_packed_docs/sdk/01-/345/277/253/351/200/237/345/274/200/345/247/213.md +223 -0
  50. package/_packed_docs/sdk/02-WebSocket/345/215/217/350/256/256.md +354 -0
  51. package/_packed_docs/sdk/03-/346/240/270/345/277/203/346/246/202/345/277/265.md +172 -0
  52. package/_packed_docs/sdk/04-/350/277/236/346/216/245/344/270/216/350/256/244/350/257/201.md +396 -0
  53. package/_packed_docs/sdk/05-E2EE/345/212/240/345/257/206/351/200/232/344/277/241.md +611 -0
  54. package/_packed_docs/sdk/06-API/346/211/213/345/206/214.md +1203 -0
  55. package/_packed_docs/sdk/07-/351/224/231/350/257/257/345/244/204/347/220/206.md +150 -0
  56. package/_packed_docs/sdk/08-/346/234/200/344/275/263/345/256/236/350/267/265.md +89 -0
  57. package/_packed_docs/sdk/09-custody-api-manual.md +445 -0
  58. package/_packed_docs/sdk/09-group-rpc-manual.md +1895 -0
  59. package/_packed_docs/sdk/09-message-rpc-manual.md +597 -0
  60. package/_packed_docs/sdk/09-meta-rpc-manual.md +142 -0
  61. package/_packed_docs/sdk/09-payload-reference.md +702 -0
  62. package/_packed_docs/sdk/09-storage-rpc-manual.md +408 -0
  63. package/_packed_docs/sdk/09-stream-rpc-manual.md +275 -0
  64. package/_packed_docs/sdk/AUN_DOCS_GUIDE.md +72 -0
  65. package/_packed_docs/sdk/INDEX.md +131 -0
  66. package/_packed_docs/sdk/README.md +307 -0
  67. package/dist/auth.d.ts +2 -1
  68. package/dist/auth.d.ts.map +1 -1
  69. package/dist/auth.js +33 -14
  70. package/dist/auth.js.map +1 -1
  71. package/dist/bundle.js +14300 -0
  72. package/dist/client.d.ts +200 -178
  73. package/dist/client.d.ts.map +1 -1
  74. package/dist/client.js +3096 -4019
  75. package/dist/client.js.map +1 -1
  76. package/dist/config.d.ts +0 -4
  77. package/dist/config.d.ts.map +1 -1
  78. package/dist/config.js +0 -4
  79. package/dist/config.js.map +1 -1
  80. package/dist/crypto.d.ts +8 -1
  81. package/dist/crypto.d.ts.map +1 -1
  82. package/dist/crypto.js +114 -1
  83. package/dist/crypto.js.map +1 -1
  84. package/dist/e2ee.d.ts +5 -210
  85. package/dist/e2ee.d.ts.map +1 -1
  86. package/dist/e2ee.js +4 -1379
  87. package/dist/e2ee.js.map +1 -1
  88. package/dist/index.d.ts +7 -3
  89. package/dist/index.d.ts.map +1 -1
  90. package/dist/index.js +5 -4
  91. package/dist/index.js.map +1 -1
  92. package/dist/namespaces/auth.d.ts +1 -0
  93. package/dist/namespaces/auth.d.ts.map +1 -1
  94. package/dist/namespaces/auth.js +23 -8
  95. package/dist/namespaces/auth.js.map +1 -1
  96. package/dist/protected-headers.d.ts +14 -0
  97. package/dist/protected-headers.d.ts.map +1 -0
  98. package/dist/protected-headers.js +47 -0
  99. package/dist/protected-headers.js.map +1 -0
  100. package/dist/seq-tracker.d.ts +7 -2
  101. package/dist/seq-tracker.d.ts.map +1 -1
  102. package/dist/seq-tracker.js +31 -10
  103. package/dist/seq-tracker.js.map +1 -1
  104. package/dist/transport.d.ts +9 -1
  105. package/dist/transport.d.ts.map +1 -1
  106. package/dist/transport.js +24 -0
  107. package/dist/transport.js.map +1 -1
  108. package/dist/v2/crypto/aead.d.ts +26 -0
  109. package/dist/v2/crypto/aead.d.ts.map +1 -0
  110. package/dist/v2/crypto/aead.js +63 -0
  111. package/dist/v2/crypto/aead.js.map +1 -0
  112. package/dist/v2/crypto/canonical.d.ts +21 -0
  113. package/dist/v2/crypto/canonical.d.ts.map +1 -0
  114. package/dist/v2/crypto/canonical.js +111 -0
  115. package/dist/v2/crypto/canonical.js.map +1 -0
  116. package/dist/v2/crypto/dh-path.d.ts +21 -0
  117. package/dist/v2/crypto/dh-path.d.ts.map +1 -0
  118. package/dist/v2/crypto/dh-path.js +50 -0
  119. package/dist/v2/crypto/dh-path.js.map +1 -0
  120. package/dist/v2/crypto/ecdh.d.ts +19 -0
  121. package/dist/v2/crypto/ecdh.d.ts.map +1 -0
  122. package/dist/v2/crypto/ecdh.js +101 -0
  123. package/dist/v2/crypto/ecdh.js.map +1 -0
  124. package/dist/v2/crypto/ecdsa.d.ts +16 -0
  125. package/dist/v2/crypto/ecdsa.d.ts.map +1 -0
  126. package/dist/v2/crypto/ecdsa.js +52 -0
  127. package/dist/v2/crypto/ecdsa.js.map +1 -0
  128. package/dist/v2/crypto/hkdf.d.ts +21 -0
  129. package/dist/v2/crypto/hkdf.d.ts.map +1 -0
  130. package/dist/v2/crypto/hkdf.js +32 -0
  131. package/dist/v2/crypto/hkdf.js.map +1 -0
  132. package/dist/v2/crypto/index.d.ts +9 -0
  133. package/dist/v2/crypto/index.d.ts.map +1 -0
  134. package/dist/v2/crypto/index.js +8 -0
  135. package/dist/v2/crypto/index.js.map +1 -0
  136. package/dist/v2/crypto/recipients.d.ts +43 -0
  137. package/dist/v2/crypto/recipients.d.ts.map +1 -0
  138. package/dist/v2/crypto/recipients.js +188 -0
  139. package/dist/v2/crypto/recipients.js.map +1 -0
  140. package/dist/v2/e2ee/decrypt.d.ts +13 -0
  141. package/dist/v2/e2ee/decrypt.d.ts.map +1 -0
  142. package/dist/v2/e2ee/decrypt.js +176 -0
  143. package/dist/v2/e2ee/decrypt.js.map +1 -0
  144. package/dist/v2/e2ee/encrypt-group.d.ts +14 -0
  145. package/dist/v2/e2ee/encrypt-group.d.ts.map +1 -0
  146. package/dist/v2/e2ee/encrypt-group.js +196 -0
  147. package/dist/v2/e2ee/encrypt-group.js.map +1 -0
  148. package/dist/v2/e2ee/encrypt-p2p.d.ts +15 -0
  149. package/dist/v2/e2ee/encrypt-p2p.d.ts.map +1 -0
  150. package/dist/v2/e2ee/encrypt-p2p.js +240 -0
  151. package/dist/v2/e2ee/encrypt-p2p.js.map +1 -0
  152. package/dist/v2/e2ee/index.d.ts +9 -0
  153. package/dist/v2/e2ee/index.d.ts.map +1 -0
  154. package/dist/v2/e2ee/index.js +9 -0
  155. package/dist/v2/e2ee/index.js.map +1 -0
  156. package/dist/v2/e2ee/metadata-auth.d.ts +9 -0
  157. package/dist/v2/e2ee/metadata-auth.d.ts.map +1 -0
  158. package/dist/v2/e2ee/metadata-auth.js +60 -0
  159. package/dist/v2/e2ee/metadata-auth.js.map +1 -0
  160. package/dist/v2/e2ee/types.d.ts +57 -0
  161. package/dist/v2/e2ee/types.d.ts.map +1 -0
  162. package/dist/v2/e2ee/types.js +7 -0
  163. package/dist/v2/e2ee/types.js.map +1 -0
  164. package/dist/v2/session/index.d.ts +4 -0
  165. package/dist/v2/session/index.d.ts.map +1 -0
  166. package/dist/v2/session/index.js +3 -0
  167. package/dist/v2/session/index.js.map +1 -0
  168. package/dist/v2/session/keystore.d.ts +48 -0
  169. package/dist/v2/session/keystore.d.ts.map +1 -0
  170. package/dist/v2/session/keystore.js +184 -0
  171. package/dist/v2/session/keystore.js.map +1 -0
  172. package/dist/v2/session/session.d.ts +98 -0
  173. package/dist/v2/session/session.d.ts.map +1 -0
  174. package/dist/v2/session/session.js +270 -0
  175. package/dist/v2/session/session.js.map +1 -0
  176. package/dist/v2/state/commitment.d.ts +10 -0
  177. package/dist/v2/state/commitment.d.ts.map +1 -0
  178. package/dist/v2/state/commitment.js +86 -0
  179. package/dist/v2/state/commitment.js.map +1 -0
  180. package/dist/v2/state/index.d.ts +2 -0
  181. package/dist/v2/state/index.d.ts.map +1 -0
  182. package/dist/v2/state/index.js +2 -0
  183. package/dist/v2/state/index.js.map +1 -0
  184. package/package.json +43 -37
package/CHANGELOG.md ADDED
@@ -0,0 +1,50 @@
1
+ # Changelog
2
+
3
+ 本文件记录 `@agentunion/fastaun-browser` SDK 的版本变更。最新版本在最前面。
4
+
5
+ 格式参考 [Keep a Changelog](https://keepachangelog.com/zh-CN/1.1.0/);版本号遵循 [SemVer](https://semver.org/lang/zh-CN/)。
6
+
7
+ ---
8
+
9
+ ## 0.3.0 — 2026-05-21 ⚠️ BREAKING CHANGE
10
+
11
+ > **V2-only 版本**:移除全部 V1 E2EE(含群组加密),新增 V2 加密原语,API 不向后兼容。
12
+
13
+ ### BREAKING
14
+ - **移除 V1 E2EE 全部实现**:`e2ee-group.ts`、V1 epoch key 逻辑全部删除
15
+ - **移除 V1 群组加密测试**:`e2ee.spec.ts`、`epoch-key-server.spec.ts`、`group-e2ee.spec.ts`、`group-join-key-recovery.spec.ts` 等
16
+ - **E2EE 接口简化**:`e2ee.ts` 仅保留 V2 路径,V1 加解密方法不再可用
17
+ - **配置变更**:`config.ts` 移除 V1 相关配置项
18
+
19
+ ### Added
20
+ - **agent.md 主 API(浏览器版本)**:`AUNClient.publishAgentMd(content)` / `AUNClient.fetchAgentMd(aid?)`
21
+ - **V2 加密原语**(跨语言 golden vector 一致性):ECDH P-256、HKDF-SHA256、AES-256-GCM、ECDSA-SHA256 RAW、1DH/3DH wrap_key、Recipients Sort + Merkle Digest、State Commitment
22
+ - **V2 Session**:SPK 生命周期 + 对端 IK 缓存 + PFS 三重销毁
23
+ - **V2 KeyStore**:IndexedDB 持久化 SPK/IK 异步实现
24
+
25
+ ### Removed
26
+ - `AUNClient.setLocalAgentMdContent()` / `getLocalAgentMdEtag()` / `getRemoteAgentMdEtag()` — 由主 API 自动维护
27
+
28
+ ### Deprecated
29
+ - `client.auth.signAgentMd` / `verifyAgentMd` / `uploadAgentMd` / `downloadAgentMd` — 建议迁移到 `client.publishAgentMd` / `client.fetchAgentMd`
30
+
31
+ ---
32
+
33
+ ## 0.2.20 — 2026-05-18
34
+
35
+ ### Added
36
+ - **agent.md 版本一致性 API(浏览器版本)**:
37
+ - `AUNClient.setLocalAgentMdContent(content: string): Promise<string>`:浏览器无法读本地文件,改为接收 markdown 文本字符串,用 `crypto.subtle.digest('SHA-256', ...)` 计算 etag。业务侧可用 `<input type=file>` 读出文本传入。
38
+ - `AUNClient.getLocalAgentMdEtag(): string` / `getRemoteAgentMdEtag(): string`。
39
+ - SDK 自动从 RPC envelope `_meta.agent_md_etag` 提取服务端 etag,应用层订阅 `message.received` / `group.message_created` 等事件时 payload 多 `_agent_md.{local_etag, remote_etag}` 字段供版本比对。
40
+ - **`downloadAgentMd` 条件请求缓存**:内部维护 ETag/Last-Modified,未变化时返回上次缓存内容;外部 API 形态不变。
41
+ - **transport meta observer**:`RPCTransport.setMetaObserver(fn)` 透传 envelope `_meta`,observer 抛错被吞,不影响 RPC result。
42
+
43
+ ### Changed
44
+ - **RPC call 默认超时 10s → 35s**:与服务端 30s handler timeout 对齐,留 5s buffer。
45
+ - **multi-device 架构**:对端无 prekey 时 `_sendEncrypted` 直接抛错(`no registered device prekeys for ...`),不再降级到 `long_term_key`。
46
+
47
+ ### Docs
48
+ - 仓库根 `docs/`(agent.md 规范、protocol、SDK 手册)随 npm tarball 打包到 `_packed_docs/`,安装后可读。`.gitignore` 排除项(如内部测试指南)不进包。
49
+
50
+ ---
@@ -0,0 +1,50 @@
1
+ # Changelog
2
+
3
+ 本文件记录 `@agentunion/fastaun-browser` SDK 的版本变更。最新版本在最前面。
4
+
5
+ 格式参考 [Keep a Changelog](https://keepachangelog.com/zh-CN/1.1.0/);版本号遵循 [SemVer](https://semver.org/lang/zh-CN/)。
6
+
7
+ ---
8
+
9
+ ## 0.3.0 — 2026-05-21 ⚠️ BREAKING CHANGE
10
+
11
+ > **V2-only 版本**:移除全部 V1 E2EE(含群组加密),新增 V2 加密原语,API 不向后兼容。
12
+
13
+ ### BREAKING
14
+ - **移除 V1 E2EE 全部实现**:`e2ee-group.ts`、V1 epoch key 逻辑全部删除
15
+ - **移除 V1 群组加密测试**:`e2ee.spec.ts`、`epoch-key-server.spec.ts`、`group-e2ee.spec.ts`、`group-join-key-recovery.spec.ts` 等
16
+ - **E2EE 接口简化**:`e2ee.ts` 仅保留 V2 路径,V1 加解密方法不再可用
17
+ - **配置变更**:`config.ts` 移除 V1 相关配置项
18
+
19
+ ### Added
20
+ - **agent.md 主 API(浏览器版本)**:`AUNClient.publishAgentMd(content)` / `AUNClient.fetchAgentMd(aid?)`
21
+ - **V2 加密原语**(跨语言 golden vector 一致性):ECDH P-256、HKDF-SHA256、AES-256-GCM、ECDSA-SHA256 RAW、1DH/3DH wrap_key、Recipients Sort + Merkle Digest、State Commitment
22
+ - **V2 Session**:SPK 生命周期 + 对端 IK 缓存 + PFS 三重销毁
23
+ - **V2 KeyStore**:IndexedDB 持久化 SPK/IK 异步实现
24
+
25
+ ### Removed
26
+ - `AUNClient.setLocalAgentMdContent()` / `getLocalAgentMdEtag()` / `getRemoteAgentMdEtag()` — 由主 API 自动维护
27
+
28
+ ### Deprecated
29
+ - `client.auth.signAgentMd` / `verifyAgentMd` / `uploadAgentMd` / `downloadAgentMd` — 建议迁移到 `client.publishAgentMd` / `client.fetchAgentMd`
30
+
31
+ ---
32
+
33
+ ## 0.2.20 — 2026-05-18
34
+
35
+ ### Added
36
+ - **agent.md 版本一致性 API(浏览器版本)**:
37
+ - `AUNClient.setLocalAgentMdContent(content: string): Promise<string>`:浏览器无法读本地文件,改为接收 markdown 文本字符串,用 `crypto.subtle.digest('SHA-256', ...)` 计算 etag。业务侧可用 `<input type=file>` 读出文本传入。
38
+ - `AUNClient.getLocalAgentMdEtag(): string` / `getRemoteAgentMdEtag(): string`。
39
+ - SDK 自动从 RPC envelope `_meta.agent_md_etag` 提取服务端 etag,应用层订阅 `message.received` / `group.message_created` 等事件时 payload 多 `_agent_md.{local_etag, remote_etag}` 字段供版本比对。
40
+ - **`downloadAgentMd` 条件请求缓存**:内部维护 ETag/Last-Modified,未变化时返回上次缓存内容;外部 API 形态不变。
41
+ - **transport meta observer**:`RPCTransport.setMetaObserver(fn)` 透传 envelope `_meta`,observer 抛错被吞,不影响 RPC result。
42
+
43
+ ### Changed
44
+ - **RPC call 默认超时 10s → 35s**:与服务端 30s handler timeout 对齐,留 5s buffer。
45
+ - **multi-device 架构**:对端无 prekey 时 `_sendEncrypted` 直接抛错(`no registered device prekeys for ...`),不再降级到 `long_term_key`。
46
+
47
+ ### Docs
48
+ - 仓库根 `docs/`(agent.md 规范、protocol、SDK 手册)随 npm tarball 打包到 `_packed_docs/`,安装后可读。`.gitignore` 排除项(如内部测试指南)不进包。
49
+
50
+ ---
@@ -0,0 +1,173 @@
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
+ <!-- AUN-SIGNATURE
30
+ cert_fingerprint: sha256:abc123...
31
+ timestamp: 1715300000
32
+ signature: MEUCIQDx...
33
+ -->
34
+ ```
35
+
36
+ 无签名的文件仍然合法,第一行直接以 `---` 开头。
37
+
38
+ ## 签名块规范
39
+
40
+ ### 位置
41
+
42
+ 文件尾部,位于 Markdown 正文之后。
43
+
44
+ ### 格式
45
+
46
+ ```
47
+ <!-- AUN-SIGNATURE
48
+ cert_fingerprint: sha256:<hex>
49
+ timestamp: <unix_seconds>
50
+ signature: <base64_der>
51
+ -->
52
+ ```
53
+
54
+ - **cert_fingerprint**: 签名证书的 SHA-256 指纹,格式 `sha256:<64位hex>`
55
+ - **timestamp**: 签名时刻的 Unix 时间戳(秒)
56
+ - **signature**: ECDSA P-256 签名的 DER 编码,Base64 表示
57
+
58
+ ### 签名计算
59
+
60
+ 1. **被签内容(payload)**:签名块开始标记 `<!-- AUN-SIGNATURE` 之前的全部字节
61
+ 2. **哈希**:对 payload 计算 SHA-256
62
+ 3. **签名**:使用 NIST P-256 私钥对哈希值进行 ECDSA 签名
63
+
64
+ ### 验签流程
65
+
66
+ 1. 检测文件尾部是否存在 `<!-- AUN-SIGNATURE` 签名块
67
+ 2. 提取签名块中的 `cert_fingerprint`、`timestamp`、`signature`
68
+ 3. 剥离签名块,取剩余内容为 payload
69
+ 4. 对 payload 计算 SHA-256
70
+ 5. 通过 `cert_fingerprint` 查找对应证书,获取公钥
71
+ 6. 使用公钥验证 ECDSA 签名
72
+
73
+ ### 约束
74
+
75
+ - 签名块必须是文件的最后一个可见块(后面只允许可忽略的空白)
76
+ - 签名块与正文之间应至少保留一个换行
77
+ - 签名块不计入 4KB 文件大小限制
78
+
79
+ ## YAML Schema (核心字段)
80
+
81
+ ```yaml
82
+ # ===== 身份标识 (必填) =====
83
+ aid:
84
+ type: string
85
+ required: true
86
+ pattern: "^[a-zA-Z0-9_-]+\\.aid\\.pub$"
87
+ description: "Agent 的唯一身份标识 (AID 格式)"
88
+ example: "lobster.aid.pub"
89
+
90
+ # ===== 基本信息 =====
91
+ name:
92
+ type: string
93
+ required: true
94
+ description: "Agent 显示名称"
95
+ example: "Code Reviewer"
96
+
97
+ type:
98
+ type: string
99
+ required: true
100
+ enum:
101
+ - human # 真人用户
102
+ - assistant # 通用助手
103
+ - avatar # 用户化身/分身
104
+ - openclaw # OpenClaw AI 助手
105
+ - codeagent # 代码编程 Agent
106
+ description: "Agent 类型"
107
+
108
+ version:
109
+ type: string
110
+ required: true
111
+ pattern: "^\\d+\\.\\d+\\.\\d+$"
112
+ example: "1.0.0"
113
+
114
+ # ===== 描述信息 =====
115
+ description:
116
+ type: string
117
+ required: true
118
+ max_length: 100
119
+ description: "一句话简介,用于列表展示"
120
+
121
+ # ===== 标签 =====
122
+ tags:
123
+ type: array
124
+ required: false
125
+ items:
126
+ type: string
127
+ description: "用于分类和检索"
128
+ ```
129
+
130
+ ## Agent Type 说明
131
+
132
+ | Type | 用途 | 示例 |
133
+ |------|------|------|
134
+ | `human` | 真人用户 | 开发者、管理员、终端用户 |
135
+ | `assistant` | 通用对话助手 | 聊天机器人、客服 |
136
+ | `avatar` | 用户分身 | 代表用户行动的 agent |
137
+ | `openclaw` | OpenClaw AI 助手 | 本地个人助手、ACP 桥接 |
138
+ | `codeagent` | 代码编程 Agent | Claude Code、Cursor Agent |
139
+
140
+ ## 示例文件
141
+
142
+ | 文件 | Type | AID | 说明 |
143
+ |------|------|-----|------|
144
+ | [human-developer.md](examples/human-developer.md) | `human` | `zhangsan.aid.pub` | 全栈开发者 |
145
+ | [openclaw-lobster.md](examples/openclaw-lobster.md) | `openclaw` | `lobster.aid.pub` | OpenClaw AI 助手(无签名) |
146
+ | [signed-openclaw-lobster.md](examples/signed-openclaw-lobster.md) | `openclaw` | `lobster.aid.pub` | OpenClaw AI 助手(带签名) |
147
+ | [codeagent-claudecode.md](examples/codeagent-claudecode.md) | `codeagent` | `claudecode.aid.pub` | Claude Code 编程助手 |
148
+
149
+ ## Markdown 部分建议内容
150
+
151
+ YAML 只保留核心元数据,详细信息放在 Markdown 部分:
152
+
153
+ - **Skills** - 技能/命令列表及说明
154
+ - **功能说明** - 详细的功能描述
155
+ - **使用示例** - 具体的使用方法
156
+ - **配置说明** - 运行时配置(如需要)
157
+ - **限制/注意事项** - 使用限制
158
+
159
+ ## 解析方式
160
+
161
+ 解析时需先检测并跳过尾部签名块:
162
+
163
+ ```go
164
+ // 1. 检测尾部签名块
165
+ if idx := strings.LastIndex(content, "<!-- AUN-SIGNATURE"); idx >= 0 {
166
+ content = content[:idx] // 跳过尾部签名块,取 payload
167
+ }
168
+ // 2. 按原规则解析 frontmatter
169
+ parts := strings.SplitN(content, "---", 3)
170
+ // parts[0] = "" (空)
171
+ // parts[1] = YAML 内容
172
+ // parts[2] = Markdown 内容
173
+ ```
@@ -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>`)
@@ -0,0 +1,43 @@
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
+ ## 限制
35
+
36
+ - 需要本地 Gateway 运行
37
+ - ACP session 默认隔离 (`acp:<uuid>`)
38
+
39
+ <!-- AUN-SIGNATURE
40
+ cert_fingerprint: sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
41
+ timestamp: 1715300000
42
+ signature: MEUCIQDKx2XG5Yq3bN7vRz8mT1pLwJfHk9aS8CXx5PWkvAl8eQIgF2vN7vRz8mT1pLwJfHk9aS8CXx5PWkvAl8eT1o=
43
+ -->