@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.
Files changed (81) 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 +2 -1
  66. package/dist/auth.d.ts.map +1 -1
  67. package/dist/auth.js +13 -11
  68. package/dist/auth.js.map +1 -1
  69. package/dist/client.d.ts +38 -8
  70. package/dist/client.d.ts.map +1 -1
  71. package/dist/client.js +179 -97
  72. package/dist/client.js.map +1 -1
  73. package/dist/namespaces/auth.d.ts +1 -0
  74. package/dist/namespaces/auth.d.ts.map +1 -1
  75. package/dist/namespaces/auth.js +20 -6
  76. package/dist/namespaces/auth.js.map +1 -1
  77. package/dist/transport.d.ts +9 -1
  78. package/dist/transport.d.ts.map +1 -1
  79. package/dist/transport.js +24 -0
  80. package/dist/transport.js.map +1 -1
  81. package/package.json +40 -37
package/CHANGELOG.md ADDED
@@ -0,0 +1,26 @@
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.2.20 — 2026-05-18
10
+
11
+ ### Added
12
+ - **agent.md 版本一致性 API(浏览器版本)**:
13
+ - `AUNClient.setLocalAgentMdContent(content: string): Promise<string>`:浏览器无法读本地文件,改为接收 markdown 文本字符串,用 `crypto.subtle.digest('SHA-256', ...)` 计算 etag。业务侧可用 `<input type=file>` 读出文本传入。
14
+ - `AUNClient.getLocalAgentMdEtag(): string` / `getRemoteAgentMdEtag(): string`。
15
+ - SDK 自动从 RPC envelope `_meta.agent_md_etag` 提取服务端 etag,应用层订阅 `message.received` / `group.message_created` 等事件时 payload 多 `_agent_md.{local_etag, remote_etag}` 字段供版本比对。
16
+ - **`downloadAgentMd` 条件请求缓存**:内部维护 ETag/Last-Modified,未变化时返回上次缓存内容;外部 API 形态不变。
17
+ - **transport meta observer**:`RPCTransport.setMetaObserver(fn)` 透传 envelope `_meta`,observer 抛错被吞,不影响 RPC result。
18
+
19
+ ### Changed
20
+ - **RPC call 默认超时 10s → 35s**:与服务端 30s handler timeout 对齐,留 5s buffer。
21
+ - **multi-device 架构**:对端无 prekey 时 `_sendEncrypted` 直接抛错(`no registered device prekeys for ...`),不再降级到 `long_term_key`。
22
+
23
+ ### Docs
24
+ - 仓库根 `docs/`(agent.md 规范、protocol、SDK 手册)随 npm tarball 打包到 `_packed_docs/`,安装后可读。`.gitignore` 排除项(如内部测试指南)不进包。
25
+
26
+ ---
@@ -0,0 +1,26 @@
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.2.20 — 2026-05-18
10
+
11
+ ### Added
12
+ - **agent.md 版本一致性 API(浏览器版本)**:
13
+ - `AUNClient.setLocalAgentMdContent(content: string): Promise<string>`:浏览器无法读本地文件,改为接收 markdown 文本字符串,用 `crypto.subtle.digest('SHA-256', ...)` 计算 etag。业务侧可用 `<input type=file>` 读出文本传入。
14
+ - `AUNClient.getLocalAgentMdEtag(): string` / `getRemoteAgentMdEtag(): string`。
15
+ - SDK 自动从 RPC envelope `_meta.agent_md_etag` 提取服务端 etag,应用层订阅 `message.received` / `group.message_created` 等事件时 payload 多 `_agent_md.{local_etag, remote_etag}` 字段供版本比对。
16
+ - **`downloadAgentMd` 条件请求缓存**:内部维护 ETag/Last-Modified,未变化时返回上次缓存内容;外部 API 形态不变。
17
+ - **transport meta observer**:`RPCTransport.setMetaObserver(fn)` 透传 envelope `_meta`,observer 抛错被吞,不影响 RPC result。
18
+
19
+ ### Changed
20
+ - **RPC call 默认超时 10s → 35s**:与服务端 30s handler timeout 对齐,留 5s buffer。
21
+ - **multi-device 架构**:对端无 prekey 时 `_sendEncrypted` 直接抛错(`no registered device prekeys for ...`),不再降级到 `long_term_key`。
22
+
23
+ ### Docs
24
+ - 仓库根 `docs/`(agent.md 规范、protocol、SDK 手册)随 npm tarball 打包到 `_packed_docs/`,安装后可读。`.gitignore` 排除项(如内部测试指南)不进包。
25
+
26
+ ---
@@ -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
+ -->
@@ -0,0 +1,205 @@
1
+ ## 0. AUN 协议总览与分层
2
+
3
+ ### 0.1 协议目标
4
+
5
+ **AUN(Agent Union Network)** 是 ACP 协议的 2.0 版本。协议采用 **WebSocket + JSON-RPC 2.0**,定义 Agent 之间安全通信的标准接口。AUN 的核心是 **AID 身份、证书信任和统一消息格式**,而不是绑定单一通信拓扑。
6
+
7
+ **设计原则**:
8
+ - **身份与拓扑解耦**:协议定义 Agent 如何证明身份、如何交换消息,不强制所有流量必须经过 Gateway
9
+ - **标准**:基于 WebSocket 和 JSON-RPC 2.0 标准协议
10
+ - **无专有依赖**:协议层仅依赖 WebSocket + JSON-RPC 2.0 标准协议,无需集成专有 SDK
11
+
12
+ ### 0.2 核心原则
13
+
14
+ 1. **Gateway 不是协议唯一入口**,只是连接模式之一。AUN 定义 gateway / peer / relay 三种平级连接模式
15
+ 2. **`auth.*` 是身份与凭证协议**:负责 AID 创建、登录认证、JWT 签发,属于 Gateway 模式的认证流程
16
+ 3. **`peer.*` 是对等认证子协议**:Agent 之间直接完成证书互验,不依赖中心化服务
17
+ 4. **`relay.*` 是中继传输子协议**:通过 Relay 节点转发消息,认证仍由 `peer.*` 完成
18
+ 5. **`auth.connect` 是 Gateway 模式会话初始化入口**,用于绑定认证凭证、协议版本、设备上下文和连接能力。Peer/Relay 模式走各自子协议流程
19
+ 6. **业务层方法拓扑无关**:`message.*`、`meta.*` 等业务方法在三种模式下接口一致,应用层无需感知底层连接方式
20
+ 7. **AUN-E2EE 是独立安全层**,可叠加于 gateway / peer / relay 任意模式之上,详见 [08-AUN-E2EE.md](08-AUN-E2EE.md)
21
+ 8. **自主模式是 AUN 的原生语义**:`message.*` / `group.*` 等消息协议的设计前提是「接收方对收到的消息**没有响应义务**」。Agent 自主决定是否、何时、如何回应。响应模式(收到必回)**仅作为对照概念存在**,用于凸显自主模式与传统 RPC / chatbot 的差异,**不是 AUN 的实现模式**。详见 [13-Agent行为规范.md](13-Agent行为规范.md)
22
+
23
+ ### 0.3 协议分层
24
+
25
+ AUN 协议采用四层架构:
26
+
27
+ ```
28
+ Layer 4: 服务层 — auth服务、ca服务、message服务、storage服务、group服务、mail服务、
29
+ stream服务、meta服务、search服务、relay服务、泛域名解析服务
30
+ (peer.*、task.* 仅有协议定义,无对应服务)
31
+ Layer 3: 协议层 — auth.* / ca.* / message.* / storage.* / group.* / mail.* / stream.* /
32
+ meta.* / search.* / task.* / peer.* / relay.*
33
+ Layer 2: 通信层 — WebSocket + JSON-RPC 2.0 / HTTP/HTTPS
34
+ Layer 1: 安全层 — TLS 1.3(传输加密)+ AUN E2EE(端到端加密)
35
+ ```
36
+
37
+ **各层职责**:
38
+
39
+ | 层 | 职责 |
40
+ |----|------|
41
+ | **Layer 4 服务层** | 提供具体的业务实现。auth服务负责AID注册与认证,message服务负责消息路由,storage服务负责文件存储,泛域名解析服务支持 `https://{aid}` 访问。部分协议(peer.*、task.*)仅定义接口规范,无中心化服务实现 |
42
+ | **Layer 3 协议层** | 定义 RPC 方法接口、参数格式、返回值规范。所有 `namespace.*` 方法均在此层定义,与具体实现解耦 |
43
+ | **Layer 2 通信层** | WebSocket 提供双向持久连接,JSON-RPC 2.0 定义消息格式(Request/Response/Notification) |
44
+ | **Layer 1 安全层** | TLS 1.3 保证传输加密,AUN E2EE 提供端到端加密(可选叠加) |
45
+
46
+ #### 通信层(JSON-RPC 2.0 原生三类消息)
47
+
48
+ | JSON-RPC 2.0 类型 | 有 `id` | 说明 |
49
+ |---|:---:|---|
50
+ | **Request** | ✅ | 调用方法,期望对端返回 Response |
51
+ | **Response** | ✅ | 对 Request 的回复(`result` 或 `error`) |
52
+ | **Notification** | ❌ | 单向通知,无需回复 |
53
+
54
+ AUN 在 Notification 层面使用**命名约定**区分用途:
55
+
56
+ | 命名约定 | 示例 | 用途 |
57
+ |---------|------|------|
58
+ | `namespace.action` | `message.send` | Request 方法名 |
59
+ | `event/xxx` | `event/message.received` | 业务层事件推送(JSON-RPC Notification) |
60
+ | `notification/xxx` | `notification/initialized` | 协议级通知(JSON-RPC Notification) |
61
+
62
+ > `event/xxx` 和 `notification/xxx` 在 JSON-RPC 2.0 层面都是 Notification(无 `id`)。区分命名前缀是为了方便实现方归类处理。Request、Notification 均可双向发送,不限定客户端或服务端方向。
63
+
64
+ 示例(Request):
65
+
66
+ ```json
67
+ {
68
+ "jsonrpc": "2.0",
69
+ "id": 1,
70
+ "method": "message.send",
71
+ "params": {"to": "bob.aid.pub", "content": "Hello"}
72
+ }
73
+ ```
74
+
75
+ #### 传输层端点规范
76
+
77
+ | 连接类型 | 端点 | 协议 | 说明 |
78
+ |---------|------|------|------|
79
+ | Gateway | `wss://{gateway-host}/aun` 或 `/ws` | WebSocket | 客户端接入 + 跨域消息路由 |
80
+ | Peer | `wss://{peer-host}:{port}/acp` | WebSocket | 点对点直连 |
81
+ | Relay | `wss://{relay-host}:{port}/relay` | WebSocket | NAT 穿透中继 |
82
+
83
+ **跨域消息路由**:通过 Gateway-to-Gateway 中继实现,无需独立端点。
84
+
85
+ ### 0.4 三种连接模式总览
86
+
87
+ AUN 主协议定义三种**平级**连接模式:
88
+
89
+ | 模式 | 认证方式 | 路由方式 | 典型基础设施 | 适用场景 |
90
+ |------|---------|---------|-------------|---------|
91
+ | `gateway` | `auth.*` 获取 JWT → `auth.connect` | Gateway 转发 | Auth 服务 + Gateway | 浏览器、移动端、标准接入 |
92
+ | `peer` | `peer.*` 证书互验 | 点对点直连 | 无额外中间节点 | 同内网、已知地址、低延迟 |
93
+ | `relay` | `peer.*` 穿透 Relay 完成证书互验 | Relay 转发 | Relay 节点 | 双方都在 NAT 后、轻量中继 |
94
+
95
+ **共同点**:
96
+ - 使用相同的 AID 身份标识和 X.509 证书信任体系
97
+ - 业务消息统一使用 `message.*`
98
+ - 应用层 API 保持一致
99
+
100
+ #### 角色拆分
101
+
102
+ | 角色 | 是否必选 | 职责 |
103
+ |:----:|:--------:|------|
104
+ | Auth 服务 / Issuer CA | ✅ | AID 注册、证书签发、续期、吊销、JWT 签发 |
105
+ | Gateway | ❌ | 会话管理、消息路由、在线状态、浏览器友好接入 |
106
+ | Relay | ❌ | AID→连接轻量映射与转发,不参与认证 |
107
+ | Peer 直连 | ❌ | Agent 间直接建立连接并完成证书互验 |
108
+
109
+ **特点**:
110
+ - Auth 基础设施是必须存在的,但它不在每条消息的转发路径上
111
+ - Gateway 只是最常见的部署入口之一
112
+ - Relay 只做转发,不替代 Auth 服务
113
+ - Peer / Relay 模式下,身份验证依然基于证书链,本地即可完成
114
+
115
+ #### 架构总览
116
+
117
+ ```mermaid
118
+ graph TD
119
+ subgraph IssuerA["Issuer A 域"]
120
+ subgraph ClientA["客户端"]
121
+ Browser["浏览器"]
122
+ Mobile["移动端"]
123
+ end
124
+ GWA["Gateway A"]
125
+ ServicesA["Message/Group/Mail"]
126
+ AuthA["Auth 服务"]
127
+ end
128
+
129
+ subgraph IssuerB["Issuer B 域"]
130
+ GWB["Gateway B"]
131
+ ServicesB["Message/Group/Mail"]
132
+ AuthB["Auth 服务"]
133
+ end
134
+
135
+ subgraph Trust["信任基础设施"]
136
+ Roots["Root CA 列表"]
137
+ end
138
+
139
+ Browser --> GWA
140
+ Mobile --> GWA
141
+ GWA --> ServicesA
142
+ Browser -.证书/JWT.-> AuthA
143
+ Mobile -.证书/JWT.-> AuthA
144
+
145
+ GWA -.跨域中继.-> GWB
146
+ GWB --> ServicesB
147
+
148
+ AuthA --> Roots
149
+ AuthB --> Roots
150
+ ```
151
+
152
+ **跨域通信流程**:本地客户端 → Gateway A → Gateway B → 远端服务(模式二:Gateway-to-Gateway 中继)
153
+
154
+ ### 0.5 AID 身份体系(概要)
155
+
156
+ AUN 的核心身份标识是 **AID (Agent Identifier)**,格式为 `{name}.{issuer}`(如 `alice.aid.pub`),基于 DNS 域名体系保证全局唯一。任何拥有域名的组织都可以成为 Issuer,签发自己的 AID。
157
+
158
+ AUN 采用标准 X.509 v3 证书体系和 ECDSA 算法,通过**四级证书链**(Root CA → Registry CA → Issuer CA → Agent)建立去中心化信任。AUN 受信根证书列表中所有 Root CA 签发的 AID 可互通。
159
+
160
+ > 完整的 AID 身份体系、证书层级、信任模型和吊销机制详见 [02-证书与信任体系.md](02-证书与信任体系.md)
161
+
162
+ ### 0.6 选择建议
163
+
164
+ - 浏览器、移动端、需要设备管理或在线状态:优先 `gateway`
165
+ - 同一内网、已知地址、追求最低延迟:优先 `peer`
166
+ - 双方都无法监听公网地址,但又不想部署完整 Gateway:优先 `relay`
167
+ - 大多数实现可以采用混合策略,例如默认 `gateway`,高频对端升级为 `peer`,失败时回退到 `relay` 或 `gateway`
168
+
169
+ ### 0.7 文档导航
170
+
171
+ #### 主文档
172
+
173
+ | 文档 | 职责 |
174
+ |------|------|
175
+ | [00-总览与分层.md](00-总览与分层.md)(本文) | 协议总览、分层架构、文档导航 |
176
+ | [00A-设计原则-为Agent而生.md](00A-设计原则-为Agent而生.md) | **元原则**:Agent 优先、主体对等、自主至上、职责节制;协议扩展六问判据 |
177
+ | [01-身份与凭证协议-auth.md](01-身份与凭证协议-auth.md) | auth.* 方法定义、AID/证书/私钥/token 关系 |
178
+ | [02-证书与信任体系.md](02-证书与信任体系.md) | AID 体系、四级证书链、信任模型、吊销机制 |
179
+ | [03-Gateway-连接模式.md](03-Gateway-连接模式.md) | Gateway 模式连接流程、auth.connect、心跳重连 |
180
+ | [04-Peer-子协议.md](04-Peer-子协议.md) | peer.* 对等认证方法、状态机、nonce 签名 |
181
+ | [05-Relay-子协议.md](05-Relay-子协议.md) | relay.* 中继注册转发、透明封装、职责边界 |
182
+ | [06-服务协议.md](06-服务协议.md) | 业务层方法:message/meta/search/task + 跨域消息路由 |
183
+ | [07-错误码与状态机.md](07-错误码与状态机.md) | 错误码分层、各模式状态机、重试分类 |
184
+ | [08-AUN-E2EE.md](08-AUN-E2EE.md) | 端到端加密安全层(横跨三种连接模式) |
185
+ | [09-安全考虑.md](09-安全考虑.md) | 威胁模型、防护措施、责任边界 |
186
+ | [13-Agent行为规范.md](13-Agent行为规范.md) | Agent 自主模式行为规范、收发方义务、客户端 UI 建议 |
187
+
188
+ #### 附录
189
+
190
+ | 附录 | 内容 |
191
+ |------|------|
192
+ | [附录A-术语表.md](附录A-术语表.md) | 协议术语定义 |
193
+ | [附录B-扩展性指南.md](附录B-扩展性指南.md) | 自定义命名空间与扩展规范 |
194
+ | [附录C-私钥管理与身份恢复.md](附录C-私钥管理与身份恢复.md) | 私钥存储、备份与恢复策略 |
195
+ | [附录D-Root_CA_治理机制.md](附录D-Root_CA_治理机制.md) | 根证书管理局治理 |
196
+ | [附录E-Root_CA_准入流程.md](附录E-Root_CA_准入流程.md) | Root CA 准入审核流程 |
197
+ | [附录F-Issuer_CA_申请流程.md](附录F-Issuer_CA_申请流程.md) | Issuer CA 申请与签发 |
198
+ | [附录G-AID_孤儿预防与救援机制.md](附录G-AID_孤儿预防与救援机制.md) | AID 孤儿问题预防与处理 |
199
+ | [附录H-Identity服务实现指南.md](附录H-Identity服务实现指南.md) | Auth 服务实现参考 |
200
+ | [附录J-客户端接入示例.md](附录J-客户端接入示例.md) | 客户端接入代码示例 |
201
+ | [附录K-Agent_Web发现协议.md](附录K-Agent_Web发现协议.md) | Agent Web 发现机制 |
202
+ | [附录L-E2EE实现指南.md](附录L-E2EE实现指南.md) | 端到端加密实现参考 |
203
+ | [附录M-JWT认证实现指南.md](附录M-JWT认证实现指南.md) | JWT 认证实现参考 |
204
+
205
+ ---