@puyinkai/xiaobao-cli 0.1.0 → 0.1.8
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/dist/{api-Ccj5dLMo.mjs → api-CX99_4K7.mjs} +22 -5
- package/dist/{api-client-DwySN6x-.mjs → api-client-zDBFgk0y.mjs} +5 -3
- package/dist/{audio-VmDQMq59.mjs → audio-ShfvRomP.mjs} +2 -2
- package/dist/{auth-ChHvqjCS.mjs → auth-DpK81Vp5.mjs} +3 -3
- package/dist/cli.mjs +15 -11
- package/dist/{consultant-ABFTL_jx.mjs → consultant-CS9B42d3.mjs} +1 -1
- package/dist/current-CfDExInT.mjs +33 -0
- package/dist/{customer-DtSnQqy_.mjs → customer-B1cxRbJ9.mjs} +1 -1
- package/dist/{focus-BDYuP2vZ.mjs → focus-DfNPPhm5.mjs} +1 -1
- package/dist/{format-BZvv8lYc.mjs → format-yjmxrbNm.mjs} +15 -7
- package/dist/{list-Bkyi95YO.mjs → list-CD08BRLk.mjs} +6 -6
- package/dist/{list-CzB9_Jho.mjs → list-CKlx8YuL.mjs} +6 -6
- package/dist/{list-DW6KAAaC.mjs → list-CnlFIFiY.mjs} +6 -6
- package/dist/{list-iwd9cH1I.mjs → list-Cu6WzPpA.mjs} +5 -5
- package/dist/{list-CVKSGNu4.mjs → list-D56gEqiB.mjs} +6 -6
- package/dist/{list--o5Q_PI8.mjs → list-DCcCS6LM.mjs} +6 -6
- package/dist/{list-CGACp0y-.mjs → list-DI1OD95x.mjs} +3 -3
- package/dist/login-CUUcjWPd.mjs +156 -0
- package/dist/{logout-BJm9pjje.mjs → logout-DP7REhCd.mjs} +10 -7
- package/dist/{project-Ba05YzJ5.mjs → project-BuQQewOs.mjs} +3 -2
- package/dist/{project-store-Bz5kf-EI.mjs → project-store-CKVJa54T.mjs} +4 -3
- package/dist/{qa-D-B9FV9W.mjs → qa-CKsKiQIm.mjs} +5 -5
- package/dist/{resistance-Cf7zsdB3.mjs → resistance-DsE-Ha6Y.mjs} +1 -1
- package/dist/{text-BLH4R3xv.mjs → text-C3jhdPoe.mjs} +5 -5
- package/dist/{token-store-CHZ_rJQk.mjs → token-store-CXizLE2_.mjs} +46 -6
- package/dist/{use-DV9Ii3Tn.mjs → use-BZES4FZC.mjs} +2 -2
- package/dist/{visit-Ct3Vea8I.mjs → visit-CX0Mc1n6.mjs} +1 -1
- package/dist/{whoami-DwTHvI4B.mjs → whoami-CZVez-rm.mjs} +2 -2
- package/package.json +2 -2
- package/skills/wangxiaobao-audio-query/SKILL.md +51 -106
- package/skills/wangxiaobao-audio-wiki/SKILL.md +31 -77
- package/skills/wangxiaobao-audio-wiki/references/audio-wiki-schema.md +386 -0
- package/skills/wangxiaobao-audio-wiki/references/llm-wiki-ingest.md +450 -0
- package/skills/wangxiaobao-customer-focus-query/SKILL.md +37 -87
- package/skills/wangxiaobao-customer-query/SKILL.md +41 -90
- package/skills/wangxiaobao-customer-resistance-query/SKILL.md +32 -86
- package/skills/wangxiaobao-quick-qa/SKILL.md +41 -92
- package/skills/wangxiaobao-shared/SKILL.md +194 -0
- package/skills/wangxiaobao-switch-project/SKILL.md +51 -77
- package/skills/wangxiaobao-visit-query/SKILL.md +41 -88
- package/dist/login-BwkrByMm.mjs +0 -91
- package/dist/{device-flow-BgsZipYA.mjs → device-flow-D6JVcEap.mjs} +1 -1
- /package/dist/{headers-D79npewp.mjs → headers-DSnR4sjk.mjs} +0 -0
- /package/dist/{util-DgwkUfV9.mjs → util-CaPQBlNa.mjs} +0 -0
|
@@ -1,86 +1,43 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: wangxiaobao-customer-query
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
(1) 用户问"客户列表"、"我的客户"、"高意向客户"、"近期来访客户"
|
|
10
|
-
(2) 用户问"张三名下的客户"、"陈平这周新增了哪些客户"——先调
|
|
11
|
-
`xiaobao_list_consultants` 反查顾问 user-id,再调本 skill 带 userId 过滤
|
|
12
|
-
(3) 用户按客户画像找——"高意向客户"、"价格敏感客户"、"看四房的客户",用
|
|
13
|
-
`portrait` 关键词
|
|
14
|
-
(4) 用户问"姓张的客户"、"手机号 138 的客户"——客户姓名 / 手机号 LIKE 模糊
|
|
15
|
-
(5) 用户问"5 月份来过的客户"、"上周访客"——`fromDate` / `toDate` 时间窗
|
|
16
|
-
(6) 任何"看客户名单 / 客户画像"的开放式查询,**不写文件 / 不出报告**
|
|
17
|
-
|
|
18
|
-
**不要用本 skill 的场景**:
|
|
19
|
-
- 用户要的是来访 / 接待记录("今天来了几组")→ 走 `wangxiaobao-visit-query`
|
|
20
|
-
- 用户问录音元数据 / 文本 → 走 `wangxiaobao-audio-query`
|
|
21
|
-
- 用户要"出报告 / 落 wiki" → 本期不支持
|
|
3
|
+
version: 0.1.0
|
|
4
|
+
description: "旺小宝客户画像分页查询:按 置业顾问 / 客户姓名 / 手机号 / 画像关键词(dynamic_tags JSON LIKE) / 最后来访时间窗 维度过滤,排序固定 last_visit_time DESC。只读、不写文件、无副作用。高频命令: xiaobao-cli customer list [--user-id <id>] [--user-name <n>] [--customer-name <n>] [--customer-phone <p>] [--portrait <kw>] [--from <date>] [--to <date>] [--page N] [--size N]。何时用:用户问客户列表/我的客户/高意向客户/近期来访客户/某顾问名下的客户/某顾问这周新增哪些客户/姓张的客户/手机号 138 的客户/5 月份来过的客户;按画像找如高意向/价格敏感/看四房用 --portrait。注:顾问名→user-id 先用 xiaobao-cli consultant list 反查;要来访记录走 visit-query;要录音元数据走 audio-query。"
|
|
5
|
+
metadata:
|
|
6
|
+
requires:
|
|
7
|
+
bins: ["xiaobao-cli"]
|
|
8
|
+
cliHelp: "xiaobao-cli customer --help"
|
|
22
9
|
---
|
|
23
10
|
|
|
24
|
-
> **Host-agnostic CLI skill** — 本 skill 假设 `xiaobao-cli` 已装到 PATH
|
|
25
|
-
> (`npm i -g @puyinkai/xiaobao-cli` 或 `npx -y @puyinkai/xiaobao-cli`)。
|
|
26
|
-
> Agent 通过 shell 工具(Bash / Run / Shell)执行命令、读 **stdout JSON** 消费;
|
|
27
|
-
> stderr 是进度/错误提示。退出码 0 = 成功,非 0 = 业务/网络错(错误对象同时打到 stdout 可解析)。
|
|
28
|
-
>
|
|
29
|
-
> CLI 14 个子命令跟 openclaw-xiaobao plugin 14 个 tool **1:1 等价**,返回 JSON
|
|
30
|
-
> 结构完全一致(`{status, ok, data: {...}}`)。skill 里看到的 `resp.data.data.xxx`
|
|
31
|
-
> 取数路径直接对 stdout JSON 用 `jq` / `JSON.parse` 即可。
|
|
32
|
-
>
|
|
33
|
-
> **plugin tool → CLI 命令翻译表(数组参数走逗号分隔)**:
|
|
34
|
-
>
|
|
35
|
-
> | plugin tool | CLI 命令 |
|
|
36
|
-
> | --- | --- |
|
|
37
|
-
> | `xiaobao_authorize { force? }` | `xiaobao-cli auth login [--force]` |
|
|
38
|
-
> | `xiaobao_whoami` | `xiaobao-cli auth whoami` |
|
|
39
|
-
> | `xiaobao_logout` | `xiaobao-cli auth logout` |
|
|
40
|
-
> | `xiaobao_list_projects { keyword? }` | `xiaobao-cli project list [--keyword <kw>]` |
|
|
41
|
-
> | `xiaobao_switch_project { tenantId, tenantName, projectId, projectName }` | `xiaobao-cli project use --tenant-id ... --tenant-name ... --project-id ... --project-name ...` |
|
|
42
|
-
> | `xiaobao_list_consultants` | `xiaobao-cli consultant list` |
|
|
43
|
-
> | `xiaobao_list_audio { fromDate, toDate, userId?, userIdList?, page, size }` | `xiaobao-cli audio list --from "..." --to "..." [--user-id ...] [--user-id-list a,b,c] [--page N] [--size N]` |
|
|
44
|
-
> | `xiaobao_get_audio_text { audioId }` | `xiaobao-cli audio text <audioId>` |
|
|
45
|
-
> | `xiaobao_list_customers { ... }` | `xiaobao-cli customer list [--user-id] [--user-name] [--customer-name] [--customer-phone] [--portrait] [--from] [--to] [--page] [--size]` |
|
|
46
|
-
> | `xiaobao_list_visits { ... }` | `xiaobao-cli visit list [--customer-id] [--customer-name] [--from] [--to] [--page] [--size]` |
|
|
47
|
-
> | `xiaobao_list_customer_focus { visitIds, customerIds, audioIds, category, classification, fromDate, toDate, ... }` | `xiaobao-cli focus list [--visit-ids a,b] [--customer-ids a,b] [--audio-ids a,b] [--category ...] [--classification ...] [--from ...] [--to ...]` |
|
|
48
|
-
> | `xiaobao_list_customer_resistance { ... }` | `xiaobao-cli resistance list [同 focus]` |
|
|
49
|
-
> | `xiaobao_quick_qa { prompt, threadId? }` | `xiaobao-cli qa "<prompt>" [--thread-id ...]` |
|
|
50
|
-
> | `xiaobao_api { method, path, query, body, headers }` | `xiaobao-cli api <METHOD> <PATH> [--query k=v] [--body '<json>'] [--headers k=v]` |
|
|
51
|
-
>
|
|
52
|
-
> 用 `--format toon` 切到 TOON(uniform 数组省 30-50% token,LLM 上下文优化);
|
|
53
|
-
> 用 `--format json`(默认)保持 JSON。state 路径:`~/.xiaobao/`(fallback 读 `~/.openclaw/state/wangxiaobao/`)。
|
|
54
|
-
|
|
55
|
-
|
|
56
11
|
# 旺小宝客户分页查询
|
|
57
12
|
|
|
58
|
-
|
|
13
|
+
> **CRITICAL** —— 跑命令前 MUST 先用 Read tool 读取 [`../wangxiaobao-shared/SKILL.md`](../wangxiaobao-shared/SKILL.md)(一份共享文档讲清安装 / 登录 / 选项目 / 错误码 / 输出协议等所有 xiaobao-cli 命令通用的前置约定)。
|
|
14
|
+
|
|
15
|
+
跑 `xiaobao-cli customer list` 查当前激活项目的客户画像列表。
|
|
59
16
|
零副作用,鼓励放心调用。
|
|
60
17
|
|
|
61
18
|
## 执行前必读
|
|
62
19
|
|
|
63
|
-
- 必须有有效 token:先调 `
|
|
64
|
-
-
|
|
20
|
+
- 必须有有效 token:先调 `xiaobao-cli auth whoami`;未登录就 `xiaobao-cli auth login`
|
|
21
|
+
- **必须有激活项目**:命令内部自动读,如果返回 `NO_ACTIVE_PROJECT` 就跑
|
|
65
22
|
`wangxiaobao-switch-project` skill
|
|
66
23
|
- **数据权限隔离**:后端按"当前用户授权可见的顾问范围"过滤(普通顾问看自己 /
|
|
67
24
|
团队长看团队 / 项目管理员看全项目)。当前用户无权访问的顾问名下客户**看不到**——
|
|
68
25
|
这不是 bug
|
|
69
|
-
- LocalDateTime 格式:`yyyy-MM-dd HH:mm:ss`(空格分隔),
|
|
26
|
+
- LocalDateTime 格式:`yyyy-MM-dd HH:mm:ss`(空格分隔),CLI 自动转 ISO
|
|
70
27
|
- **不要**写文件、出报告
|
|
71
28
|
|
|
72
29
|
---
|
|
73
30
|
|
|
74
31
|
## 快速索引:意图 → 工具
|
|
75
32
|
|
|
76
|
-
| 用户意图 |
|
|
33
|
+
| 用户意图 | 命令 | 关键参数 |
|
|
77
34
|
| ------------------------------ | -------------------------- | ---------------------------------- |
|
|
78
|
-
| 列全部客户(最近来访的在前) | `
|
|
79
|
-
| 看某顾问名下客户 | `
|
|
80
|
-
| 按客户画像找 | `
|
|
81
|
-
| 按客户姓名 / 手机号模糊 | `
|
|
82
|
-
| 按最后来访时间筛 | `
|
|
83
|
-
| 估算总数 | `
|
|
35
|
+
| 列全部客户(最近来访的在前) | `xiaobao-cli customer list` | `--page` / `--size` |
|
|
36
|
+
| 看某顾问名下客户 | `xiaobao-cli consultant list` → `xiaobao-cli customer list` | `--user-id <反查的 id>` |
|
|
37
|
+
| 按客户画像找 | `xiaobao-cli customer list` | `--portrait 高意向` 等 |
|
|
38
|
+
| 按客户姓名 / 手机号模糊 | `xiaobao-cli customer list` | `--customer-name` / `--customer-phone` |
|
|
39
|
+
| 按最后来访时间筛 | `xiaobao-cli customer list` | `--from` / `--to` |
|
|
40
|
+
| 估算总数 | `xiaobao-cli customer list` | `--page 1 --size 1`,只读 `total` |
|
|
84
41
|
|
|
85
42
|
---
|
|
86
43
|
|
|
@@ -91,9 +48,9 @@ description: |
|
|
|
91
48
|
用户说"张三的客户"——**不要**直接传 `userName: "张三"`(虽然支持但是 LIKE 模糊)。
|
|
92
49
|
正确做法:
|
|
93
50
|
|
|
94
|
-
1. 调 `
|
|
95
|
-
2. 找 `userName === "张三"` 的 `
|
|
96
|
-
3. 调 `
|
|
51
|
+
1. 调 `xiaobao-cli consultant list` 拿当前授权范围内的顾问列表
|
|
52
|
+
2. 找 `userName === "张三"` 的 `--user-id`
|
|
53
|
+
3. 调 `xiaobao-cli customer list { userId: <张三的 userId> }` 精确过滤
|
|
97
54
|
|
|
98
55
|
如果 list-consultants 里**找不到张三**——说明当前用户没权限看张三名下数据,
|
|
99
56
|
告诉用户"当前账号无权访问销售『张三』",不要再硬试。
|
|
@@ -102,8 +59,8 @@ description: |
|
|
|
102
59
|
|
|
103
60
|
后端在 `dynamic_tags` JSON 文本上 `LIKE '%xxx%'`。所以:
|
|
104
61
|
|
|
105
|
-
-
|
|
106
|
-
-
|
|
62
|
+
- `--portrait 高意向` 命中 `{"高意向客户":"高意向客户"}` / `{"AI意向判定":"高意向"}` 等
|
|
63
|
+
- `--portrait 价格` 命中 `{"抗性点":"价格"}` 等
|
|
107
64
|
- 不要传完整 JSON / key=value 形式(不支持,反而匹不到)
|
|
108
65
|
|
|
109
66
|
### 3. 时间窗:用户没明确说就推断
|
|
@@ -120,11 +77,11 @@ description: |
|
|
|
120
77
|
|
|
121
78
|
### 4. 分页:page 从 **1** 开始
|
|
122
79
|
|
|
123
|
-
PageParam 默认
|
|
80
|
+
PageParam 默认 `--page 1 --size 10`。传 `page: 0` 报错。`--size` 上限 500。
|
|
124
81
|
|
|
125
82
|
### 5. 响应外层
|
|
126
83
|
|
|
127
|
-
`
|
|
84
|
+
`xiaobao-cli customer list` 返回:
|
|
128
85
|
|
|
129
86
|
```jsonc
|
|
130
87
|
{
|
|
@@ -150,7 +107,7 @@ PageParam 默认 `page: 1, size: 10`。传 `page: 0` 报错。`size` 上限 500
|
|
|
150
107
|
}
|
|
151
108
|
```
|
|
152
109
|
|
|
153
|
-
|
|
110
|
+
CLI 又包一层 `{ status, ok, data }` —— 取数据用 `resp.data.data.content`。
|
|
154
111
|
|
|
155
112
|
---
|
|
156
113
|
|
|
@@ -158,8 +115,8 @@ plugin tool 又外包一层 `{ status, ok, data }` —— 取数据用 `resp.dat
|
|
|
158
115
|
|
|
159
116
|
### 场景 1:列我能看到的高意向客户
|
|
160
117
|
|
|
161
|
-
```
|
|
162
|
-
|
|
118
|
+
```bash
|
|
119
|
+
xiaobao-cli customer list --portrait 高意向 --page 1 --size 20
|
|
163
120
|
```
|
|
164
121
|
|
|
165
122
|
渲染:
|
|
@@ -173,31 +130,25 @@ plugin tool 又外包一层 `{ status, ok, data }` —— 取数据用 `resp.dat
|
|
|
173
130
|
|
|
174
131
|
### 场景 2:陈平名下的客户
|
|
175
132
|
|
|
176
|
-
```
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
// xiaobao_list_customers
|
|
184
|
-
{ "userId": 270078836362715136, "page": 1, "size": 20 }
|
|
133
|
+
```bash
|
|
134
|
+
# step 1: 反查陈平的 user-id
|
|
135
|
+
xiaobao-cli consultant list
|
|
136
|
+
|
|
137
|
+
# step 2: 假设找到陈平的 userId = 270078836362715136
|
|
138
|
+
# step 3: 用 --user-id 过滤
|
|
139
|
+
xiaobao-cli customer list --user-id 270078836362715136 --page 1 --size 20
|
|
185
140
|
```
|
|
186
141
|
|
|
187
142
|
### 场景 3:5 月来访的客户里抗性是价格的
|
|
188
143
|
|
|
189
|
-
```
|
|
190
|
-
|
|
191
|
-
"portrait": "价格",
|
|
192
|
-
"fromDate": "2026-05-01 00:00:00",
|
|
193
|
-
"toDate": "2026-06-01 00:00:00"
|
|
194
|
-
}
|
|
144
|
+
```bash
|
|
145
|
+
xiaobao-cli customer list --portrait 价格 --from "2026-05-01 00:00:00" --to "2026-06-01 00:00:00"
|
|
195
146
|
```
|
|
196
147
|
|
|
197
148
|
### 场景 4:估算总数
|
|
198
149
|
|
|
199
|
-
```
|
|
200
|
-
|
|
150
|
+
```bash
|
|
151
|
+
xiaobao-cli customer list --page 1 --size 1
|
|
201
152
|
```
|
|
202
153
|
|
|
203
154
|
回复:「当前授权范围下共 1247 位客户」。
|
|
@@ -207,7 +158,7 @@ plugin tool 又外包一层 `{ status, ok, data }` —— 取数据用 `resp.dat
|
|
|
207
158
|
## 常见错误与排查
|
|
208
159
|
|
|
209
160
|
- **`error: 'NO_ACTIVE_PROJECT'`** — 跑 `wangxiaobao-switch-project` skill
|
|
210
|
-
- **401 / token 过期** — 调 `
|
|
161
|
+
- **401 / token 过期** — 调 `xiaobao-cli auth login --force` 重登
|
|
211
162
|
- **`total: 0`** — 时间窗口 / 过滤条件没匹配到,**或**当前用户授权范围为空
|
|
212
163
|
(新人顾问刚入职 / 团队成员被移走等)
|
|
213
164
|
- **顾问名找不到** — 不在当前用户授权可见范围内;不要硬调 list_customers 试
|
|
@@ -1,89 +1,43 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: wangxiaobao-customer-resistance-query
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
value_str(详细说明) + text_fragment(录音原文片段)。
|
|
10
|
-
|
|
11
|
-
**当以下情况时使用此 Skill**:
|
|
12
|
-
(1) 用户问"客户抗性点"、"客户疑虑"、"客户反对"、"客户嫌"、"客户担心"、"不满意"
|
|
13
|
-
(2) 用户问某客户的抗性 —— 先调 `xiaobao_list_customers` 反查 customerId,
|
|
14
|
-
再调本 skill 带 customerIds 精确过滤
|
|
15
|
-
(3) 用户问某次到访 / 某条录音里的抗性 —— 带 visitIds / audioIds
|
|
16
|
-
(4) 用户按分类找 —— 价格抗性 / 户型抗性 / 地段抗性 等 → category 模糊
|
|
17
|
-
(5) 用户按二级分类找 —— "价格因素" / "位置因素" → classification 模糊
|
|
18
|
-
(6) 用户给时间窗 —— "5 月份的抗性" / "本周抗性" → fromDate / toDate
|
|
19
|
-
(7) 想看 **TOP 抗性原因** / 销售应该重点准备哪些应对话术
|
|
20
|
-
|
|
21
|
-
**不要用本 skill 的场景**:
|
|
22
|
-
- 用户问的是**关注点 / 兴趣点 / 客户偏好** → 走 `wangxiaobao-customer-focus-query`
|
|
23
|
-
- 用户要的是客户**画像** / 标签 → 走 `wangxiaobao-customer-query`
|
|
24
|
-
- 用户问"完整录音文本" → 走 `wangxiaobao-audio-query` + `xiaobao_get_audio_text`
|
|
3
|
+
version: 0.1.0
|
|
4
|
+
description: "旺小宝客户抗性点(resistance)分页查询 —— AI 在客户对话里抽出的客户疑虑 / 反对 / 不满标签(价格高 / 户型差 / 地段差 / 装修不满 等)。schema 与 focus 镜像,仅底层 MV 表不同。按 visit/customer/audio ID 列表 + 一级/二级分类模糊 + 来访时间窗组合过滤,排序固定 visit_time DESC。每条 tag 带 customer + userInfo + audio + value_str + text_fragment。只读、不写文件。高频命令: xiaobao-cli resistance list [--visit-ids a,b] [--customer-ids a,b] [--audio-ids a,b] [--category <kw>] [--classification <kw>] [--from <date>] [--to <date>] [--page N] [--size N]。何时用:用户问客户抗性/客户疑虑/客户反对/客户嫌/客户担心/不满意/价格抗性/户型抗性/地段抗性/TOP 抗性原因/销售应对话术;用户想看销售应该重点准备哪些应对话术。注:客户名→wang_id 先用 xiaobao-cli customer list 反查;问关注/兴趣/偏好走 focus-query;问完整录音文本走 audio-query。"
|
|
5
|
+
metadata:
|
|
6
|
+
requires:
|
|
7
|
+
bins: ["xiaobao-cli"]
|
|
8
|
+
cliHelp: "xiaobao-cli resistance --help"
|
|
25
9
|
---
|
|
26
10
|
|
|
27
|
-
> **Host-agnostic CLI skill** — 本 skill 假设 `xiaobao-cli` 已装到 PATH
|
|
28
|
-
> (`npm i -g @puyinkai/xiaobao-cli` 或 `npx -y @puyinkai/xiaobao-cli`)。
|
|
29
|
-
> Agent 通过 shell 工具(Bash / Run / Shell)执行命令、读 **stdout JSON** 消费;
|
|
30
|
-
> stderr 是进度/错误提示。退出码 0 = 成功,非 0 = 业务/网络错(错误对象同时打到 stdout 可解析)。
|
|
31
|
-
>
|
|
32
|
-
> CLI 14 个子命令跟 openclaw-xiaobao plugin 14 个 tool **1:1 等价**,返回 JSON
|
|
33
|
-
> 结构完全一致(`{status, ok, data: {...}}`)。skill 里看到的 `resp.data.data.xxx`
|
|
34
|
-
> 取数路径直接对 stdout JSON 用 `jq` / `JSON.parse` 即可。
|
|
35
|
-
>
|
|
36
|
-
> **plugin tool → CLI 命令翻译表(数组参数走逗号分隔)**:
|
|
37
|
-
>
|
|
38
|
-
> | plugin tool | CLI 命令 |
|
|
39
|
-
> | --- | --- |
|
|
40
|
-
> | `xiaobao_authorize { force? }` | `xiaobao-cli auth login [--force]` |
|
|
41
|
-
> | `xiaobao_whoami` | `xiaobao-cli auth whoami` |
|
|
42
|
-
> | `xiaobao_logout` | `xiaobao-cli auth logout` |
|
|
43
|
-
> | `xiaobao_list_projects { keyword? }` | `xiaobao-cli project list [--keyword <kw>]` |
|
|
44
|
-
> | `xiaobao_switch_project { tenantId, tenantName, projectId, projectName }` | `xiaobao-cli project use --tenant-id ... --tenant-name ... --project-id ... --project-name ...` |
|
|
45
|
-
> | `xiaobao_list_consultants` | `xiaobao-cli consultant list` |
|
|
46
|
-
> | `xiaobao_list_audio { fromDate, toDate, userId?, userIdList?, page, size }` | `xiaobao-cli audio list --from "..." --to "..." [--user-id ...] [--user-id-list a,b,c] [--page N] [--size N]` |
|
|
47
|
-
> | `xiaobao_get_audio_text { audioId }` | `xiaobao-cli audio text <audioId>` |
|
|
48
|
-
> | `xiaobao_list_customers { ... }` | `xiaobao-cli customer list [--user-id] [--user-name] [--customer-name] [--customer-phone] [--portrait] [--from] [--to] [--page] [--size]` |
|
|
49
|
-
> | `xiaobao_list_visits { ... }` | `xiaobao-cli visit list [--customer-id] [--customer-name] [--from] [--to] [--page] [--size]` |
|
|
50
|
-
> | `xiaobao_list_customer_focus { visitIds, customerIds, audioIds, category, classification, fromDate, toDate, ... }` | `xiaobao-cli focus list [--visit-ids a,b] [--customer-ids a,b] [--audio-ids a,b] [--category ...] [--classification ...] [--from ...] [--to ...]` |
|
|
51
|
-
> | `xiaobao_list_customer_resistance { ... }` | `xiaobao-cli resistance list [同 focus]` |
|
|
52
|
-
> | `xiaobao_quick_qa { prompt, threadId? }` | `xiaobao-cli qa "<prompt>" [--thread-id ...]` |
|
|
53
|
-
> | `xiaobao_api { method, path, query, body, headers }` | `xiaobao-cli api <METHOD> <PATH> [--query k=v] [--body '<json>'] [--headers k=v]` |
|
|
54
|
-
>
|
|
55
|
-
> 用 `--format toon` 切到 TOON(uniform 数组省 30-50% token,LLM 上下文优化);
|
|
56
|
-
> 用 `--format json`(默认)保持 JSON。state 路径:`~/.xiaobao/`(fallback 读 `~/.openclaw/state/wangxiaobao/`)。
|
|
57
|
-
|
|
58
|
-
|
|
59
11
|
# 旺小宝客户抗性点查询
|
|
60
12
|
|
|
61
|
-
|
|
13
|
+
> **CRITICAL** —— 跑命令前 MUST 先用 Read tool 读取 [`../wangxiaobao-shared/SKILL.md`](../wangxiaobao-shared/SKILL.md)(一份共享文档讲清安装 / 登录 / 选项目 / 错误码 / 输出协议等所有 xiaobao-cli 命令通用的前置约定)。
|
|
14
|
+
|
|
15
|
+
跑 `xiaobao-cli resistance list` 查 AI 抽出的客户抗性点标签。
|
|
62
16
|
跟关注点 skill 镜像,差别就是底层走 `mv_open_customer_resistance` 表 ——
|
|
63
17
|
**抗性 = 客户疑虑 / 反对 / 不满**(关注 = 客户主动表达的关心)。
|
|
64
18
|
|
|
65
19
|
## 执行前必读
|
|
66
20
|
|
|
67
|
-
- 必须有有效 token:先调 `
|
|
68
|
-
-
|
|
21
|
+
- 必须有有效 token:先调 `xiaobao-cli auth whoami`;未登录就 `xiaobao-cli auth login`
|
|
22
|
+
- **必须有激活项目**:命令内部自动读,缺失返回 `NO_ACTIVE_PROJECT`
|
|
69
23
|
- **数据权限隔离**:按当前用户授权可见顾问范围过滤(普通顾问看自己 /
|
|
70
24
|
团队长看团队 / 项目管理员看全项目)
|
|
71
|
-
- LocalDateTime 格式:`yyyy-MM-dd HH:mm:ss`(空格分隔),
|
|
25
|
+
- LocalDateTime 格式:`yyyy-MM-dd HH:mm:ss`(空格分隔),CLI 自动转
|
|
72
26
|
- **不要**写文件、出报告
|
|
73
27
|
|
|
74
28
|
---
|
|
75
29
|
|
|
76
30
|
## 快速索引:意图 → 工具
|
|
77
31
|
|
|
78
|
-
| 用户意图 |
|
|
32
|
+
| 用户意图 | 命令 | 关键参数 |
|
|
79
33
|
| ------------------------------------ | -------------------------------------- | ---------------------------------- |
|
|
80
|
-
| 列时段内全部抗性点 | `
|
|
81
|
-
| 看某客户的抗性 | `
|
|
82
|
-
| 看某次到访的抗性 | `
|
|
83
|
-
| 看某条录音的抗性 | `
|
|
84
|
-
| 按分类找(一级) | `
|
|
85
|
-
| 按分类找(二级) | `
|
|
86
|
-
| 估算总数 | `
|
|
34
|
+
| 列时段内全部抗性点 | `xiaobao-cli resistance list` | `--from` / `--to` |
|
|
35
|
+
| 看某客户的抗性 | `xiaobao-cli customer list` → `xiaobao-cli resistance list` | `--customer-ids <wang_id>` |
|
|
36
|
+
| 看某次到访的抗性 | `xiaobao-cli resistance list` | `--visit-ids <visit_id>` |
|
|
37
|
+
| 看某条录音的抗性 | `xiaobao-cli resistance list` | `--audio-ids <audio_id>` |
|
|
38
|
+
| 按分类找(一级) | `xiaobao-cli resistance list` | `--category 价格` 等 |
|
|
39
|
+
| 按分类找(二级) | `xiaobao-cli resistance list` | `--classification 价格因素` |
|
|
40
|
+
| 估算总数 | `xiaobao-cli resistance list` | `--page 1 --size 1`,只读 `total` |
|
|
87
41
|
|
|
88
42
|
---
|
|
89
43
|
|
|
@@ -91,8 +45,8 @@ description: |
|
|
|
91
45
|
|
|
92
46
|
### 1. 客户名 → wang_id 反查
|
|
93
47
|
|
|
94
|
-
用户说"屈哥的抗性"——先调 `
|
|
95
|
-
|
|
48
|
+
用户说"屈哥的抗性"——先调 `xiaobao-cli customer list { customerName: "屈哥" }` 拿到
|
|
49
|
+
`--customer-id`,再传 `--customer-ids` 数组。
|
|
96
50
|
|
|
97
51
|
### 2. 分类模糊:一级 + 二级二选一或同时用
|
|
98
52
|
|
|
@@ -153,7 +107,7 @@ classification 二级常见值:户型因素 / 价格因素 / 环境因素 / ..
|
|
|
153
107
|
### 6. TOP 抗性原因聚合
|
|
154
108
|
|
|
155
109
|
用户问"我们项目客户最大的抗性是什么"——拉一页 `size: 100`,agent 后处理按
|
|
156
|
-
|
|
110
|
+
`--category` 聚合输出:"5 月共 89 条抗性:价格因素 42 条(47%)/ 户型因素 23 条 /
|
|
157
111
|
环境因素 12 条 / ..."。
|
|
158
112
|
|
|
159
113
|
---
|
|
@@ -162,20 +116,16 @@ classification 二级常见值:户型因素 / 价格因素 / 环境因素 / ..
|
|
|
162
116
|
|
|
163
117
|
### 场景 1:本月客户最主要的抗性
|
|
164
118
|
|
|
165
|
-
```
|
|
166
|
-
|
|
167
|
-
"fromDate": "2026-05-01 00:00:00",
|
|
168
|
-
"toDate": "2026-06-01 00:00:00",
|
|
169
|
-
"page": 1, "size": 100
|
|
170
|
-
}
|
|
119
|
+
```bash
|
|
120
|
+
xiaobao-cli resistance list --from "2026-05-01 00:00:00" --to "2026-06-01 00:00:00" --page 1 --size 100
|
|
171
121
|
```
|
|
172
122
|
|
|
173
123
|
按 category 聚合 → "本月 89 条抗性中价格类占 47%,户型 26%,..."。
|
|
174
124
|
|
|
175
125
|
### 场景 2:价格抗性的具体说法
|
|
176
126
|
|
|
177
|
-
```
|
|
178
|
-
|
|
127
|
+
```bash
|
|
128
|
+
xiaobao-cli resistance list --category 价格 --page 1 --size 20
|
|
179
129
|
```
|
|
180
130
|
|
|
181
131
|
列出 20 条价格抗性原文,让 LLM 帮销售总结"客户主要嫌车位价高、楼层差价大、
|
|
@@ -183,18 +133,14 @@ classification 二级常见值:户型因素 / 价格因素 / 环境因素 / ..
|
|
|
183
133
|
|
|
184
134
|
### 场景 3:屈哥这次到访都嫌什么
|
|
185
135
|
|
|
186
|
-
```
|
|
187
|
-
|
|
136
|
+
```bash
|
|
137
|
+
xiaobao-cli resistance list --visit-ids 510395382098829312 --page 1 --size 50
|
|
188
138
|
```
|
|
189
139
|
|
|
190
140
|
### 场景 4:户型 + 时间窗组合
|
|
191
141
|
|
|
192
|
-
```
|
|
193
|
-
|
|
194
|
-
"category": "户型",
|
|
195
|
-
"fromDate": "2026-05-01 00:00:00",
|
|
196
|
-
"toDate": "2026-06-01 00:00:00"
|
|
197
|
-
}
|
|
142
|
+
```bash
|
|
143
|
+
xiaobao-cli resistance list --category 户型 --from "2026-05-01 00:00:00" --to "2026-06-01 00:00:00"
|
|
198
144
|
```
|
|
199
145
|
|
|
200
146
|
回复:"5 月户型抗性 23 条,主要集中在'房间小'(11)/'朝向不好'(5)/'楼间距'(4)..."。
|
|
@@ -204,7 +150,7 @@ classification 二级常见值:户型因素 / 价格因素 / 环境因素 / ..
|
|
|
204
150
|
## 常见错误与排查
|
|
205
151
|
|
|
206
152
|
- **`error: 'NO_ACTIVE_PROJECT'`** — 跑 `wangxiaobao-switch-project` skill
|
|
207
|
-
- **401 / token 过期** — 调 `
|
|
153
|
+
- **401 / token 过期** — 调 `xiaobao-cli auth login --force` 重登
|
|
208
154
|
- **`total: 0`** — 过滤条件没匹配 / 该时段没数据 / 当前用户授权范围内没匹配的接待顾问
|
|
209
155
|
- **抗性点 vs 关注点**:跟 LLM 强调"抗性"是负面(疑虑/反对),"关注"是中性偏正
|
|
210
156
|
(主动关心);用户说"嫌弃 / 担心 / 不满"走抗性,"在意 / 关心 / 偏好"走关注
|
|
@@ -1,71 +1,25 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: wangxiaobao-quick-qa
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
(1) 用户问客户相关数据 —— "今天来了几个客户"、"本周新增多少客户"、
|
|
10
|
-
"意向客户都有谁"、"老客户回访情况"
|
|
11
|
-
(2) 用户问来访数据 —— "今天到访多少组"、"上周末来访高峰是几点"、
|
|
12
|
-
"首访 / 复访比例"
|
|
13
|
-
(3) 用户问挖需 / 转化指标 —— "挖需率多少"、"成交转化率"、"意向客户占比"、
|
|
14
|
-
"客户分级分布"
|
|
15
|
-
(4) 用户问销售 / 销冠数据 —— "本月销冠是谁"、"张三这周成交几单"、
|
|
16
|
-
"销售排行榜"、"业绩 TOP3"
|
|
17
|
-
(5) 用户问录音 / 通话 / 接待数据 —— "录音覆盖率多少"、"哪些销售有几条录音"、
|
|
18
|
-
"本周通话时长 TOP5"、"未跟进客户有多少"
|
|
19
|
-
(6) 任何"问一句旺小宝数据"的开放式问题
|
|
20
|
-
|
|
21
|
-
**不要用本 skill 的场景**:
|
|
22
|
-
- 用户要的是录音元数据列表(如"列今天所有录音的 audioId") →
|
|
23
|
-
用 `wangxiaobao-audio-query` skill,更快更精确
|
|
24
|
-
- 用户要批量同步录音文本到 wiki → 用 `wangxiaobao-audio-wiki` skill
|
|
3
|
+
version: 0.1.0
|
|
4
|
+
description: "旺小宝业务数据问数(自然语言):用一句话问当前激活项目的客户 / 来访 / 挖需率 / 销冠 / 录音覆盖率 / 业务指标等开放式问题,AI 直接基于旺小宝数据回答。只读、无副作用、超时 30 分钟。多轮追问通过 --thread-id 续接。高频命令: xiaobao-cli qa '<prompt>' [--thread-id <id>]。何时用:用户问今天来了几个客户/本周新增多少客户/意向客户都有谁/老客户回访/今天到访多少组/首访 vs 复访比/挖需率/成交转化率/客户分级分布/本月销冠是谁/张三这周成交几单/销售排行榜/业绩 TOP3/录音覆盖率/哪些销售有几条录音/本周通话时长 TOP5/未跟进客户有多少;任何问一句旺小宝业务数据的开放式问题。注:要列录音元数据走 audio-query 更快;批量同步录音文本到 wiki 走 audio-wiki。"
|
|
5
|
+
metadata:
|
|
6
|
+
requires:
|
|
7
|
+
bins: ["xiaobao-cli"]
|
|
8
|
+
cliHelp: "xiaobao-cli qa --help"
|
|
25
9
|
---
|
|
26
10
|
|
|
27
|
-
> **Host-agnostic CLI skill** — 本 skill 假设 `xiaobao-cli` 已装到 PATH
|
|
28
|
-
> (`npm i -g @puyinkai/xiaobao-cli` 或 `npx -y @puyinkai/xiaobao-cli`)。
|
|
29
|
-
> Agent 通过 shell 工具(Bash / Run / Shell)执行命令、读 **stdout JSON** 消费;
|
|
30
|
-
> stderr 是进度/错误提示。退出码 0 = 成功,非 0 = 业务/网络错(错误对象同时打到 stdout 可解析)。
|
|
31
|
-
>
|
|
32
|
-
> CLI 14 个子命令跟 openclaw-xiaobao plugin 14 个 tool **1:1 等价**,返回 JSON
|
|
33
|
-
> 结构完全一致(`{status, ok, data: {...}}`)。skill 里看到的 `resp.data.data.xxx`
|
|
34
|
-
> 取数路径直接对 stdout JSON 用 `jq` / `JSON.parse` 即可。
|
|
35
|
-
>
|
|
36
|
-
> **plugin tool → CLI 命令翻译表(数组参数走逗号分隔)**:
|
|
37
|
-
>
|
|
38
|
-
> | plugin tool | CLI 命令 |
|
|
39
|
-
> | --- | --- |
|
|
40
|
-
> | `xiaobao_authorize { force? }` | `xiaobao-cli auth login [--force]` |
|
|
41
|
-
> | `xiaobao_whoami` | `xiaobao-cli auth whoami` |
|
|
42
|
-
> | `xiaobao_logout` | `xiaobao-cli auth logout` |
|
|
43
|
-
> | `xiaobao_list_projects { keyword? }` | `xiaobao-cli project list [--keyword <kw>]` |
|
|
44
|
-
> | `xiaobao_switch_project { tenantId, tenantName, projectId, projectName }` | `xiaobao-cli project use --tenant-id ... --tenant-name ... --project-id ... --project-name ...` |
|
|
45
|
-
> | `xiaobao_list_consultants` | `xiaobao-cli consultant list` |
|
|
46
|
-
> | `xiaobao_list_audio { fromDate, toDate, userId?, userIdList?, page, size }` | `xiaobao-cli audio list --from "..." --to "..." [--user-id ...] [--user-id-list a,b,c] [--page N] [--size N]` |
|
|
47
|
-
> | `xiaobao_get_audio_text { audioId }` | `xiaobao-cli audio text <audioId>` |
|
|
48
|
-
> | `xiaobao_list_customers { ... }` | `xiaobao-cli customer list [--user-id] [--user-name] [--customer-name] [--customer-phone] [--portrait] [--from] [--to] [--page] [--size]` |
|
|
49
|
-
> | `xiaobao_list_visits { ... }` | `xiaobao-cli visit list [--customer-id] [--customer-name] [--from] [--to] [--page] [--size]` |
|
|
50
|
-
> | `xiaobao_list_customer_focus { visitIds, customerIds, audioIds, category, classification, fromDate, toDate, ... }` | `xiaobao-cli focus list [--visit-ids a,b] [--customer-ids a,b] [--audio-ids a,b] [--category ...] [--classification ...] [--from ...] [--to ...]` |
|
|
51
|
-
> | `xiaobao_list_customer_resistance { ... }` | `xiaobao-cli resistance list [同 focus]` |
|
|
52
|
-
> | `xiaobao_quick_qa { prompt, threadId? }` | `xiaobao-cli qa "<prompt>" [--thread-id ...]` |
|
|
53
|
-
> | `xiaobao_api { method, path, query, body, headers }` | `xiaobao-cli api <METHOD> <PATH> [--query k=v] [--body '<json>'] [--headers k=v]` |
|
|
54
|
-
>
|
|
55
|
-
> 用 `--format toon` 切到 TOON(uniform 数组省 30-50% token,LLM 上下文优化);
|
|
56
|
-
> 用 `--format json`(默认)保持 JSON。state 路径:`~/.xiaobao/`(fallback 读 `~/.openclaw/state/wangxiaobao/`)。
|
|
57
|
-
|
|
58
|
-
|
|
59
11
|
# 旺小宝问数
|
|
60
12
|
|
|
61
|
-
|
|
13
|
+
> **CRITICAL** —— 跑命令前 MUST 先用 Read tool 读取 [`../wangxiaobao-shared/SKILL.md`](../wangxiaobao-shared/SKILL.md)(一份共享文档讲清安装 / 登录 / 选项目 / 错误码 / 输出协议等所有 xiaobao-cli 命令通用的前置约定)。
|
|
14
|
+
|
|
15
|
+
跑 `xiaobao-cli qa` 用自然语言问当前激活项目的业务数据。
|
|
62
16
|
零副作用,不写文件、不动 wiki,所以用错也没成本,鼓励放心调用。
|
|
63
17
|
|
|
64
18
|
## 执行前必读
|
|
65
19
|
|
|
66
|
-
- 必须有有效 token:先调 `
|
|
67
|
-
-
|
|
68
|
-
调用方**不要传** tenant/project 参数。如果
|
|
20
|
+
- 必须有有效 token:先调 `xiaobao-cli auth whoami`;未登录 / 过期就调 `xiaobao-cli auth login`
|
|
21
|
+
- **必须有激活项目**:命令内部自动从激活项目状态读 tenant/project,
|
|
22
|
+
调用方**不要传** tenant/project 参数。如果 命令 返回
|
|
69
23
|
`error: 'NO_ACTIVE_PROJECT'`,让用户跑 `wangxiaobao-switch-project` skill
|
|
70
24
|
后再重试
|
|
71
25
|
- **绝不要**写文件。即使用户随口说"顺便存一下"也要拦——告诉用户"出长报告
|
|
@@ -75,11 +29,11 @@ description: |
|
|
|
75
29
|
|
|
76
30
|
## 快速索引:意图 → 工具
|
|
77
31
|
|
|
78
|
-
| 用户意图 |
|
|
32
|
+
| 用户意图 | 命令 | 关键参数 |
|
|
79
33
|
| ---------------------------------- | ------------------ | ------------------------------------- |
|
|
80
|
-
| 单轮问数 | `
|
|
81
|
-
| 接着上一轮继续追问 | `
|
|
82
|
-
| 给问题加上下文(如客户 ID 列表) | `
|
|
34
|
+
| 单轮问数 | `xiaobao-cli qa` | `prompt` |
|
|
35
|
+
| 接着上一轮继续追问 | `xiaobao-cli qa` | `prompt + threadId` |
|
|
36
|
+
| 给问题加上下文(如客户 ID 列表) | `xiaobao-cli qa` | `prompt + context: {...}` |
|
|
83
37
|
|
|
84
38
|
---
|
|
85
39
|
|
|
@@ -87,7 +41,7 @@ description: |
|
|
|
87
41
|
|
|
88
42
|
### 1. 用业务语言问,不要追问 ID
|
|
89
43
|
|
|
90
|
-
用户问"张三本周成交几单"——直接把 prompt 原样传给
|
|
44
|
+
用户问"张三本周成交几单"——直接把 prompt 原样传给 命令,**不要**先去查
|
|
91
45
|
张三的 user-id 再拼参数。后端 AI 知道"张三"在当前项目里就是谁。
|
|
92
46
|
|
|
93
47
|
如果用户问的是开放性问题("客户主要疑虑是啥"),更不要画蛇添足拼任何
|
|
@@ -95,15 +49,15 @@ ID / 时间窗口——AI 会自己定义合理范围。
|
|
|
95
49
|
|
|
96
50
|
### 2. 多轮:threadId 由 agent 自己接续
|
|
97
51
|
|
|
98
|
-
第一轮**不传**
|
|
99
|
-
**记在 agent 当前对话上下文里**,后续追问把它原样传回 `
|
|
52
|
+
第一轮**不传** `--thread-id`,走单轮模式。响应里有 `resp.data.data.thread_id`,
|
|
53
|
+
**记在 agent 当前对话上下文里**,后续追问把它原样传回 `--thread-id` 入参。
|
|
100
54
|
**不要**把 thread_id 写到任何文件 / .env / 状态——它只是会话短期记忆。
|
|
101
55
|
|
|
102
56
|
跨 session(用户关了 chat)就**不再延续**,新 session 重新发起新一轮即可。
|
|
103
57
|
|
|
104
58
|
### 3. 响应只取 answer 给用户
|
|
105
59
|
|
|
106
|
-
`
|
|
60
|
+
`xiaobao-cli qa` 返回结构:
|
|
107
61
|
|
|
108
62
|
```jsonc
|
|
109
63
|
{
|
|
@@ -118,7 +72,7 @@ ID / 时间窗口——AI 会自己定义合理范围。
|
|
|
118
72
|
}
|
|
119
73
|
```
|
|
120
74
|
|
|
121
|
-
|
|
75
|
+
CLI 又把上面塞进 `{ status, ok, data }` 外包:拿最终文本写
|
|
122
76
|
`resp.data.data.answer`,渲染给用户**只展示 answer**。
|
|
123
77
|
|
|
124
78
|
如果要支持后续追问,结尾加一句"💡 想接着问可以告诉我,会沿用本次对话上下文"
|
|
@@ -127,7 +81,7 @@ plugin tool 又把上面塞进 `{ status, ok, data }` 外包:拿最终文本
|
|
|
127
81
|
### 4. 不要拉太多上下文进 context
|
|
128
82
|
|
|
129
83
|
`context` 字段可以塞额外背景,但**控制在 < 4KB**。需要塞大块录音 / 客户
|
|
130
|
-
档案的需求暂时没有
|
|
84
|
+
档案的需求暂时没有 CLI 侧支持——用户可以分多轮 prompt 喂,每轮塞一段。
|
|
131
85
|
|
|
132
86
|
### 5. 不要替代 audio-query 做"列录音元数据"
|
|
133
87
|
|
|
@@ -141,9 +95,8 @@ plugin tool 又把上面塞进 `{ status, ok, data }` 外包:拿最终文本
|
|
|
141
95
|
|
|
142
96
|
### 场景 1:问客户来访
|
|
143
97
|
|
|
144
|
-
```
|
|
145
|
-
|
|
146
|
-
{ "prompt": "今天到访了多少组客户,里面有几组是首访?" }
|
|
98
|
+
```bash
|
|
99
|
+
xiaobao-cli qa "今天到访了多少组客户,里面有几组是首访?"
|
|
147
100
|
```
|
|
148
101
|
|
|
149
102
|
渲染:
|
|
@@ -158,8 +111,8 @@ plugin tool 又把上面塞进 `{ status, ok, data }` 外包:拿最终文本
|
|
|
158
111
|
|
|
159
112
|
### 场景 2:问销冠
|
|
160
113
|
|
|
161
|
-
```
|
|
162
|
-
|
|
114
|
+
```bash
|
|
115
|
+
xiaobao-cli qa "本月销冠是谁,业绩多少?"
|
|
163
116
|
```
|
|
164
117
|
|
|
165
118
|
渲染:
|
|
@@ -172,8 +125,8 @@ plugin tool 又把上面塞进 `{ status, ok, data }` 外包:拿最终文本
|
|
|
172
125
|
|
|
173
126
|
### 场景 3:问录音覆盖率
|
|
174
127
|
|
|
175
|
-
```
|
|
176
|
-
|
|
128
|
+
```bash
|
|
129
|
+
xiaobao-cli qa "本周录音覆盖率怎么样?哪些销售覆盖低?"
|
|
177
130
|
```
|
|
178
131
|
|
|
179
132
|
渲染:
|
|
@@ -191,25 +144,21 @@ plugin tool 又把上面塞进 `{ status, ok, data }` 外包:拿最终文本
|
|
|
191
144
|
用户:"那张三跟客户讲到学区时通常怎么应对?"
|
|
192
145
|
(接着上一轮 ——agent 自己存了 threadId)
|
|
193
146
|
|
|
194
|
-
```
|
|
195
|
-
|
|
196
|
-
"prompt": "那张三跟客户讲到学区时通常怎么应对?",
|
|
197
|
-
"threadId": "<上一轮 resp.data.data.thread_id>"
|
|
198
|
-
}
|
|
147
|
+
```bash
|
|
148
|
+
xiaobao-cli qa "那张三跟客户讲到学区时通常怎么应对?" --thread-id "<上一轮 resp.data.data.thread_id>"
|
|
199
149
|
```
|
|
200
150
|
|
|
201
|
-
### 场景 5:带额外 context
|
|
151
|
+
### 场景 5:带额外 context(v0.1.x 暂不支持)
|
|
202
152
|
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
"recent_audio_ids": [9001, 9023, 9045]
|
|
209
|
-
}
|
|
210
|
-
}
|
|
153
|
+
CLI 当前只暴露 `--thread-id`,不支持 `--context` JSON 入参。要给 AI 喂上下文,
|
|
154
|
+
**把上下文直接写进 prompt** 即可:
|
|
155
|
+
|
|
156
|
+
```bash
|
|
157
|
+
xiaobao-cli qa "评估一下客户 12345 的成交概率,相关录音 audioId: 9001, 9023, 9045"
|
|
211
158
|
```
|
|
212
159
|
|
|
160
|
+
后端 AI 会从 prompt 文本里识别 customer_id / audio 引用。
|
|
161
|
+
|
|
213
162
|
---
|
|
214
163
|
|
|
215
164
|
## 典型问数关键词参考
|
|
@@ -229,10 +178,10 @@ plugin tool 又把上面塞进 `{ status, ok, data }` 外包:拿最终文本
|
|
|
229
178
|
|
|
230
179
|
- **`error: 'NO_ACTIVE_PROJECT'`** — 还没设过激活项目 → 跑
|
|
231
180
|
`wangxiaobao-switch-project` skill 后重试
|
|
232
|
-
- **401 / token 过期** — 调 `
|
|
233
|
-
- **响应耗时 > 30 分钟** — 后端慢到打满
|
|
181
|
+
- **401 / token 过期** — 调 `xiaobao-cli auth login --force` 重登,重试一次
|
|
182
|
+
- **响应耗时 > 30 分钟** — 后端慢到打满 CLI timeout → 告诉用户"上游慢,稍后重试"
|
|
234
183
|
- **answer 为空** — 上游这一轮没产出最终文本 → 让用户换个 prompt 重试
|
|
235
|
-
- **用户想"批量出报告"** — 拦住:本期
|
|
184
|
+
- **用户想"批量出报告"** — 拦住:本期 CLI 没有报告生成 skill,
|
|
236
185
|
解释"出长报告的功能在做异步化改造,下期发布"
|
|
237
186
|
- **用户问"列录音元数据 / audioId 是多少"** — 切到
|
|
238
187
|
`wangxiaobao-audio-query` skill,那个走元数据 API 更精确
|