@agentunion/fastaun-browser 0.5.18 → 0.5.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +44 -2
- package/_packed_docs/CHANGELOG.md +44 -2
- package/_packed_docs/INDEX.md +136 -14
- package/_packed_docs/KITE_DOCS_GUIDE.md +42 -16
- package/_packed_docs/agent.md/SCHEMA.md +245 -205
- package/_packed_docs/aun/345/210/206/345/270/203/345/274/217/346/265/213/350/257/225/350/277/220/350/241/214/346/214/207/345/215/227.md +42 -15
- package/_packed_docs/aun/346/265/213/350/257/225/350/277/220/350/241/214/346/214/207/345/215/227.md +4 -4
- 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 +45 -134
- 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 +5 -20
- package/_packed_docs/protocol/10-Group-/345/255/220/345/215/217/350/256/256.md +28 -9
- package/_packed_docs/protocol/11-Storage-/345/255/220/345/215/217/350/256/256.md +22 -27
- package/_packed_docs/protocol/agent.md/SCHEMA.md +4 -0
- package/_packed_docs/sdk/04-/350/277/236/346/216/245/344/270/216/350/256/244/350/257/201.md +5 -2
- package/_packed_docs/sdk/06-API/346/211/213/345/206/214.md +250 -283
- package/_packed_docs/sdk/09-group-rpc-manual.md +46 -14
- package/_packed_docs/sdk/09-message-rpc-manual.md +40 -2
- package/_packed_docs/sdk/09-storage-rpc-manual.md +74 -64
- package/_packed_docs/sdk/AUN_DOCS_GUIDE.md +25 -5
- package/_packed_docs/sdk/INDEX.md +76 -17
- package/dist/agent-md-schema.d.ts +3 -0
- package/dist/agent-md-schema.d.ts.map +1 -1
- package/dist/agent-md-schema.js +45 -11
- package/dist/agent-md-schema.js.map +1 -1
- package/dist/agent-md.d.ts +45 -2
- package/dist/agent-md.d.ts.map +1 -1
- package/dist/agent-md.js +519 -30
- package/dist/agent-md.js.map +1 -1
- package/dist/aid-store.d.ts +12 -46
- package/dist/aid-store.d.ts.map +1 -1
- package/dist/aid-store.js +113 -246
- package/dist/aid-store.js.map +1 -1
- package/dist/aid.d.ts.map +1 -1
- package/dist/aid.js +20 -7
- package/dist/aid.js.map +1 -1
- package/dist/auth.d.ts +4 -1
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +343 -23
- package/dist/auth.js.map +1 -1
- package/dist/bundle.js +37330 -32005
- package/dist/cert-utils.d.ts +1 -1
- package/dist/cert-utils.d.ts.map +1 -1
- package/dist/cert-utils.js +19 -7
- package/dist/cert-utils.js.map +1 -1
- package/dist/client/delivery.d.ts +15 -1
- package/dist/client/delivery.d.ts.map +1 -1
- package/dist/client/delivery.js +147 -51
- package/dist/client/delivery.js.map +1 -1
- package/dist/client/rpc-pipeline.d.ts.map +1 -1
- package/dist/client/rpc-pipeline.js +19 -5
- package/dist/client/rpc-pipeline.js.map +1 -1
- package/dist/client/v2-e2ee.d.ts +1 -0
- package/dist/client/v2-e2ee.d.ts.map +1 -1
- package/dist/client/v2-e2ee.js +104 -30
- package/dist/client/v2-e2ee.js.map +1 -1
- package/dist/client.d.ts +100 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +1204 -23
- package/dist/client.js.map +1 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +3 -2
- package/dist/errors.js.map +1 -1
- package/dist/events.d.ts +4 -0
- package/dist/events.d.ts.map +1 -1
- package/dist/events.js +41 -1
- package/dist/events.js.map +1 -1
- package/dist/facades.d.ts +82 -2
- package/dist/facades.d.ts.map +1 -1
- package/dist/facades.js +98 -4
- package/dist/facades.js.map +1 -1
- package/dist/index.d.ts +7 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/keystore/index.d.ts +17 -0
- package/dist/keystore/index.d.ts.map +1 -1
- package/dist/keystore/indexeddb-shared.d.ts +10 -1
- package/dist/keystore/indexeddb-shared.d.ts.map +1 -1
- package/dist/keystore/indexeddb-shared.js +111 -0
- package/dist/keystore/indexeddb-shared.js.map +1 -1
- package/dist/keystore/indexeddb-token-store.d.ts +7 -1
- package/dist/keystore/indexeddb-token-store.d.ts.map +1 -1
- package/dist/keystore/indexeddb-token-store.js +30 -1
- package/dist/keystore/indexeddb-token-store.js.map +1 -1
- package/dist/org-protocol.d.ts +98 -0
- package/dist/org-protocol.d.ts.map +1 -0
- package/dist/org-protocol.js +1742 -0
- package/dist/org-protocol.js.map +1 -0
- package/dist/ownership-proof.d.ts +93 -5
- package/dist/ownership-proof.d.ts.map +1 -1
- package/dist/ownership-proof.js +239 -53
- package/dist/ownership-proof.js.map +1 -1
- package/dist/ownership-v21.d.ts +177 -0
- package/dist/ownership-v21.d.ts.map +1 -0
- package/dist/ownership-v21.js +609 -0
- package/dist/ownership-v21.js.map +1 -0
- package/dist/ownership-workflow.d.ts +146 -0
- package/dist/ownership-workflow.d.ts.map +1 -0
- package/dist/ownership-workflow.js +1066 -0
- package/dist/ownership-workflow.js.map +1 -0
- package/dist/seq-tracker.d.ts +1 -0
- package/dist/seq-tracker.d.ts.map +1 -1
- package/dist/seq-tracker.js +10 -2
- package/dist/seq-tracker.js.map +1 -1
- package/dist/tools/cross-sdk-agent.d.ts +82 -0
- package/dist/tools/cross-sdk-agent.d.ts.map +1 -1
- package/dist/tools/cross-sdk-agent.js +332 -7
- package/dist/tools/cross-sdk-agent.js.map +1 -1
- package/dist/transport.d.ts +6 -0
- package/dist/transport.d.ts.map +1 -1
- package/dist/transport.js +88 -2
- package/dist/transport.js.map +1 -1
- package/dist/v2/e2ee/decrypt.d.ts +1 -0
- package/dist/v2/e2ee/decrypt.d.ts.map +1 -1
- package/dist/v2/e2ee/decrypt.js +9 -1
- package/dist/v2/e2ee/decrypt.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
|
@@ -1,170 +1,152 @@
|
|
|
1
|
-
# Agent.md 规格定义
|
|
2
|
-
|
|
3
|
-
版本: 1.0.0
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
agent.md
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
-
|
|
60
|
-
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
- `timestamp` 最多允许比服务端时间快 300 秒,不设置过去时间窗口,并且必须落在证书有效期内
|
|
87
|
-
- `aid`、Host、Bearer Token 和签名证书 AID 必须一致
|
|
88
|
-
- agent.md 上传签名算法固定为 ECDSA P-256 / SHA-256;其他曲线或密钥类型必须拒绝
|
|
89
|
-
- 签名证书必须由当前 Issuer CA 返回,状态为 `active_signing` 且处于有效期内;证书 Subject CN 必须等于 AID
|
|
90
|
-
- `PUT /agent.md` 成功验收后,文档不得仅因签名证书随后自然过期而失效;历史验签仍须确认 `timestamp` 落在该证书的有效期内
|
|
91
|
-
- 服务端在数据库和缓存写入前完成全部校验;任一校验失败均拒绝接收
|
|
92
|
-
|
|
93
|
-
## YAML Schema (核心字段)
|
|
94
|
-
|
|
95
|
-
```yaml
|
|
96
|
-
# ===== 身份标识 (必填) =====
|
|
97
|
-
aid:
|
|
98
|
-
type: string
|
|
99
|
-
required: true
|
|
100
|
-
pattern: "^[A-Za-z0-9_][A-Za-z0-9_-]*(?:\\.[A-Za-z0-9_][A-Za-z0-9_-]*)+$"
|
|
101
|
-
description: "至少两个标签的 DNS 型 AID;Issuer 后缀不固定,比较时不区分大小写"
|
|
102
|
-
example: "lobster.agentid.pub"
|
|
103
|
-
|
|
104
|
-
# ===== 基本信息 =====
|
|
105
|
-
name:
|
|
106
|
-
type: string
|
|
107
|
-
required: true
|
|
108
|
-
description: "Agent 显示名称"
|
|
109
|
-
example: "Code Reviewer"
|
|
110
|
-
|
|
1
|
+
# Agent.md 规格定义
|
|
2
|
+
|
|
3
|
+
版本: 1.0.0
|
|
4
|
+
Ownership 版本: 2.0.0
|
|
5
|
+
|
|
6
|
+
本文保留 legacy Ownership 2.0 的文件格式与字段,不是当前 2.1 Schema。Ownership 2.0 的 ownership 声明由整个文件尾部签名保护;本文的第三方存储写删授权、sub 单方撤销及无关系版本示例仅适用于该历史版本。当前 2.1 的完整文件、角色、关系版本、owner 锁与六态结果以 [Ownership 协议定义 2.1](../protocol/Ownership协议定义2.1.md) 为准。
|
|
7
|
+
|
|
8
|
+
当前 `group/org` 是独立生命周期分支:owner 必填,无 ownership 合法,通用 ownership/proof/release 禁止;仅当前 owner 以本人证书和私钥尾签并代上传,尾部必含 `signer_aid=owner`。V2 授权、实体证书代际和恢复以 [协议 §2.5](../protocol/Ownership协议定义2.1.md#25-grouporg-名片的-owner-代签与上传) 为准。下文 legacy 的 owner/ownership 成对及目标本人签名规则不得套用于当前 Group/Org。
|
|
9
|
+
|
|
10
|
+
## 限制
|
|
11
|
+
|
|
12
|
+
- **文件大小**: 被签名 payload 最大 4KB(尾部签名块不计入)
|
|
13
|
+
- **签名块大小**: 尾部签名载体最大 2KB(2048 字节,按 UTF-8 原始字节计算)
|
|
14
|
+
- **请求读取上限**: `PUT /agent.md` 最多读取 `payload_max + signature_max` 字节;超出即返回 `413 agent_md_too_large`
|
|
15
|
+
- **编码**: UTF-8
|
|
16
|
+
|
|
17
|
+
Ownership 字段属于 frontmatter,计入 4KB payload;它们由整个文件的尾部签名覆盖,不另设 ownership 签名块。
|
|
18
|
+
|
|
19
|
+
## 文件格式
|
|
20
|
+
|
|
21
|
+
`agent.md` 和 `owner.md` 均采用 **YAML frontmatter + Markdown 内容 + 尾部签名块** 的格式:
|
|
22
|
+
|
|
23
|
+
```markdown
|
|
24
|
+
---
|
|
25
|
+
aid: "agent-name.agentid.pub"
|
|
26
|
+
name: "Agent Name"
|
|
27
|
+
type: "agent"
|
|
28
|
+
version: "1.0.0"
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
# Markdown 正文
|
|
32
|
+
说明内容...
|
|
33
|
+
|
|
34
|
+
<!-- AUN-SIGNATURE-AGENTMD-V2
|
|
35
|
+
cert_fingerprint: sha256:abc123...
|
|
36
|
+
public_key_fingerprint: sha256:def456...
|
|
37
|
+
timestamp: 1715300000
|
|
38
|
+
signature: MEUCIQDx...
|
|
39
|
+
-->
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
`owner.md` 使用相同的签名块字段格式,但签名块标识为 `<!-- AUN-SIGNATURE-OWNERSHIP-V2`;其 frontmatter 最少包含 `owner_aid`、`sub_aid` 和 `ownership.statement`,不要求使用 `agent.md` 的 `aid`、`name`、`type` 等主体字段。`agent.md` 兼容旧的 `<!-- AUN-SIGNATURE` 标识,也可使用 `<!-- AUN-SIGNATURE-AGENTMD-V2`。
|
|
43
|
+
|
|
44
|
+
## 尾部文件签名
|
|
45
|
+
|
|
46
|
+
### 签名块格式
|
|
47
|
+
|
|
48
|
+
```text
|
|
49
|
+
<!-- AUN-SIGNATURE[-TAG]
|
|
50
|
+
cert_fingerprint: sha256:<64位hex>
|
|
51
|
+
public_key_fingerprint: sha256:<64位hex>
|
|
52
|
+
timestamp: <unix_seconds>
|
|
53
|
+
signature: <base64_der>
|
|
54
|
+
-->
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
- `cert_fingerprint` 必填,表示签署者 X.509 证书 DER 的 SHA-256 指纹。
|
|
58
|
+
- `public_key_fingerprint` 可选,表示 SubjectPublicKeyInfo DER 的 SHA-256 指纹。
|
|
59
|
+
- `timestamp` 必填,为签名时的 Unix 秒时间戳。
|
|
60
|
+
- `signature` 必填,为 ECDSA P-256 / SHA-256 DER 签名的严格 Base64 表示。
|
|
61
|
+
|
|
62
|
+
签名输入是签名块开始标记 `<!-- AUN-SIGNATURE` 之前的全部原始 UTF-8 字节;换行和空白不得规范化。签名块必须是文件最后一个可见块,后面只允许空白。
|
|
63
|
+
|
|
64
|
+
签名块标识使用 `<!-- AUN-SIGNATURE` 前缀,可选追加大写 TAG(例如 `<!-- AUN-SIGNATURE-AGENTMD-V2` 或 `<!-- AUN-SIGNATURE-OWNERSHIP-V2`)。`agent.md` 的尾部签名证书必须属于 frontmatter `aid` 对应的 sub_aid;`owner.md` 的尾部签名证书必须属于 frontmatter `owner_aid`。验证方按证书指纹取得公钥,并确认签署者 AID、证书有效期和签名算法均符合要求。
|
|
65
|
+
|
|
66
|
+
签名块只能包含上述四个字段;除 `public_key_fingerprint` 外均为必填;重复字段和未知字段必须拒绝。`timestamp` 最多允许比服务端时间快 300 秒,并且必须落在签署证书有效期内。服务端须在数据库或缓存写入前完成全部校验。
|
|
67
|
+
|
|
68
|
+
## YAML Schema(`agent.md` 核心字段)
|
|
69
|
+
|
|
70
|
+
```yaml
|
|
71
|
+
# ===== 身份标识(必填) =====
|
|
72
|
+
aid:
|
|
73
|
+
type: string
|
|
74
|
+
required: true
|
|
75
|
+
pattern: "^[A-Za-z0-9_][A-Za-z0-9_-]*(?:\\.[A-Za-z0-9_][A-Za-z0-9_-]*)+$"
|
|
76
|
+
description: "主体的 DNS 型 AID"
|
|
77
|
+
example: "subject.agentid.pub"
|
|
78
|
+
|
|
79
|
+
# ===== 基本信息 =====
|
|
80
|
+
name:
|
|
81
|
+
type: string
|
|
82
|
+
required: true
|
|
83
|
+
description: "主体显示名称"
|
|
84
|
+
example: "Code Reviewer"
|
|
85
|
+
|
|
111
86
|
type:
|
|
112
87
|
type: string
|
|
113
88
|
required: true
|
|
114
|
-
predefined_values:
|
|
115
|
-
- human
|
|
116
|
-
- agent
|
|
117
|
-
- group
|
|
118
|
-
- service
|
|
119
|
-
- device
|
|
120
|
-
- host
|
|
121
|
-
- org
|
|
122
|
-
- custom
|
|
89
|
+
predefined_values:
|
|
90
|
+
- human
|
|
91
|
+
- agent
|
|
92
|
+
- group
|
|
93
|
+
- service
|
|
94
|
+
- device
|
|
95
|
+
- host
|
|
96
|
+
- org
|
|
97
|
+
- custom
|
|
123
98
|
allow_extensions: true
|
|
124
|
-
description: "
|
|
99
|
+
description: "主体类型;允许使用扩展值"
|
|
125
100
|
|
|
126
101
|
exttype:
|
|
127
102
|
type: string
|
|
128
103
|
required: false
|
|
129
|
-
description: "
|
|
130
|
-
|
|
131
|
-
version:
|
|
132
|
-
type: string
|
|
133
|
-
required: true
|
|
134
|
-
pattern: "^\\d+\\.\\d+\\.\\d+$"
|
|
135
|
-
example: "1.0.0"
|
|
136
|
-
|
|
137
|
-
# ===== 描述信息 =====
|
|
138
|
-
description:
|
|
139
|
-
type: string
|
|
140
|
-
required: false
|
|
141
|
-
max_length: 100
|
|
142
|
-
description: "一句话简介,用于列表展示"
|
|
143
|
-
|
|
144
|
-
# ===== 头像 =====
|
|
145
|
-
avatar:
|
|
146
|
-
type: string
|
|
147
|
-
required: false
|
|
148
|
-
max_length: 256
|
|
149
|
-
description: "头像地址或标识"
|
|
150
|
-
|
|
151
|
-
# ===== 标签 =====
|
|
152
|
-
tags:
|
|
153
|
-
type: array
|
|
154
|
-
required: false
|
|
155
|
-
items:
|
|
156
|
-
type: string
|
|
157
|
-
description: "用于分类和检索"
|
|
158
|
-
```
|
|
159
|
-
|
|
160
|
-
## 主体 Type / ExtType 说明
|
|
104
|
+
description: "主体类型的扩展形态"
|
|
161
105
|
|
|
162
|
-
|
|
106
|
+
# ===== Ownership 2.0(可选;human 禁止声明) =====
|
|
107
|
+
owner:
|
|
108
|
+
type: string
|
|
109
|
+
required: false
|
|
110
|
+
description: "owner_aid 的完整小写 AID"
|
|
111
|
+
example: "owner.agentid.pub"
|
|
163
112
|
|
|
164
|
-
|
|
113
|
+
ownership:
|
|
114
|
+
type: object
|
|
115
|
+
required: false
|
|
116
|
+
requires: [owner]
|
|
117
|
+
description: "sub_aid 在自己的 agent.md 中发布的 Ownership 2.0 声明"
|
|
118
|
+
|
|
119
|
+
version:
|
|
120
|
+
type: string
|
|
121
|
+
required: true
|
|
122
|
+
pattern: "^\\d+\\.\\d+\\.\\d+$"
|
|
123
|
+
example: "1.0.0"
|
|
124
|
+
|
|
125
|
+
description:
|
|
126
|
+
type: string
|
|
127
|
+
required: false
|
|
128
|
+
max_length: 100
|
|
129
|
+
|
|
130
|
+
avatar:
|
|
131
|
+
type: string
|
|
132
|
+
required: false
|
|
133
|
+
max_length: 256
|
|
134
|
+
|
|
135
|
+
tags:
|
|
136
|
+
type: array
|
|
137
|
+
required: false
|
|
138
|
+
items:
|
|
139
|
+
type: string
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
`human` 类型不得出现 `owner` 或 `ownership`。其它主体类型可以按应用需要声明 owner_aid。AID 在 Ownership 2.0 字段中使用小写规范形式。
|
|
143
|
+
|
|
144
|
+
## 主体 Type / ExtType 说明
|
|
145
|
+
|
|
146
|
+
`type` 和 `exttype` 共同描述主体。`type` 是可扩展字符串,主要决定主体的数据存储结构;`exttype` 表示 `type` 对应的更具体形态,取值域由 `type` 决定。解析方应保留并容忍未知类型。
|
|
165
147
|
|
|
166
148
|
| 预设 Type | 用途 | 示例 |
|
|
167
|
-
|
|
149
|
+
| --- | --- | --- |
|
|
168
150
|
| `human` | 真人用户 | 开发者、管理员、终端用户 |
|
|
169
151
|
| `agent` | 使用大模型的服务程序 | 对话助手、代码 Agent、自动化 Agent |
|
|
170
152
|
| `group` | 群组身份 | 项目团队、协作群组 |
|
|
@@ -174,53 +156,111 @@ tags:
|
|
|
174
156
|
| `org` | 组织 | 公司、部门、协作小组 |
|
|
175
157
|
| `custom` | 自定义主体类型 | 用户声明的主体类型 |
|
|
176
158
|
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
159
|
+
## Ownership 2.0 字段
|
|
160
|
+
|
|
161
|
+
### sub_aid 的 `agent.md`
|
|
162
|
+
|
|
163
|
+
```yaml
|
|
164
|
+
owner: owner.agentid.pub
|
|
165
|
+
ownership:
|
|
166
|
+
statement:
|
|
167
|
+
version: 2
|
|
168
|
+
declaration_id: 550e8400-e29b-41d4-a716-446655440000
|
|
169
|
+
owner_aid: owner.agentid.pub
|
|
170
|
+
sub_aid: subject.agentid.pub
|
|
171
|
+
declared_at: 1791523200
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
字段约束:
|
|
175
|
+
|
|
176
|
+
| 字段 | 要求 |
|
|
177
|
+
| --- | --- |
|
|
178
|
+
| `owner` | 可选;出现时必须等于 `ownership.statement.owner_aid` |
|
|
179
|
+
| `ownership.statement.version` | 固定为整数 `2` |
|
|
180
|
+
| `ownership.statement.declaration_id` | 小写 UUID v4,用于审计标识 |
|
|
181
|
+
| `ownership.statement.owner_aid` | 管理方的完整小写 AID,必须等于 `owner` |
|
|
182
|
+
| `ownership.statement.sub_aid` | 必须等于当前 `agent.md` 的 `aid` |
|
|
183
|
+
| `ownership.statement.declared_at` | 正整数 Unix 秒时间戳 |
|
|
184
|
+
|
|
185
|
+
`owner` 与 `ownership` 可以同时省略;出现其中一个时另一个必须出现。`ownership` 只有 `statement` 及其定义字段,不包含独立签名字段。声明随整个 `agent.md` 文件签名,由 sub_aid 自己生成和上传。
|
|
186
|
+
|
|
187
|
+
### owner_aid 的 `owner.md`
|
|
188
|
+
|
|
189
|
+
owner_aid 为每个 sub_aid 保存一份声明,路径为:
|
|
190
|
+
|
|
191
|
+
```text
|
|
192
|
+
owner_aid:/sub_aids/{sub_aid}/owner.md
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
`owner.md` 的最小 frontmatter 为:
|
|
196
|
+
|
|
197
|
+
```yaml
|
|
198
|
+
---
|
|
199
|
+
owner_aid: owner.agentid.pub
|
|
200
|
+
sub_aid: subject.agentid.pub
|
|
201
|
+
ownership:
|
|
202
|
+
statement:
|
|
203
|
+
version: 2
|
|
204
|
+
declaration_id: 660e8400-e29b-41d4-a716-446655440000
|
|
205
|
+
owner_aid: owner.agentid.pub
|
|
206
|
+
sub_aid: subject.agentid.pub
|
|
207
|
+
declared_at: 1791523260
|
|
208
|
+
---
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
`owner.md` 的 `owner_aid`、`sub_aid` 必须与 statement 相同。文件尾部使用 `AUN-SIGNATURE-OWNERSHIP-V2` 标识和与 `agent.md` 相同的签名字段,签署者必须是 `owner_aid`。`owner.md` 公开可读、可下载,不开放公共写权限;写入和删除由 owner_aid 或应用层明确授权的存储执行者完成。
|
|
212
|
+
|
|
213
|
+
## 关系状态、撤销与共识
|
|
214
|
+
|
|
215
|
+
| 当前文档情况 | 状态 |
|
|
216
|
+
| --- | --- |
|
|
217
|
+
| `agent.md` 与对应 `owner.md` 都存在,字段及文件签名有效且 AID 匹配 | `consensus` |
|
|
218
|
+
| 两份声明都不存在 | `unbound` |
|
|
219
|
+
| 只有一方声明存在 | `single_sided` |
|
|
220
|
+
| 字段、路径、角色或文件签名无效 | `invalid` |
|
|
221
|
+
|
|
222
|
+
sub_aid 撤销时,从自己的 `agent.md` 移除 `owner` 和 `ownership` 后重新签名上传。owner_aid 撤销时,删除自己的 `sub_aids/{sub_aid}/owner.md`。撤销不发送 ownership RPC 或 P2P 消息,不产生申请或拒绝事件。
|
|
223
|
+
|
|
224
|
+
需要 owner 关系的操作必须先读取并验证两份文档。验证成功后,应用层或审计服务应追加保存双方 statement、两份文件签名、文档摘要、调用方和校验时间;之后任一方撤销,不影响已保存的审计快照。
|
|
225
|
+
|
|
226
|
+
## `PUT /agent.md` 接收顺序
|
|
227
|
+
|
|
228
|
+
1. SDK 在联网前校验 UTF-8、payload 大小和 frontmatter Schema;失败时不得签名或发起 HTTP 请求。
|
|
229
|
+
2. SDK 使用 sub_aid 自己的签名私钥追加尾部签名块,再执行完整 Schema 校验和本地文件验签。
|
|
230
|
+
3. Name Service 校验目标 Host、Bearer Token 与 `aid` 一致,执行 Schema、尾部文件签名及 `ownership` 字段一致性验证;owner_aid 不得代 sub_aid 上传。
|
|
231
|
+
4. 全部校验成功后,Name Service 才能写入数据库并失效缓存。
|
|
232
|
+
|
|
233
|
+
接收失败使用稳定的机器可读错误:格式或签名无效返回 `400 invalid_agent_md`,payload 超限返回 `413 agent_md_too_large`,证书服务不可用返回 `503 certificate_verification_unavailable`,数据库不可用返回 `503 database_unavailable`。
|
|
234
|
+
|
|
235
|
+
## 示例文件
|
|
236
|
+
|
|
237
|
+
| 文件 | Type | AID | 说明 |
|
|
238
|
+
| --- | --- | --- | --- |
|
|
239
|
+
| [human-developer.md](examples/human-developer.md) | `human` | `zhangsan.aid.pub` | 全栈开发者 |
|
|
240
|
+
| [openclaw-lobster.md](examples/openclaw-lobster.md) | `agent` | `lobster.aid.pub` | OpenClaw AI 助手 |
|
|
241
|
+
| [signed-openclaw-lobster.md](examples/signed-openclaw-lobster.md) | `agent` | `lobster.aid.pub` | 带尾部签名的 OpenClaw AI 助手 |
|
|
242
|
+
| [codeagent-claudecode.md](examples/codeagent-claudecode.md) | `agent` | `claudecode.aid.pub` | Claude Code 编程助手 |
|
|
243
|
+
| [群组-开发团队.md](examples/群组-开发团队.md) | `group` | `dev-team.aid.pub` | 开发团队协作群组 |
|
|
244
|
+
|
|
245
|
+
无签名示例只用于展示 payload;线上 `PUT /agent.md` 仍要求有效的尾部文件签名。
|
|
246
|
+
|
|
247
|
+
## Markdown 部分建议内容
|
|
248
|
+
|
|
249
|
+
YAML 只保留核心元数据,详细信息放在 Markdown 部分:
|
|
250
|
+
|
|
251
|
+
- **Skills**:技能、命令及说明
|
|
252
|
+
- **功能说明**:主体功能描述
|
|
253
|
+
- **使用示例**:具体使用方法
|
|
254
|
+
- **配置说明**:运行时配置
|
|
255
|
+
- **限制/注意事项**:使用限制
|
|
256
|
+
|
|
257
|
+
## 解析方式
|
|
258
|
+
|
|
259
|
+
解析时先检测并剥离尾部签名块,再按 YAML frontmatter 解析:
|
|
260
|
+
|
|
261
|
+
```text
|
|
262
|
+
1. 定位唯一的 `<!-- AUN-SIGNATURE[-TAG]` 块。
|
|
263
|
+
2. 取签名块之前的原始字节作为 payload 并验签。
|
|
264
|
+
3. 解析 payload 的 YAML frontmatter。
|
|
265
|
+
4. 对 agent.md 按 aid 校验;对 owner.md 按 owner_aid、sub_aid 和路径校验。
|
|
266
|
+
```
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
本文档负责三套本地 Docker 环境:三节点单域、本地真实域名双域 `agentid.pub/agentid.cn`、隔离双域 federation `dist-aid.com/dist-aid.net`。默认 `agentid.pub` 单域、默认四语言 Tester 和默认 cross-SDK 统一见 [AUN 测试运行指南](aun测试运行指南.md)。公网 `agentid.pub/agentid.cn` 复测是本地跨域通过后的独立验证层,不属于本地双域 Docker。
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
本轮跨域验收范围仅为本机 Docker 中的 `agentid.pub` ↔ `agentid.cn`。测试请求必须经本地 `kite-agentid-federation-net` 在两个本地 Kite 容器之间完成;本轮禁止运行公网测试入口、访问线上 `agentid.pub` / `agentid.cn` 服务或把公网结果计入结论。`dist-aid.com` / `dist-aid.net` 章节仅保留为独立环境参考,本轮不得启动或运行该隔离 federation,也不得将其结果计入本轮跨域结论。
|
|
6
6
|
|
|
7
7
|
本指南只认当前 worktree `D:\modelunion\kite`。当前分支已经包含完整的默认单实例、三节点分布式、两套双域环境、服务端源码和四语言 SDK;服务端镜像、Tester、Cross-SDK、`data-dist` 与部署包都必须从这个 worktree 生成和运行。
|
|
8
8
|
|
|
@@ -45,7 +45,7 @@ D:\modelunion\kite\aun-sdk-core\docs\aun公网测试运行指南.md
|
|
|
45
45
|
|
|
46
46
|
## 本地真实域名双域与公网环境边界
|
|
47
47
|
|
|
48
|
-
`agentid.pub` 与 `agentid.cn` 在本机各运行一套“分布式控制模型的单节点形态”,共同组成当前真实域名双域 Docker 跨域环境。两域复用同一无 Mail 服务镜像,但各自拥有独立 Issuer CA、
|
|
48
|
+
`agentid.pub` 与 `agentid.cn` 在本机各运行一套“分布式控制模型的单节点形态”,共同组成当前真实域名双域 Docker 跨域环境。两域复用同一无 Mail 服务镜像,但各自拥有独立 Issuer CA、12 个服务 AID、MySQL、Redis、workspace、Compose project 和宿主端口;只共享 `kite-agentid-federation-net` 上的 Kite 业务节点。默认双域不创建 PostgreSQL、不加载 Mail;服务镜像固定使用 `python:3.11-bookworm`,最终镜像不包含 `uvloop`,Compose 默认 `AUN_GATEWAY_USE_UVLOOP=0`。
|
|
49
49
|
|
|
50
50
|
- `D:\modelunion\kite\docker-deploy\agentid.pub`:引用固定 `data`,project 为 `kite-single`,应用容器为 `kite-app`。
|
|
51
51
|
- `D:\modelunion\kite\docker-deploy\agentid.cn`:引用固定 `data-agentid-cn`,project 为 `kite-agentid-cn-local`,应用容器为 `kite-agentid-cn-local-app`。
|
|
@@ -79,7 +79,7 @@ D:\modelunion\kite\aun-sdk-core\docs\aun公网测试运行指南.md
|
|
|
79
79
|
- 目标 `data-dist` 必须不存在或为空。整套冷克隆至少包含 `mysql`、`postgres`、`CA`、`certs`、`AIDs`、`control`、`aun-node-a`、`aun-node-b`、`storage-shared`、`sdk-tester-aun` 和 `sdk-testers`;不得只复制 CA、证书、AID、MySQL 或节点目录中的一部分。
|
|
80
80
|
- `.env.distributed` 不得被 example 覆盖。保留当前文件前要逐项比对 Issuer、MySQL/PostgreSQL 凭据、控制令牌、镜像、project/container/network 前缀、子网和端口;当前 worktree 必须保持 `kite-main-dist-*`、`172.31.89.0/24` 与新端口,不能沿用来源 worktree 的 Docker 命名空间。
|
|
81
81
|
- 克隆完成后,来源与目标成为两套独立资产。后续不得共享目录、交叉挂载或同时用同一容器名接管;每次启动都执行“运行时来源强制核验”。
|
|
82
|
-
- 启动业务服务前,先只读核对根 CA/Registry CA
|
|
82
|
+
- 启动业务服务前,先只读核对根 CA/Registry CA 哈希、十二个内置服务证书的 SHA-256,以及证书在克隆后 MySQL `aun_cert.agentid_cert` 中的 `lifecycle_state=active_signing`、`cert_state=1` 记录。任一不一致即停止,不得补登记、重签、清库或局部重复制。
|
|
83
83
|
|
|
84
84
|
整套冷克隆会继承来源环境的历史业务数据,适合当前分支接管并继续回归。只有明确需要全新隔离身份和空业务库时,才在用户授权后运行 `prepare_dist_materials.py` 并完成新证书注册验收;“新建空目录 + 复制旧证书”不是合法初始化方式。
|
|
85
85
|
|
|
@@ -503,7 +503,7 @@ docker compose --env-file ../docker-deploy/.env.distributed -f tests/cross-sdk/d
|
|
|
503
503
|
|
|
504
504
|
### 定位与验收边界
|
|
505
505
|
|
|
506
|
-
|
|
506
|
+
这是当前真实域名的**本机 Docker 双域跨域测试环境**。两域都是分布式控制模型的单节点部署,已迁移服务默认使用 Go:Auth、CA、Gateway、Message、Group、Storage、Stream、NameService、Leaderboard、Service Proxy;AID Custody 仍使用 Python。两域必须使用同一个无 Mail 的 `docker-deploy-kite:latest` 镜像,避免把镜像差异误判为跨域问题。本阶段的 SDK runner 只加入本地 `kite-agentid-federation-net`,不使用公网 DNS、线上服务器或公网测试 runner。
|
|
507
507
|
|
|
508
508
|
本环境验证的是本地完整调用链:
|
|
509
509
|
|
|
@@ -519,7 +519,7 @@ docker compose --env-file ../docker-deploy/.env.distributed -f tests/cross-sdk/d
|
|
|
519
519
|
|
|
520
520
|
### 每轮执行顺序
|
|
521
521
|
|
|
522
|
-
每轮开始和结束都重新阅读 [AUN 测试运行指南](aun测试运行指南.md),确认身份保护、镜像重建和测试串行规则没有变化。固定顺序为:只读材料校验 -> 必要时构建镜像 -> 启动两域 -> 来源与 Go runtime 核验 -> 双向发现 -> 联邦身份边界 -> Notify -> Stream -> P2P -> Group -> Group FS -> Collab -> Storage OSS -> 采集两域日志。当前明确跳过 Mail 和 reconnect,因此不得加载 `docker-compose.mail.yml`。任一前置门禁失败即停止,不得用重签证书、`setup_aids.py`、清库或删除 SDK 身份绕过。
|
|
522
|
+
每轮开始和结束都重新阅读 [AUN 测试运行指南](aun测试运行指南.md),确认身份保护、镜像重建和测试串行规则没有变化。固定顺序为:只读材料校验 -> 必要时构建镜像 -> 启动两域 -> 来源与 Go runtime 核验 -> 双向发现 -> 联邦身份边界 -> Notify -> Stream -> P2P -> Read State -> Group -> Group FS -> Collab -> Storage OSS -> 采集两域日志。当前明确跳过 Mail 和 reconnect,因此不得加载 `docker-compose.mail.yml`。任一前置门禁失败即停止,不得用重签证书、`setup_aids.py`、清库或删除 SDK 身份绕过。
|
|
523
523
|
|
|
524
524
|
### 材料校验与镜像构建
|
|
525
525
|
|
|
@@ -531,7 +531,7 @@ docker image inspect docker-deploy-kite:latest mysql:8.0 redis:7-alpine | Out-Nu
|
|
|
531
531
|
if ($LASTEXITCODE -ne 0) { throw '双域基础镜像未准备完成,停止测试' }
|
|
532
532
|
```
|
|
533
533
|
|
|
534
|
-
`domain_materials.py validate` 会只读核对域名、Issuer CA 指纹、
|
|
534
|
+
`domain_materials.py validate` 会只读核对域名、Issuer CA 指纹、12 个服务 AID、TLS 与 MySQL `server-uuid`。任一不匹配都表示材料混域,不得自动修复。
|
|
535
535
|
|
|
536
536
|
只有服务端源码、Go 依赖、manifest 或 Dockerfile 变化时,才在依赖准备阶段构建;业务测试阶段不得临时联网补依赖:
|
|
537
537
|
|
|
@@ -665,10 +665,10 @@ agentid.cn: D:\modelunion\kite\docker-deploy\data-agentid-cn\sdk-testers\python
|
|
|
665
665
|
|
|
666
666
|
```powershell
|
|
667
667
|
cd D:\modelunion\kite\docker-deploy
|
|
668
|
-
$phases = @(
|
|
669
|
-
'federation-boundary', 'notify', 'stream', 'p2p',
|
|
670
|
-
'group', 'group-fs', 'collab', 'storage'
|
|
671
|
-
)
|
|
668
|
+
$phases = @(
|
|
669
|
+
'federation-boundary', 'notify', 'stream', 'p2p', 'read-state',
|
|
670
|
+
'group', 'group-fs', 'collab', 'storage'
|
|
671
|
+
)
|
|
672
672
|
foreach ($phase in $phases) {
|
|
673
673
|
$testSince = (Get-Date).ToUniversalTime().ToString('o')
|
|
674
674
|
$stamp = (Get-Date).ToUniversalTime().ToString('yyyyMMddHHmmss')
|
|
@@ -769,8 +769,9 @@ foreach ($case in $jsCases) {
|
|
|
769
769
|
| `federation-boundary` | `FEDERATION_MUTUAL_AUTH_OK`,以及 unauth/signature/issuer/RPC/event/Group-FS marker 的全部 `DENIED` |
|
|
770
770
|
| `notify` | `NOTIFY_CROSS_DOMAIN_OK` |
|
|
771
771
|
| `stream` | `STREAM_CREATED_EVENT_OK`、`STREAM_TARGET_BINDING_OK`、`STREAM_CLOSED_EVENT_OK` |
|
|
772
|
-
| `p2p` | `P2P_ONLINE_OK`、`P2P_ACK_OK`、`P2P_OFFLINE_RECONNECT_SKIPPED` |
|
|
773
|
-
| `
|
|
772
|
+
| `p2p` | `P2P_ONLINE_OK`、`P2P_ACK_OK`、`P2P_OFFLINE_RECONNECT_SKIPPED` |
|
|
773
|
+
| `read-state` | `READ_STATE_P2P_OK`、`READ_STATE_GROUP_OK`、`READ_STATE_CROSS_DEVICE_OK` |
|
|
774
|
+
| `group` | `GROUP_AUTHORITY_MEMBER_OK`、`GROUP_REMOTE_PULL_OK`、`GROUP_DIRECTORY_OK`、`GROUP_DIRECTORY_RECONNECT_SKIPPED`、`GROUP_MESSAGE_ONLINE_PULL_OK`、`GROUP_LEAVE_OK`、`GROUP_AID_CERT_OK` |
|
|
774
775
|
| `group-fs` | `GROUP_FS_OWNER_AREA_OK`、`GROUP_FS_NON_MEMBER_DENIED`、`GROUP_FS_MEMBERDATA_DIRECT_OK`、`GROUP_FS_OTHER_MEMBERDATA_DENIED`、`GROUP_FS_STORAGE_BYPASS_DENIED`、`GROUP_FS_MEMBERDATA_OK`、`GROUP_FS_REMOTE_COPY_OK`、`GROUP_FS_ACL_PRE_GRANT_DENIED`、`GROUP_FS_ACL_GRANTED`、`GROUP_FS_ACL_REVOKED_DENIED`、`GROUP_FS_ADMIN_DEFAULT_WRITE_OK`、`GROUP_FS_SHORT_AID_DENIED`、`GROUP_FS_AFTER_LEAVE_DENIED` |
|
|
775
776
|
| `collab` | `COLLAB_CROSS_DOMAIN_READ_OK`、`COLLAB_NON_MEMBER_DENIED`、`COLLAB_STORAGE_BYPASS_DENIED` |
|
|
776
777
|
| `storage` | `STORAGE_LIST_OK`、`STORAGE_RECONNECT_SKIPPED`、`STORAGE_PRIVATE_DENIED_OK`、`STORAGE_TOKEN_OK`、`STORAGE_CROSS_OWNER_ROUTING_OK`、`STORAGE_CLEANUP_OK` |
|
|
@@ -788,9 +789,35 @@ Notify 必须双向验证公开 SDK `notify()` 经过 Gateway 联邦事件转发
|
|
|
788
789
|
3. 当前 `--skip-reconnect` 范围明确不执行离线重连回补,必须输出 `P2P_OFFLINE_RECONNECT_SKIPPED`;恢复 reconnect 验收时,才要求接收端离线发送、再上线 pull 并 ACK。
|
|
789
790
|
4. receiver AID 的 issuer 必须决定远端 Gateway;本域 Message 不得把异域 receiver 当成本地收件人查询后返回 not found。
|
|
790
791
|
|
|
791
|
-
成功标准是发送响应、远端接收、pull/ack 和两域日志中的同一 trace/message ID 全部闭合。仅有 `message.send` 返回成功不算通过;远端超时必须返回明确的 federation unavailable/timeout,不能伪装成接收方不存在。
|
|
792
|
-
|
|
793
|
-
###
|
|
792
|
+
成功标准是发送响应、远端接收、pull/ack 和两域日志中的同一 trace/message ID 全部闭合。仅有 `message.send` 返回成功不算通过;远端超时必须返回明确的 federation unavailable/timeout,不能伪装成接收方不存在。
|
|
793
|
+
|
|
794
|
+
### 跨设备已读未读验收
|
|
795
|
+
|
|
796
|
+
本阶段只使用本地真实域 `agentid.pub` 与 `agentid.cn` 的固定身份,验证 Message P2P、Group 消息和同一 AID 多设备的已读状态同步。不得使用 `federation-test` 的 `dist-aid.com` / `dist-aid.net` 身份或 `cross_domain_read_state.py` 作为本轮跨域验收证据;隔离 federation 仅在本指南末尾的独立参考章节中运行。
|
|
797
|
+
|
|
798
|
+
在完成 `p2p` 阶段后执行:
|
|
799
|
+
|
|
800
|
+
```powershell
|
|
801
|
+
$runId = "agentid-read-state-" + (Get-Date).ToUniversalTime().ToString('yyyyMMddHHmmss')
|
|
802
|
+
docker run --rm --network kite-agentid-federation-net `
|
|
803
|
+
-v "D:\modelunion\kite\aun-sdk-core\python\src:/sdk/src:ro" `
|
|
804
|
+
-v "D:\modelunion\kite\docker-deploy\tests\agentid_cross_domain_e2e.py:/tests/agentid_cross_domain_e2e.py:ro" `
|
|
805
|
+
-v "D:\modelunion\kite\docker-deploy\data\extended-acceptance\group-management:/identities/pub:ro" `
|
|
806
|
+
-v "D:\modelunion\kite\docker-deploy\data-agentid-cn\sdk-testers\python-fixed:/identities/cn:ro" `
|
|
807
|
+
-e PYTHONPATH=/sdk/src `
|
|
808
|
+
-e AUN_E2E_PUB_IDENTITY_ROOT=/identities/pub `
|
|
809
|
+
-e AUN_E2E_CN_IDENTITY_ROOT=/identities/cn `
|
|
810
|
+
-e AUN_E2E_CN_ENCRYPTION_SEED=cross-domain-e2e-v1 `
|
|
811
|
+
-e AUN_E2E_RUN_ROOT=/tmp/aun-e2e `
|
|
812
|
+
-e AUN_SDK_UVLOOP=0 -e AUN_CLI_UVLOOP=0 -e AUN_BENCH_UVLOOP=0 `
|
|
813
|
+
-e HTTP_PROXY= -e HTTPS_PROXY= -e ALL_PROXY= -e NO_PROXY=* `
|
|
814
|
+
aun-sdk-tester:latest python /tests/agentid_cross_domain_e2e.py `
|
|
815
|
+
--phase read-state --skip-reconnect --run-id $runId
|
|
816
|
+
```
|
|
817
|
+
|
|
818
|
+
该阶段必须输出 `READ_STATE_P2P_OK`、`READ_STATE_GROUP_OK`、`READ_STATE_CROSS_DEVICE_OK` 和 `PASS phase=read-state`。P2P 与 Group 的状态上报、重复上报幂等、查询结果及跨域消息 ID 必须在同一轮中闭合;跨设备部分必须使用同一 AID 的两个不同 `device_id`,并验证在线 `message.read_changed` 事件及查询补偿。失败后只从 `read-state` 阶段继续,不重复已通过的 `federation-boundary`、Notify、Stream 和 P2P 阶段。
|
|
819
|
+
|
|
820
|
+
### Group 跨域验收
|
|
794
821
|
|
|
795
822
|
先由 `.agentid.pub` 成员创建群并加入 `.agentid.cn` 成员,再反向创建一次。每个方向都必须验证:
|
|
796
823
|
|
package/_packed_docs/aun/346/265/213/350/257/225/350/277/220/350/241/214/346/214/207/345/215/227.md
CHANGED
|
@@ -55,7 +55,7 @@ Tester 和 cross-SDK 都不是服务端环境:
|
|
|
55
55
|
|
|
56
56
|
### 默认单实例测试前强制核验
|
|
57
57
|
|
|
58
|
-
每次开始本地单实例测试前,先选择域并执行以下只读检查。材料清单固定了 Issuer CA 指纹、
|
|
58
|
+
每次开始本地单实例测试前,先选择域并执行以下只读检查。材料清单固定了 Issuer CA 指纹、12 个服务 AID 和 MySQL `server-uuid`;Compose 解析结果必须把 MySQL 和应用四个数据挂载全部指向同一域:
|
|
59
59
|
|
|
60
60
|
```powershell
|
|
61
61
|
$domain = 'agentid.pub' # 校验本地跨域对端时改为 agentid.cn
|
|
@@ -183,7 +183,7 @@ JS 的真实 E2E 统一使用 `js/tests/e2e-browser`,不要把浏览器 E2E
|
|
|
183
183
|
|
|
184
184
|
## 一次性准备
|
|
185
185
|
|
|
186
|
-
首次准备时构建服务镜像和 Python Tester 镜像。服务镜像会同时构建
|
|
186
|
+
首次准备时构建服务镜像和 Python Tester 镜像。服务镜像会同时构建 12 个默认 Go 服务 binary:
|
|
187
187
|
|
|
188
188
|
```powershell
|
|
189
189
|
cd D:\modelunion\kite\docker-deploy
|
|
@@ -341,7 +341,7 @@ docker compose --env-file agentid.cn/local.env --project-directory . `
|
|
|
341
341
|
-f docker-compose.yml -f agentid.cn/docker-compose.yml config --quiet
|
|
342
342
|
```
|
|
343
343
|
|
|
344
|
-
解析后的服务端数据源必须全部位于 `data-agentid-cn`。Issuer CA 指纹、
|
|
344
|
+
解析后的服务端数据源必须全部位于 `data-agentid-cn`。Issuer CA 指纹、12 个服务 AID 和 MySQL `server-uuid` 由 `agentid.cn/materials.json` 锁定;不得从 `data` 复制 `agentid.pub` 的 Issuer、服务身份或数据库来补缺。
|
|
345
345
|
|
|
346
346
|
`agentid.cn` Tester 使用独立 project、容器名、网络和可写目录,不与 `agentid.pub` 共享 SDK 身份。单域测试可按该域 `local.env` 启动;真实双域测试不能只启动这个 Tester,完整拓扑、固定身份规则与验收顺序见分布式指南:
|
|
347
347
|
|
|
@@ -1149,7 +1149,7 @@ docker compose --env-file NUL -f docker-compose.build.yml build kite
|
|
|
1149
1149
|
|
|
1150
1150
|
### 首次安装与日常替换
|
|
1151
1151
|
|
|
1152
|
-
目标 Linux 主机先准备域专属材料(至少 CA、TLS、
|
|
1152
|
+
目标 Linux 主机先准备域专属材料(至少 CA、TLS、12 个服务 AID 和既有 MySQL 数据)。Compose 已内置可直接运行的默认值:数据根为当前目录的 `./data`,MySQL root 密码为 `root`,控制令牌为 `aun-local-control-token`,服务面令牌为 `aun-local-service-plane-token`;Issuer 固定为 `agentid.pub`。因此不创建 `.env`、不执行任何 `export`,`down` 和 `up` 也都能正常解析。
|
|
1153
1153
|
|
|
1154
1154
|
首次部署时,把 `bootstrap-materials.tar.gz` 解到三文件目录得到 `init.sql` 并长期保留,同时把 CA、TLS、AID 和既有运行数据放到 `./data/CA`、`./data/certs`、`./data/AIDs`、`./data/mysql`、`./data/redis` 与 `./data/kite-workspace`。然后执行:
|
|
1155
1155
|
|