@tbox.cn/app-template-agent 0.10.3 → 0.10.5
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/AGENTS.md +75 -1
- package/package.json +2 -2
- package/packages/provider-custom/AGENTS.md +41 -0
- package/pnpm-lock.template.yaml +62 -26
- package/pnpm-workspace.template.yaml +4 -4
- package/profiles/mall/TEMPLATE.md +11 -26
package/AGENTS.md
CHANGED
|
@@ -104,10 +104,84 @@ CLI 免安装,命令均经 `npx --yes @tbox.cn/app-cli <cmd>` 运行(下表
|
|
|
104
104
|
(空装配 chat 形态无业务服务,不适用)。再向用户收集:API 地址、认证方式(密钥值经
|
|
105
105
|
平台凭据引用,不进 prompt/代码/配置明文)、可选连接参数。用户已给出的不重复问。
|
|
106
106
|
未实施前调用报 `PROVIDER_NOT_IMPLEMENTED` 属预期中间态。
|
|
107
|
+
|
|
108
|
+
#### integrations.json 结构 schema 参考
|
|
109
|
+
|
|
110
|
+
完整接口见 `packages/contracts/src/providers.ts`,下表是给落声明用的字段速查。
|
|
111
|
+
|
|
112
|
+
**InlineVendorDeclaration**(providers.ts:140)——**仅 `services.<slot>.provider` 层合法**(`modules[].provider` 与 `integrations.provider` 只接受字符串厂商名):
|
|
113
|
+
|
|
114
|
+
| 字段 | 类型 | 必填 | 说明 |
|
|
115
|
+
|---|---|---|---|
|
|
116
|
+
| `provider` | `string` | ✅ | 厂商名(自定语义化短标识,同一后端多服务共用) |
|
|
117
|
+
| `credentialType` | `string` | ✅ | 认证类型:`'-'`=无凭据(仅 local 供给合法)/ SDK 内置 `static-headers-v1` / 自定如 `bearer-v1` |
|
|
118
|
+
| `configSchema` | `string` | ❌ | schema 文件路径(相对应用 `config/`),**可选**,无强制 schema 格式 |
|
|
119
|
+
|
|
120
|
+
**ConfiguredService**(providers.ts:176)——服务槽绑定:
|
|
121
|
+
|
|
122
|
+
| 字段 | 类型 | 必填 | 说明 |
|
|
123
|
+
|---|---|---|---|
|
|
124
|
+
| `provider` | `string \| InlineVendorDeclaration` | ❌ | 字符串厂商名 **或** 内联声明对象(唯一支持内联对象的层) |
|
|
125
|
+
| `implementation` | `string` | ❌ | `id@version` 字面量;字符串厂商可派生可省,内联声明必须显式 |
|
|
126
|
+
| `config` | `Record<string, unknown>` | ❌ | 服务级连接参数(明文,如 baseUrl/超时) |
|
|
127
|
+
| `credentialRef` | `string` | ❌ | 凭据引用 `secret://<stem>` |
|
|
128
|
+
| `instances` | `Record<instId, ServiceInstanceConfig>` | ❌ | 实例激活表;**省略=通配激活,`{}`=零激活(禁)** |
|
|
129
|
+
|
|
130
|
+
**ModuleConfig**(providers.ts:192)——模块级(key = install id = `tbox.module.json` id):
|
|
131
|
+
|
|
132
|
+
| 字段 | 类型 | 必填 | 说明 |
|
|
133
|
+
|---|---|---|---|
|
|
134
|
+
| `provider` | `string` | ❌ | **仅字符串厂商,不支持内联声明对象** |
|
|
135
|
+
| `config` | `Record<string, unknown>` | ❌ | 模块级共享配置 |
|
|
136
|
+
| `resources` | `Record<id, ResourceSpec>` | ❌ | 资源声明(知识库等,不算 binding 面) |
|
|
137
|
+
|
|
138
|
+
**IntegrationsConfig**(providers.ts:239)——顶层,仅 `services` 必填:
|
|
139
|
+
|
|
140
|
+
| 字段 | 类型 | 必填 | 说明 |
|
|
141
|
+
|---|---|---|---|
|
|
142
|
+
| `services` | `Record<slot, ConfiguredService>` | ✅ | 服务槽绑定 |
|
|
143
|
+
| `provider` | `string` | ❌ | 全局默认厂商(**仅字符串**) |
|
|
144
|
+
| `config` | `Record<string, unknown>` | ❌ | 全局默认配置(明文) |
|
|
145
|
+
| `configByInstance` | `Record<instId, Record>` | ❌ | 按实例的全局配置覆盖 |
|
|
146
|
+
| `credentialRef` | `string` | ❌ | 全局凭据引用 |
|
|
147
|
+
| `credentialRefByInstance` | `Record<instId, string>` | ❌ | 实例级凭据(商户级主写位) |
|
|
148
|
+
| `instances` | `DeploymentInstance[]` | ❌ | 部署实例注册表(参考表) |
|
|
149
|
+
| `defaultInstanceId` | `string \| null` | ❌ | 默认实例 id(单实例免填) |
|
|
150
|
+
| `modules` | `Record<install-id, ModuleConfig>` | ❌ | 模块集成位 |
|
|
151
|
+
|
|
152
|
+
#### 级联优先级链(resolveEffectiveService,providers.ts:336)
|
|
153
|
+
|
|
154
|
+
**provider 头 4 层**(最特异优先):
|
|
155
|
+
```
|
|
156
|
+
services[slot].instances[instId].provider → services[slot].provider → modules[owner].provider → integrations.provider
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
**config 5 层浅合并**(后者覆盖前者同字段):
|
|
160
|
+
```
|
|
161
|
+
integrations.config → integrations.configByInstance[instId] → modules[owner].config → services[slot].config → services[slot].instances[instId].config
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
**credentialRef 4 层链**:
|
|
165
|
+
```
|
|
166
|
+
services[slot].instances[instId].credentialRef → services[slot].credentialRef → integrations.credentialRefByInstance[instId] → integrations.credentialRef
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
**implementation 派生**:显式 `slot.implementation` / `inst.implementation` 优先;字符串厂商缺省则按 `supplies[provider\u0000service]` 查表派生(unique→自动取一 / 0→`PROVIDER_NOT_SUPPLIED` / 多→要求显式);内联声明必须显式(zod 已拦)。
|
|
170
|
+
|
|
171
|
+
> 内联声明对象只在 `services[slot].provider` 层合法。`modules[].provider` 与 `integrations.provider` 只接受字符串厂商名——这是 zod 直接拒导致 fail-visible 的常见错点。
|
|
172
|
+
|
|
173
|
+
#### provider 名三处一致
|
|
174
|
+
|
|
175
|
+
取的 provider 名必须下三处同名(任何一处失配则 `PROVIDER_NOT_IMPLEMENTED`):
|
|
176
|
+
|
|
177
|
+
1. `config/integrations.json` 中 `services.<slot>.provider.provider`(内联对象里的 `provider` 字段)
|
|
178
|
+
2. `packages/provider-custom/src/server/index.ts` 里 `ctx.integrations?.registerAdapter('<同名>', 'inline', factory)` 第一参
|
|
179
|
+
3. `config/credentials/${provider名}-${service}.json`(如 `my-parking-api-parking.query.json`)的 stem 前缀
|
|
180
|
+
|
|
107
181
|
2. **落声明**:目标槽已有内联声明则跳过;否则直接编辑 `config/integrations.json`
|
|
108
182
|
(CLI provider 命令仅支持字符串厂商)按下表范围写入槽级声明(`{ provider,
|
|
109
183
|
credentialType, configSchema? }` + implementation 字面量,仅槽级合法;provider 名自定
|
|
110
|
-
语义化短标识,同一后端的多服务共用同一 provider
|
|
184
|
+
语义化短标识,同一后端的多服务共用同一 provider 名——单键注册,三处一致见上文,见
|
|
111
185
|
`packages/provider-custom/AGENTS.md`;凭据接线见同文件):
|
|
112
186
|
|
|
113
187
|
| 维度 | 声明范围 | 共享连接参数落点 |
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tbox.cn/app-template-agent",
|
|
3
|
-
"version": "0.10.
|
|
3
|
+
"version": "0.10.5",
|
|
4
4
|
"description": "tbox AI Agent 全栈模板(多包 pnpm workspace):apps/client + apps/server。唯一模板(W4 单一模板统一化:缺省空装配 chat 形态;mall 能力经 profiles/mall 加装),能力经 tbox-app module add 模块扩展(shopping-guide/member 等)。",
|
|
5
5
|
"engines": {
|
|
6
6
|
"node": ">=24.0.0 <25.0.0"
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
"typescript-eslint": "8.67.0",
|
|
37
37
|
"eslint-plugin-react-hooks": "5.2.0",
|
|
38
38
|
"vite": "6.4.3",
|
|
39
|
-
"@tbox.cn/app-sdk-server": "0.21.
|
|
39
|
+
"@tbox.cn/app-sdk-server": "0.21.1"
|
|
40
40
|
},
|
|
41
41
|
"license": "MIT",
|
|
42
42
|
"publishConfig": {
|
|
@@ -26,6 +26,22 @@
|
|
|
26
26
|
用不同 provider 名分键。adapter 内取凭据值(如自签名):`input.credential()` 惰性 getter
|
|
27
27
|
(返回 `{ scope, type, value }`;未配 credentialRef → undefined)。
|
|
28
28
|
|
|
29
|
+
## provider 名三处一致
|
|
30
|
+
|
|
31
|
+
取的 provider 名必须下三处同名(任一处失配则运行时报 `PROVIDER_NOT_IMPLEMENTED`——
|
|
32
|
+
resolveService 惰性查表查不到对应 adapter):
|
|
33
|
+
|
|
34
|
+
1. **声明侧**:`config/integrations.json` 中 `services.<slot>.provider.provider` 字段
|
|
35
|
+
(内联声明对象内的 `provider` 键;若声明是字符串厂商则该键名直接是名字)
|
|
36
|
+
2. **注册侧**:`packages/provider-custom/src/server/index.ts` 中
|
|
37
|
+
`ctx.integrations?.registerAdapter('<同名>', 'inline', factory)` 第一参
|
|
38
|
+
3. **凭据侧**:`config/credentials/${provider名}-${service}.json` 的 stem 前缀
|
|
39
|
+
(服务级);共享 stem = `${provider名}-global`;实例差异化另见
|
|
40
|
+
`${provider名}-${instanceId}-${domain}` 形(凭据文件嵌套形格式见下节)
|
|
41
|
+
|
|
42
|
+
> 多服务单键只是注册侧共享,三处同名规则不放宽——同一 provider 名的全部服务 stem 仍各自
|
|
43
|
+
> 含 `-<service>` 段;只有注册键(registerAdapter 第一参)一次("单键")。
|
|
44
|
+
|
|
29
45
|
## 认证与凭据
|
|
30
46
|
|
|
31
47
|
| 认证形态 | credentialType(声明与凭据文件一致) | 机制 |
|
|
@@ -45,6 +61,31 @@
|
|
|
45
61
|
- 槽 `instances` 省略 = 通配激活(**勿写空对象 `{}`** = 零激活);已绑字符串厂商的槽整组
|
|
46
62
|
替换前先向用户确认。
|
|
47
63
|
|
|
64
|
+
### config 与 configSchema 的区别
|
|
65
|
+
|
|
66
|
+
| 字段 | 落点 | 类型 | 内容形态 |
|
|
67
|
+
|---|---|---|---|
|
|
68
|
+
| `services[slot].config` / `modules[].config` / root `config` / `instances[].config` 等所有 `config*` 字段 | `config/integrations.json` | `Record<string, unknown>` 真实值 | **明文连接参数**——baseUrl / 路径前缀 / 超时 / 重试等。直接进 integrations.json(可见、非密钥) |
|
|
69
|
+
| `services[slot].provider.configSchema`(内联声明中的可选字段) | `integrations.json` 写路径字符串,文件本体在 `config/<路径>.json` | `string` 路径 + 开发者自写文件 | **可选 schema 制品**——相对应用 `config/` 的路径;当前无强制 schema 格式;写则 doctor 谓词可消费校验,不写则不校验 |
|
|
70
|
+
|
|
71
|
+
**`config` 不替代凭据**:嵌在 `config.*` 字段里的值是"可见的连接配置",不是"凭据真值"。任何形式
|
|
72
|
+
的密钥(API key / token / 签名 secret / OAuth secret)经 `credentialRef: "secret://<stem>"`
|
|
73
|
+
引用,真值只进 `config/credentials/<stem>.json`(嵌套形)或平台 env——**禁**直接进 `config.*`
|
|
74
|
+
字段明文,也禁进 prompt、代码、入库文档。
|
|
75
|
+
|
|
76
|
+
**`configSchema` 不强制**:framework 不要求每条内联声明都配 schema 文件,schema 形态由开发者自选
|
|
77
|
+
(推荐自身可读、可校验的 JSON schema 或自定义格式)。doctor 谓词对存在 `configSchema` 的声明做受
|
|
78
|
+
控子集校验;不存在则跳过。AI 接自定义集成任务不要因为没 schema 而拒绝落声明。
|
|
79
|
+
|
|
80
|
+
### 配置值与凭据真值的可见性边界
|
|
81
|
+
|
|
82
|
+
| 数据 | 落点 | 是否进 prompt / 代码 / 入库文档 |
|
|
83
|
+
|---|---|---|
|
|
84
|
+
| `*.config` 字段(baseUrl / 超时 / 路径前缀等连接参数) | `config/integrations.json` 明文 | ⚠ 可见(明文即设计意图),但不应成"密钥代用品" |
|
|
85
|
+
| 凭据真值(API key / token / 签名 secret / OAuth secret 等) | `config/credentials/<stem>.json` 嵌套形 或 平台 env | ❌ 禁入 prompt / 代码 / integrations.json / 入库文档 |
|
|
86
|
+
| `credentialRef: "secret://<stem>"` 引用本身 | `config/integrations.json` 明文 | ✅ 可见(非真值,仅 stem 引用) |
|
|
87
|
+
| AGENTS.md / 模板出厂文档 | 仓库 | ❌ 不含 `secret://` 真值(仅描述引用形态) |
|
|
88
|
+
|
|
48
89
|
## 完成判据
|
|
49
90
|
|
|
50
91
|
- `pnpm typecheck && pnpm build` 通过;
|
package/pnpm-lock.template.yaml
CHANGED
|
@@ -16,20 +16,20 @@ catalogs:
|
|
|
16
16
|
specifier: 0.1.0
|
|
17
17
|
version: 0.1.0
|
|
18
18
|
'@tbox.cn/app-agent-sdk-client':
|
|
19
|
-
specifier: 0.1.
|
|
20
|
-
version: 0.1.
|
|
19
|
+
specifier: 0.1.2
|
|
20
|
+
version: 0.1.2
|
|
21
21
|
'@tbox.cn/app-agent-sdk-server':
|
|
22
22
|
specifier: 0.1.2
|
|
23
23
|
version: 0.1.2
|
|
24
24
|
'@tbox.cn/app-contracts':
|
|
25
|
-
specifier: 0.12.
|
|
26
|
-
version: 0.12.
|
|
25
|
+
specifier: 0.12.2
|
|
26
|
+
version: 0.12.2
|
|
27
27
|
'@tbox.cn/app-contracts-mall':
|
|
28
|
-
specifier: 0.12.
|
|
29
|
-
version: 0.12.
|
|
28
|
+
specifier: 0.12.2
|
|
29
|
+
version: 0.12.2
|
|
30
30
|
'@tbox.cn/app-sdk-server':
|
|
31
|
-
specifier: 0.21.
|
|
32
|
-
version: 0.21.
|
|
31
|
+
specifier: 0.21.1
|
|
32
|
+
version: 0.21.1
|
|
33
33
|
'@tbox.cn/app-theme-tbox':
|
|
34
34
|
specifier: 0.1.3
|
|
35
35
|
version: 0.1.3
|
|
@@ -115,7 +115,7 @@ importers:
|
|
|
115
115
|
devDependencies:
|
|
116
116
|
'@tbox.cn/app-sdk-server':
|
|
117
117
|
specifier: 'catalog:'
|
|
118
|
-
version: 0.21.
|
|
118
|
+
version: 0.21.1
|
|
119
119
|
eslint:
|
|
120
120
|
specifier: 'catalog:'
|
|
121
121
|
version: 9.39.5
|
|
@@ -142,10 +142,10 @@ importers:
|
|
|
142
142
|
version: link:../../packages/provider-custom
|
|
143
143
|
'@tbox.cn/app-agent-sdk-client':
|
|
144
144
|
specifier: 'catalog:'
|
|
145
|
-
version: 0.1.
|
|
145
|
+
version: 0.1.2(@types/react@18.3.31)
|
|
146
146
|
'@tbox.cn/app-contracts':
|
|
147
147
|
specifier: 'catalog:'
|
|
148
|
-
version: 0.12.
|
|
148
|
+
version: 0.12.2
|
|
149
149
|
'@tbox.cn/app-theme-tbox':
|
|
150
150
|
specifier: 'catalog:'
|
|
151
151
|
version: 0.1.3
|
|
@@ -209,7 +209,7 @@ importers:
|
|
|
209
209
|
version: 0.1.2(@tbox-dev-js/sdk@0.1.18)(rxjs@7.8.1)
|
|
210
210
|
'@tbox.cn/app-contracts':
|
|
211
211
|
specifier: 'catalog:'
|
|
212
|
-
version: 0.12.
|
|
212
|
+
version: 0.12.2
|
|
213
213
|
express:
|
|
214
214
|
specifier: 'catalog:'
|
|
215
215
|
version: 4.22.2
|
|
@@ -246,10 +246,10 @@ importers:
|
|
|
246
246
|
version: 2.1.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
|
247
247
|
'@tbox.cn/app-agent-sdk-client':
|
|
248
248
|
specifier: 'catalog:'
|
|
249
|
-
version: 0.1.
|
|
249
|
+
version: 0.1.2(@types/react@18.3.31)
|
|
250
250
|
'@tbox.cn/app-contracts':
|
|
251
251
|
specifier: 'catalog:'
|
|
252
|
-
version: 0.12.
|
|
252
|
+
version: 0.12.2
|
|
253
253
|
antd-mobile:
|
|
254
254
|
specifier: 'catalog:'
|
|
255
255
|
version: 5.42.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
|
@@ -298,7 +298,7 @@ importers:
|
|
|
298
298
|
dependencies:
|
|
299
299
|
'@tbox.cn/app-contracts-mall':
|
|
300
300
|
specifier: 'catalog:'
|
|
301
|
-
version: 0.12.
|
|
301
|
+
version: 0.12.2
|
|
302
302
|
devDependencies:
|
|
303
303
|
'@types/node':
|
|
304
304
|
specifier: 24.13.3
|
|
@@ -314,13 +314,13 @@ importers:
|
|
|
314
314
|
dependencies:
|
|
315
315
|
'@tbox.cn/app-agent-sdk-client':
|
|
316
316
|
specifier: 'catalog:'
|
|
317
|
-
version: 0.1.
|
|
317
|
+
version: 0.1.2(@types/react@18.3.31)
|
|
318
318
|
'@tbox.cn/app-agent-sdk-server':
|
|
319
319
|
specifier: 'catalog:'
|
|
320
320
|
version: 0.1.2(@tbox-dev-js/sdk@0.1.18)(rxjs@7.8.1)
|
|
321
321
|
'@tbox.cn/app-contracts':
|
|
322
322
|
specifier: 'catalog:'
|
|
323
|
-
version: 0.12.
|
|
323
|
+
version: 0.12.2
|
|
324
324
|
devDependencies:
|
|
325
325
|
'@types/node':
|
|
326
326
|
specifier: 24.13.3
|
|
@@ -1335,16 +1335,16 @@ packages:
|
|
|
1335
1335
|
'@tbox-dev-js/sdk': '>=0.1.18 <0.2.0'
|
|
1336
1336
|
zod: '>=3.24.0 <4.0.0'
|
|
1337
1337
|
|
|
1338
|
-
'@tbox.cn/app-agent-sdk-client@0.1.
|
|
1339
|
-
resolution: {integrity: sha512
|
|
1338
|
+
'@tbox.cn/app-agent-sdk-client@0.1.2':
|
|
1339
|
+
resolution: {integrity: sha512-Ba5n4PUCWsj8+jByOYGGAXS5lzEioBYmaMxvLL0Axvc3Id9gVYF31Jj5H4U+bVzO4Jtbb7huqG9sf3qX69lffw==}
|
|
1340
1340
|
engines: {node: '>=20.0.0'}
|
|
1341
1341
|
|
|
1342
1342
|
'@tbox.cn/app-agent-sdk-server@0.1.2':
|
|
1343
1343
|
resolution: {integrity: sha512-qS9RDPAGHiFB+FesBtgc2QLZnGNgXrG62fCyPQ663Cb9xfF0Fs0r+fTPXpG2ewsBkoST7c1oy/ZlfMO85o7/pw==}
|
|
1344
1344
|
engines: {node: '>=20.0.0'}
|
|
1345
1345
|
|
|
1346
|
-
'@tbox.cn/app-contracts-mall@0.12.
|
|
1347
|
-
resolution: {integrity: sha512
|
|
1346
|
+
'@tbox.cn/app-contracts-mall@0.12.2':
|
|
1347
|
+
resolution: {integrity: sha512-/vBCWpvFsCagnUSHbogHFFrnCURic9QUZ//AURasTzZoSv5u5/OetHAQ8JON1ukJ8ItLzfhjRJ1IBvFNMA3xhg==}
|
|
1348
1348
|
engines: {node: '>=20.0.0'}
|
|
1349
1349
|
|
|
1350
1350
|
'@tbox.cn/app-contracts@0.12.0':
|
|
@@ -1355,6 +1355,10 @@ packages:
|
|
|
1355
1355
|
resolution: {integrity: sha512-h5HXIfk5frNx6hufY2IBE+hISCk3/2n8A7G3EtnAF4JsR91Pm/uwdmn4zYtZOz0r9cL7Wk1SrUMcokMZ9HkbLw==}
|
|
1356
1356
|
engines: {node: '>=20.0.0'}
|
|
1357
1357
|
|
|
1358
|
+
'@tbox.cn/app-contracts@0.12.2':
|
|
1359
|
+
resolution: {integrity: sha512-SnteKq3+kQjwDHb4BN2HX2Eawd7ws84IxPkJziaeKaDGBfJ1RzPRUAQyL/Zo4kJLCzsY3ViE2AEh1SG10r4MXw==}
|
|
1360
|
+
engines: {node: '>=20.0.0'}
|
|
1361
|
+
|
|
1358
1362
|
'@tbox.cn/app-sdk-client@0.21.1':
|
|
1359
1363
|
resolution: {integrity: sha512-hN+tIj8kh11PD0HMhq5KUs/nZYjxS+ps3F3HTTmOHWXNXzilYafFxeIWJ1bXKVm1Di5EUIjNaRPUDkP6HAcHvw==}
|
|
1360
1364
|
engines: {node: '>=20.0.0'}
|
|
@@ -1372,6 +1376,11 @@ packages:
|
|
|
1372
1376
|
engines: {node: '>=20.0.0'}
|
|
1373
1377
|
hasBin: true
|
|
1374
1378
|
|
|
1379
|
+
'@tbox.cn/app-sdk-server@0.21.1':
|
|
1380
|
+
resolution: {integrity: sha512-LCB9gH6n5ILdLDHQUAq1NLrclLjmB0dsqGVHe4Zb4yucUPb16jxk/53NREYq0NzsHiTDxc29IvcreVaxRpVmXw==}
|
|
1381
|
+
engines: {node: '>=20.0.0'}
|
|
1382
|
+
hasBin: true
|
|
1383
|
+
|
|
1375
1384
|
'@tbox.cn/app-theme-tbox@0.1.3':
|
|
1376
1385
|
resolution: {integrity: sha512-Wf2umpT/k+Ppy1oKuCDqe6M5yvp4F/tjdGpU7uygGWMaEduwFnoK0EVh4eDcA6dMlERLCAjxFlEUY68xXGq99A==}
|
|
1377
1386
|
|
|
@@ -1379,6 +1388,10 @@ packages:
|
|
|
1379
1388
|
resolution: {integrity: sha512-ShLYwxsMzhr8V5sjixo4GFGBZbAw4/8CoTnCigrbBcRLtydf2ezLrLDR9jHfi/d5fQworFR5ZBzI7xDSjvR2zA==}
|
|
1380
1389
|
engines: {node: '>=20.0.0'}
|
|
1381
1390
|
|
|
1391
|
+
'@tbox.cn/app-toolkit@0.7.2':
|
|
1392
|
+
resolution: {integrity: sha512-bvq5l7rwwX3EJe0hQm4dnwSh0tuDmoucCkCfX306PvNbhSv0H9uHSljg/jeXh08DBtc2gjIJyvPsfDxrv5X6Uw==}
|
|
1393
|
+
engines: {node: '>=20.0.0'}
|
|
1394
|
+
|
|
1382
1395
|
'@types/babel__core@7.20.5':
|
|
1383
1396
|
resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==}
|
|
1384
1397
|
|
|
@@ -4077,11 +4090,11 @@ snapshots:
|
|
|
4077
4090
|
'@tbox-dev-js/sdk': 0.1.18
|
|
4078
4091
|
zod: 3.25.76
|
|
4079
4092
|
|
|
4080
|
-
'@tbox.cn/app-agent-sdk-client@0.1.
|
|
4093
|
+
'@tbox.cn/app-agent-sdk-client@0.1.2(@types/react@18.3.31)':
|
|
4081
4094
|
dependencies:
|
|
4082
|
-
'@tbox.cn/app-contracts': 0.12.
|
|
4095
|
+
'@tbox.cn/app-contracts': 0.12.1
|
|
4083
4096
|
'@tbox.cn/app-sdk-client': 0.21.1
|
|
4084
|
-
'@tbox.cn/app-sdk-core': 0.20.
|
|
4097
|
+
'@tbox.cn/app-sdk-core': 0.20.1
|
|
4085
4098
|
react: 18.3.1
|
|
4086
4099
|
react-dom: 18.3.1(react@18.3.1)
|
|
4087
4100
|
zustand: 4.5.7(@types/react@18.3.31)(react@18.3.1)
|
|
@@ -4117,9 +4130,9 @@ snapshots:
|
|
|
4117
4130
|
- utf-8-validate
|
|
4118
4131
|
- workflow
|
|
4119
4132
|
|
|
4120
|
-
'@tbox.cn/app-contracts-mall@0.12.
|
|
4133
|
+
'@tbox.cn/app-contracts-mall@0.12.2':
|
|
4121
4134
|
dependencies:
|
|
4122
|
-
'@tbox.cn/app-contracts': 0.12.
|
|
4135
|
+
'@tbox.cn/app-contracts': 0.12.1
|
|
4123
4136
|
zod: 3.25.76
|
|
4124
4137
|
|
|
4125
4138
|
'@tbox.cn/app-contracts@0.12.0':
|
|
@@ -4134,6 +4147,12 @@ snapshots:
|
|
|
4134
4147
|
react: 18.3.1
|
|
4135
4148
|
zod: 3.25.76
|
|
4136
4149
|
|
|
4150
|
+
'@tbox.cn/app-contracts@0.12.2':
|
|
4151
|
+
dependencies:
|
|
4152
|
+
'@ag-ui/core': 0.0.47
|
|
4153
|
+
react: 18.3.1
|
|
4154
|
+
zod: 3.25.76
|
|
4155
|
+
|
|
4137
4156
|
'@tbox.cn/app-sdk-client@0.21.1':
|
|
4138
4157
|
dependencies:
|
|
4139
4158
|
'@tbox.cn/app-contracts': 0.12.0
|
|
@@ -4161,6 +4180,18 @@ snapshots:
|
|
|
4161
4180
|
transitivePeerDependencies:
|
|
4162
4181
|
- supports-color
|
|
4163
4182
|
|
|
4183
|
+
'@tbox.cn/app-sdk-server@0.21.1':
|
|
4184
|
+
dependencies:
|
|
4185
|
+
'@ag-ui/core': 0.0.47
|
|
4186
|
+
'@tbox.cn/app-contracts': 0.12.1
|
|
4187
|
+
'@tbox.cn/app-sdk-core': 0.20.1
|
|
4188
|
+
'@tbox.cn/app-toolkit': 0.7.2
|
|
4189
|
+
express: 4.22.2
|
|
4190
|
+
jose: 6.2.8
|
|
4191
|
+
zod: 3.25.76
|
|
4192
|
+
transitivePeerDependencies:
|
|
4193
|
+
- supports-color
|
|
4194
|
+
|
|
4164
4195
|
'@tbox.cn/app-theme-tbox@0.1.3': {}
|
|
4165
4196
|
|
|
4166
4197
|
'@tbox.cn/app-toolkit@0.5.0':
|
|
@@ -4168,6 +4199,11 @@ snapshots:
|
|
|
4168
4199
|
ajv: 8.20.0
|
|
4169
4200
|
zod: 3.25.76
|
|
4170
4201
|
|
|
4202
|
+
'@tbox.cn/app-toolkit@0.7.2':
|
|
4203
|
+
dependencies:
|
|
4204
|
+
ajv: 8.20.0
|
|
4205
|
+
zod: 3.25.76
|
|
4206
|
+
|
|
4171
4207
|
'@types/babel__core@7.20.5':
|
|
4172
4208
|
dependencies:
|
|
4173
4209
|
'@babel/parser': 7.29.8
|
|
@@ -40,11 +40,11 @@ catalog:
|
|
|
40
40
|
"@tbox.cn/agent-plugin": 0.1.0
|
|
41
41
|
"@tbox.cn/app-sdk-core": 0.20.1
|
|
42
42
|
"@tbox.cn/app-sdk-client": 0.21.1
|
|
43
|
-
"@tbox.cn/app-sdk-server": 0.21.
|
|
43
|
+
"@tbox.cn/app-sdk-server": 0.21.1
|
|
44
44
|
"@tbox.cn/app-agent-sdk-server": 0.1.2
|
|
45
|
-
"@tbox.cn/app-agent-sdk-client": 0.1.
|
|
46
|
-
"@tbox.cn/app-contracts": 0.12.
|
|
47
|
-
"@tbox.cn/app-contracts-mall": 0.12.
|
|
45
|
+
"@tbox.cn/app-agent-sdk-client": 0.1.2
|
|
46
|
+
"@tbox.cn/app-contracts": 0.12.2
|
|
47
|
+
"@tbox.cn/app-contracts-mall": 0.12.2
|
|
48
48
|
"@tbox.cn/app-theme-tbox": 0.1.3
|
|
49
49
|
zustand: 4.5.7
|
|
50
50
|
eslint: 9.39.5
|
|
@@ -1,42 +1,27 @@
|
|
|
1
1
|
# 商圈智能体应用 · 使用指南
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
开箱即为演示态——业务数据使用内置模拟数据,无需接入真实服务即可体验完整流程;正式上线按以下四步推进。
|
|
3
|
+
本应用已支持客服问答、商圈基础、会员积分、停车缴费、智能导购等业务能力。当前使用演示数据,无需接入真实服务即可体验;正式使用时,可按以下步骤完成配置。
|
|
5
4
|
|
|
6
5
|
## 第一步 · 接入业务服务
|
|
7
6
|
|
|
8
|
-
|
|
7
|
+
在右侧「业务组件」Tab 中选择所需组件,提供对应业务的 API 接口文档,由 Agent 完成服务集成。
|
|
9
8
|
|
|
10
|
-
| 业务组件 |
|
|
9
|
+
| 业务组件 | 需准备的接口文档 |
|
|
11
10
|
|---|---|
|
|
12
|
-
|
|
|
13
|
-
|
|
|
14
|
-
|
|
|
15
|
-
|
|
|
16
|
-
|
|
|
17
|
-
| 支付宝碰一下 | 活动服务网关地址、活动方案标识 |
|
|
18
|
-
| 客服问答 | 客服知识库来源(知识内容在第三步配置) |
|
|
19
|
-
|
|
20
|
-
商圈家页无需单独接入,其数据聚合自以上组件,接入完成后自动生效。
|
|
11
|
+
| 客服问答 | 客服知识库相关接口 |
|
|
12
|
+
| 商圈基础 | 商场名称、地址及位置信息接口 |
|
|
13
|
+
| 会员积分 | 会员信息、积分查询及入会接口 |
|
|
14
|
+
| 停车缴费 | 车辆查询、停车计费及缴费接口 |
|
|
15
|
+
| 智能导购 | 商户、品牌及门店查询接口 |
|
|
21
16
|
|
|
22
17
|
## 第二步 · 调试业务卡片
|
|
23
18
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
- 「帮我找商场里的美食」→ 导购检索与商户卡片
|
|
27
|
-
- 「我的积分有多少」→ 会员积分卡片
|
|
28
|
-
- 「停车费多少」→ 停车费用卡片
|
|
19
|
+
在对话中逐项体验已接入的组件,检查业务数据和卡片展示效果,并按需调整交互与主题样式。
|
|
29
20
|
|
|
30
21
|
## 第三步 · 配置业务知识
|
|
31
22
|
|
|
32
|
-
|
|
33
|
-
- **业务规则与口吻**:智能体的服务范围、回答风格与兜底引导
|
|
34
|
-
- **常用指令**:对话首页的快捷入口(如「今日优惠」「品牌导览」)
|
|
23
|
+
在「知识库」中补充商场常见问题、服务政策等内容,并设置智能体的回答风格、服务范围和常用指令。
|
|
35
24
|
|
|
36
25
|
## 第四步 · 测试并部署
|
|
37
26
|
|
|
38
|
-
|
|
39
|
-
- **发布上线**:完成验证后部署发布;所需环境变量(模型服务等)可在平台页面配置
|
|
40
|
-
- **小程序接入**:应用嵌入支付宝小程序,服务到店顾客
|
|
41
|
-
|
|
42
|
-
完成以上四步后,应用即可稳定上线,为顾客提供导购、会员、停车与优惠等智能服务。
|
|
27
|
+
测试典型对话和业务流程,确认数据与卡片展示正常后,即可部署发布并接入支付宝小程序。
|