@yixinkj/inquiry-opening-coach-cli 0.3.8 → 0.3.10
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.json +10 -0
- package/index.js +5 -11
- package/package.json +1 -1
- package/skill/SKILL.md +30 -295
- package/skills.json +2 -2
package/changelog.json
CHANGED
|
@@ -2,6 +2,16 @@
|
|
|
2
2
|
"//": "随包发布的更新日志。启动器用它决定「这次更新要不要打断调用方」,并把 summary 打给模型看(只写 stderr,不要求转述给终端用户)。",
|
|
3
3
|
"//impact": "output = 只影响怎么读结果,本次命令仍然有效,照常执行;invocation = 影响怎么发命令,调用方手上那条命令可能已经失效,必须停下重读。缺省和写坏一律按 invocation 处理。发版时填不出 summary,多半说明这次压根不该动 SKILL.md 正文。",
|
|
4
4
|
"entries": [
|
|
5
|
+
{
|
|
6
|
+
"version": "0.3.10",
|
|
7
|
+
"impact": "invocation",
|
|
8
|
+
"summary": "修 0.3.9:说明文档里还留着已删除的召回筛选参数,照着它执行会在召回那一步直接报错。已改正。"
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"version": "0.3.9",
|
|
12
|
+
"impact": "invocation",
|
|
13
|
+
"summary": "记忆库那套写入、归纳、分区的命令整体移除,开场白只读取素材不再自己沉淀;生成后不需要再执行任何记录命令。素材写入将由后续的成交客户沉淀 Skill 负责。"
|
|
14
|
+
},
|
|
5
15
|
{
|
|
6
16
|
"version": "0.3.8",
|
|
7
17
|
"impact": "output",
|
package/index.js
CHANGED
|
@@ -80,8 +80,8 @@ const fail = core.createFailHandler({ logPrefix: SKILL_ID });
|
|
|
80
80
|
|
|
81
81
|
const emitStatus = core.createStatusEmitter({ skillVersion: SKILL_VERSION });
|
|
82
82
|
|
|
83
|
-
// 本仓把「不带任何参数」当作帮助请求。理由:这个 CLI 是子命令式的(
|
|
84
|
-
//
|
|
83
|
+
// 本仓把「不带任何参数」当作帮助请求。理由:这个 CLI 是子命令式的(fetch / recall /
|
|
84
|
+
// validate …),没有任何可用的默认动作,裸调一次的唯一合理产物就是命令面。
|
|
85
85
|
// 而帮助必须在 Skill OTA 和运行时下载之前返回——若判成「不是帮助」,裸调会先跑一遍
|
|
86
86
|
// Skill 发现、再下载几十兆运行时,最后只为让 clap 打印一句 usage 错误。
|
|
87
87
|
// 这个值必须显式写出来:public-customer-reactivation 的答案是相反的,内核因此不给默认值。
|
|
@@ -197,7 +197,7 @@ const discoverLegacySkillPaths = (homeDir = os.homedir()) =>
|
|
|
197
197
|
// 'restart_required' 只是为了不在迁移里顺手改掉既有行为,本仓没有这个包袱,
|
|
198
198
|
// 直接取正确的那个语义。
|
|
199
199
|
//
|
|
200
|
-
// 而且本 Skill
|
|
200
|
+
// 而且本 Skill 一轮对话里要多次调 CLI(fetch → recall → validate)。
|
|
201
201
|
// 'restart_required' 给出的是含糊的「已更新,请重新试一次」,可缺的明明是参数不是同步,
|
|
202
202
|
// 正好会诱导调用方原样重跑——重试一万次也不会成功,而且是每条命令都重试一遍。
|
|
203
203
|
const resolveSkillGate = (skillPath, { homeDir = os.homedir(), syncOptions = {} } = {}) =>
|
|
@@ -403,19 +403,13 @@ function printHelp() {
|
|
|
403
403
|
子命令:
|
|
404
404
|
fetch --detail-url <URL> 从询盘详情页只读抓取买家国家、需求卡片和买家原话
|
|
405
405
|
可加 --from-scan <FILE> 接住哨兵已取到的卡片,省掉一次开页
|
|
406
|
-
recall
|
|
406
|
+
recall 读出业务档案与历史素材,全部返回,不排序不裁剪
|
|
407
407
|
validate --file <FILE> 校验三套开场白并渲染 Markdown(--inquiry-id 用于记账,勿省)
|
|
408
|
-
retain 写入一条记忆(--type fact|experience|directive|model,--source 必填)
|
|
409
|
-
outcome --id <ID> 为一条经验补记真实结果,使其可作为归纳证据
|
|
410
|
-
reflect 列出已有结果、尚未归纳的经验
|
|
411
|
-
memory list|get|update 查看与修改已有记忆
|
|
412
|
-
forget --id <ID> 永久删除一条记忆
|
|
413
408
|
profile show|save 读取或保存业务档案
|
|
414
|
-
bank list|create|use 管理记忆库分区(任意命令可用 --bank 临时指定)
|
|
415
409
|
self-check 本地结构与运行时自检
|
|
416
410
|
|
|
417
411
|
环境变量:
|
|
418
|
-
INQUIRY_OPENING_COACH_DATA_DIR
|
|
412
|
+
INQUIRY_OPENING_COACH_DATA_DIR 数据目录,默认 ~/.yixin/${SKILL_ID}/
|
|
419
413
|
|
|
420
414
|
本 Skill 抓取端只读:只读取询盘详情页,不发送任何消息、不修改任何页面状态。
|
|
421
415
|
`);
|
package/package.json
CHANGED
package/skill/SKILL.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: create-inquiry-openers
|
|
3
|
-
description:
|
|
4
|
-
version: "0.3.
|
|
3
|
+
description: 为阿里巴巴国际站业务员创作新询盘的首次响应(英文开场白),可直接从询盘详情页读取买家国家、需求卡片和买家原话,也可由用户口述信息生成;结合本机业务档案与历史素材,固定生成热情自然、幽默记忆、专业创意三种版本,并用纯 Rust CLI 做词数与署名门禁校验。也维护业务档案(署名、公司、主营产品、产品优势、个人记忆点)。Use when 用户给出询盘详情页链接、要求给某条新询盘写第一次回复、要求批量处理首响待办清单或看看有哪些新询盘要回、提到询盘开场白、客户第一句话、开发信开头、根据客户国家和产品写英文开场、修改或优化三套开场白;也 use when 用户要看或修改自己的业务档案、公司英文名、署名、主营产品。
|
|
4
|
+
version: "0.3.10"
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# 询盘开场白创意教练
|
|
@@ -129,8 +129,6 @@ Hi William, I'm [Your Name] from ... (推荐版英文全文,原样照抄,
|
|
|
129
129
|
另有「热情自然」「幽默记忆」两版,要看说一声。
|
|
130
130
|
|
|
131
131
|
(下一条询盘同样格式)
|
|
132
|
-
|
|
133
|
-
发出哪一版后告诉我,我补记结果——这条经验才能进归纳队列。
|
|
134
132
|
```
|
|
135
133
|
|
|
136
134
|
几条硬规则:
|
|
@@ -203,14 +201,10 @@ CLI 内部已经等过了——`bridge_offline` 是在轮询共享桥 45 秒之
|
|
|
203
201
|
```bash
|
|
204
202
|
npx -y @yixinkj/inquiry-opening-coach-cli@latest \
|
|
205
203
|
--skill-path "本次实际读取的 SKILL.md 绝对路径" \
|
|
206
|
-
recall
|
|
207
|
-
--country <国家> \
|
|
208
|
-
--product <产品> \
|
|
209
|
-
--query <客户需求或补充关键词> \
|
|
210
|
-
--json
|
|
204
|
+
recall --json
|
|
211
205
|
```
|
|
212
206
|
|
|
213
|
-
|
|
207
|
+
`recall` 没有筛选参数。它把库里的素材全部返回,相关不相关由你判断。
|
|
214
208
|
|
|
215
209
|
3. 拿到 `recall` 结果后立即创作。除了 `fetch` 那一次只读抓取,不再打开任何页面,也不等待或轮询任何状态。
|
|
216
210
|
4. 只有产品和国家都缺失时,才用一句简短问题询问:
|
|
@@ -224,20 +218,17 @@ npx -y @yixinkj/inquiry-opening-coach-cli@latest \
|
|
|
224
218
|
|
|
225
219
|
## 怎么读 recall 的输出
|
|
226
220
|
|
|
227
|
-
`recall`
|
|
228
|
-
|
|
229
|
-
- **`directives`** —— 行为约束,**全部必须遵守**,与本次询盘是否相关无关。按 `priority` 从高到低,冲突时高优先级胜出。
|
|
230
|
-
- **`memories` 中 `type` 为 `model`** —— 从历史经验归纳出的规律,可信度高于单条经验,优先参考。
|
|
231
|
-
- **`memories` 中 `type` 为 `fact`** —— 只能作为**已确认事实**使用,不得推演、不得夸大。
|
|
232
|
-
- **`memories` 中 `type` 为 `experience`** —— 只借鉴表达方式和有效角度,**不要复制其中属于其他客户的具体事实**(数量、价格、项目细节)。
|
|
233
|
-
|
|
234
|
-
关于 `matchScore`:它只决定排序位置,**不是相关性判断**。分数低不代表不该用,分数高不代表必须用——相关性由你自己判断。低分记忆经常是有用的通用素材。
|
|
221
|
+
`recall` 把库里的素材**全部原样返回**,不排序也不裁剪。相关不相关由你判断——本地字符串
|
|
222
|
+
匹配在中英混排下只会漏,而你看得到内容。
|
|
235
223
|
|
|
236
|
-
|
|
224
|
+
- **`memories`** —— 历史素材。只借鉴表达方式和有效角度,**不要复制其中属于其他客户的
|
|
225
|
+
具体事实**(数量、价格、项目细节)。素材与本次询盘冲突时,以本次明确资料为准。
|
|
226
|
+
- **`profile`** —— 业务档案,见下面「档案缺了就去问」。
|
|
227
|
+
- **`constraints`** —— 本次产出的硬要求(三个版本、英文 40–80 词、三种风格)。
|
|
237
228
|
|
|
238
|
-
|
|
229
|
+
冲突时的优先级:本次用户明确要求和客户原始询盘 > 历史素材 > 本 Skill 的通用规则。
|
|
239
230
|
|
|
240
|
-
|
|
231
|
+
素材目前由专门沉淀成交客户的 Skill 写入。库是空的很正常,照常创作,不要因此中断。
|
|
241
232
|
|
|
242
233
|
### 档案缺了就去问
|
|
243
234
|
|
|
@@ -265,9 +256,8 @@ npx -y @yixinkj/inquiry-opening-coach-cli@latest \
|
|
|
265
256
|
|
|
266
257
|
没有 `profile set` 这个子命令,`profile` 只有 `show` 和 `save` 两个。
|
|
267
258
|
|
|
268
|
-
`
|
|
269
|
-
|
|
270
|
-
`warnings` 非空表示 `memories.jsonl` 有行损坏、已被跳过。**照常完成本次生成**,交付结果后再用一句话提醒用户哪一行需要修——此时写入类命令会失败,所以生成后的经验沉淀这次会跳过,不要反复重试。
|
|
259
|
+
`warnings` 非空表示 `memories.jsonl` 有行损坏、已被跳过。**照常完成本次生成**,交付结果后
|
|
260
|
+
再用一句话提醒用户哪一行需要修。
|
|
271
261
|
|
|
272
262
|
## 沟通风格
|
|
273
263
|
|
|
@@ -336,242 +326,9 @@ npx -y @yixinkj/inquiry-opening-coach-cli@latest \
|
|
|
336
326
|
|
|
337
327
|
**校验通过后删掉这个临时文件。** 它已经没有用处,而里面是客户资料。
|
|
338
328
|
|
|
339
|
-
##
|
|
340
|
-
|
|
341
|
-
`validate` 通过、最终回复已经准备好之后,**在发出最终回复之前**调用一次(发出回复后就没有机会再调用工具了):
|
|
342
|
-
|
|
343
|
-
```bash
|
|
344
|
-
npx -y @yixinkj/inquiry-opening-coach-cli@latest \
|
|
345
|
-
--skill-path "本次实际读取的 SKILL.md 绝对路径" \
|
|
346
|
-
retain \
|
|
347
|
-
--type experience \
|
|
348
|
-
--source agent \
|
|
349
|
-
--title "<国家>/<产品>" \
|
|
350
|
-
--content "<本次客户情境、采用的风格、切入角度>" \
|
|
351
|
-
--tags "<国家代码>,<英文品类>,<中文品类>" \
|
|
352
|
-
--json
|
|
353
|
-
```
|
|
354
|
-
|
|
355
|
-
标签口径与「管理记忆库 › 写入」完全一致:国家用 ISO 短代码(`US`、`DE`、`JP`),品类中英文各写一份,这样无论下次询盘用哪种语言描述都能命中。
|
|
356
|
-
|
|
357
|
-
**沉淀失败不得阻断交付。** 记忆库有坏行时写入会被拒绝,此时照常发出开场白,并在回复末尾提一句本次未能记录。不要为此重试或改写文案。
|
|
358
|
-
|
|
359
|
-
从询盘页来的,`--tags` 里带上询盘号,这样后续补记结果时能对上:
|
|
360
|
-
|
|
361
|
-
```text
|
|
362
|
-
--tags "<国家代码>,<英文品类>,<中文品类>,<询盘号>"
|
|
363
|
-
```
|
|
364
|
-
|
|
365
|
-
沉淀规则:
|
|
366
|
-
|
|
367
|
-
- **只记录客观发生的事**:面向哪个国家、什么产品品类、用了什么风格和切入角度。
|
|
368
|
-
- **`title` 和 `content` 里不得出现买家姓名、公司名、数量、单价、金额、交期,也不得出现需求原文或它的转述。** 询盘号只能出现在 `--tags` 里。
|
|
369
|
-
- **不要**写入你对客户偏好的推测。这条记录只能证明"你选了什么",不能证明"客户喜欢什么"。
|
|
370
|
-
- **不要**把产品能力写成 `experience`——那属于 `fact`,必须由用户确认。CLI 会拒绝 `--type fact --source agent`,也会拒绝省略 `--source`,不要尝试绕过。
|
|
329
|
+
## 业务档案
|
|
371
330
|
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
```text
|
|
375
|
-
✗ 德国客户询价 500 个可回收自立袋,用 professional-creative 接住了数量和材质
|
|
376
|
-
✓ DE/自立袋:用 professional-creative 开场,先接住卡片里的规格再提一个推进性问题
|
|
377
|
-
```
|
|
378
|
-
|
|
379
|
-
反例里的「500 个」是这一单的一次性事实,留在库里既没有复用价值,又把客户信息带进了长期记忆。归纳规律靠的是「哪种开场角度有效」,不是「上次卖了多少个」。
|
|
380
|
-
|
|
381
|
-
## 拿到真实结果时补记
|
|
382
|
-
|
|
383
|
-
上面写入的只是一次**尝试**(attempt),它不会进入归纳队列。只有当用户告诉你他实际用了哪个版本、或客户有了反应,才补记结果:
|
|
384
|
-
|
|
385
|
-
```bash
|
|
386
|
-
npx -y @yixinkj/inquiry-opening-coach-cli@latest \
|
|
387
|
-
--skill-path "本次实际读取的 SKILL.md 绝对路径" \
|
|
388
|
-
outcome --id <经验id> \
|
|
389
|
-
--selected <warm-natural|humorous-memorable|professional-creative> \
|
|
390
|
-
--response "<客户的真实反应>" \
|
|
391
|
-
--json
|
|
392
|
-
```
|
|
393
|
-
|
|
394
|
-
补记之后这条经验才能作为归纳证据。
|
|
395
|
-
|
|
396
|
-
**这个区分不能省。** 一次生成只能证明你选了什么风格,不能证明客户偏好什么风格。把没有结果的尝试拿去归纳,会得到自我强化的结论——你判断德国客户偏专业,于是记录了专业,于是归纳出"德国客户偏专业",于是下次更倾向专业。CLI 会拒绝把无结果的经验用作 model 证据。
|
|
397
|
-
|
|
398
|
-
用户说"这次用第二版发出去了"或"客户回复了"时,主动补记,不用等他要求。
|
|
399
|
-
|
|
400
|
-
## 管理记忆库
|
|
401
|
-
|
|
402
|
-
以上是「写这一条询盘」;这一节是「维护写作时被召回的那些长期资料」。用户说记住这个、保存公司资料、设置禁止承诺、整理记忆库或归纳历史经验时走这里。
|
|
403
|
-
|
|
404
|
-
没有工作台,也没有网页。所有管理操作都通过 CLI 完成。
|
|
405
|
-
|
|
406
|
-
### 这一节的边界
|
|
407
|
-
|
|
408
|
-
- 这一节只管理长期资料,不收集本次客户询盘,也不生成文案;普通询盘创作走上面的「生成流程」。
|
|
409
|
-
- 图片、PDF 和 Word 由当前宿主直接读取;只有用户明确要求长期保存时才写入记忆库。
|
|
410
|
-
- 所有事实和约束必须来自用户资料,**不得推断或补造**。
|
|
411
|
-
|
|
412
|
-
### 四条记忆通路
|
|
413
|
-
|
|
414
|
-
| 通路 | 装什么 | 谁能写 |
|
|
415
|
-
|---|---|---|
|
|
416
|
-
| `fact` | 客观可验证的公司与产品事实:产品线、材料与袋型能力、认证、FAQ 的真实答复依据 | 只能 `--source user` |
|
|
417
|
-
| `experience` | 实际发生过的询盘经历:面向哪个国家、什么产品、用了什么风格 | `user` 或 `agent` |
|
|
418
|
-
| `directive` | 行为约束:禁止承诺、合规限制、表达边界、沟通风格偏好 | 只能 `--source user` |
|
|
419
|
-
| `model` | 从多条经验归纳出的规律 | 只能 `--source reflect`,且 `--evidence` 至少 2 条有结果的 experience |
|
|
420
|
-
|
|
421
|
-
`experience` 另有一个 `outcome` 字段,区分**尝试**和**结果**:刚生成完写入的经验没有 `outcome`,只有用户告知采用了哪个版本、或客户有了反应,用 `outcome` 命令补记之后才算有结果。只有有结果的经验能进归纳队列。
|
|
422
|
-
|
|
423
|
-
`directive` 与 `fact` 的写入门禁由 CLI 强制执行,不是约定。你不能代替用户"顺手"存下一条产品能力或禁令——**必须先取得用户明确确认**,再以 `--source user` 写入。
|
|
424
|
-
|
|
425
|
-
`--source` 是必填的,没有默认值。省略它会直接报错,不会退回成 `user`。
|
|
426
|
-
|
|
427
|
-
`directive` 无条件进入每次生成,不参与相关度排序,因此**不需要**也**不应该**给它加产品或国家标签。
|
|
428
|
-
|
|
429
|
-
它也不参与预算裁剪——把合规红线裁掉比超预算危险得多。代价是总量有硬上限:启用中的约束超过 4000 字符时 `recall` 会直接报错。遇到这个错误,用 `memory list --type directive` 检查重复和过时条目,停用后再试;不要提高预算绕过。
|
|
430
|
-
|
|
431
|
-
### 写入
|
|
432
|
-
|
|
433
|
-
`fact` 与 `experience` 带标签:
|
|
434
|
-
|
|
435
|
-
```bash
|
|
436
|
-
npx -y @yixinkj/inquiry-opening-coach-cli@latest \
|
|
437
|
-
--skill-path "本次实际读取的 SKILL.md 绝对路径" \
|
|
438
|
-
retain \
|
|
439
|
-
--type <fact|experience> \
|
|
440
|
-
--source user \
|
|
441
|
-
--title "<简短标题>" \
|
|
442
|
-
--content "<正文>" \
|
|
443
|
-
--tags "<英文品类>,<中文品类>,<国家代码>" \
|
|
444
|
-
--json
|
|
445
|
-
```
|
|
446
|
-
|
|
447
|
-
`directive` **不加 `--tags`**:它无条件进入每次生成、不参与相关度排序,标签对它没有任何作用(理由见上面「四条记忆通路」)。
|
|
448
|
-
|
|
449
|
-
```bash
|
|
450
|
-
npx -y @yixinkj/inquiry-opening-coach-cli@latest \
|
|
451
|
-
--skill-path "本次实际读取的 SKILL.md 绝对路径" \
|
|
452
|
-
retain \
|
|
453
|
-
--type directive \
|
|
454
|
-
--source user \
|
|
455
|
-
--title "<简短标题>" \
|
|
456
|
-
--content "<正文>" \
|
|
457
|
-
--json
|
|
458
|
-
```
|
|
459
|
-
|
|
460
|
-
需要标签的只有 `fact`、`experience` 和 `model` 这三条通路。
|
|
461
|
-
|
|
462
|
-
`directive` 可加 `--priority <数字>`,数值越大越先注入、冲突时越优先。
|
|
463
|
-
需要不受相关度影响、每次都注入的记忆,加 `--pinned`。
|
|
464
|
-
|
|
465
|
-
正文含引号、换行或特殊字符时,先写入临时 JSON 文件再用 `--file` 传入,避免命令行转义破坏内容:
|
|
466
|
-
|
|
467
|
-
```json
|
|
468
|
-
{
|
|
469
|
-
"type": "fact",
|
|
470
|
-
"title": "<一句话标题>",
|
|
471
|
-
"content": "<仅填写用户已经确认的真实内容>",
|
|
472
|
-
"tags": ["<英文品类>", "<中文品类>", "<国家代码>"],
|
|
473
|
-
"source": "user"
|
|
474
|
-
}
|
|
475
|
-
```
|
|
476
|
-
|
|
477
|
-
标签把同一个概念的中英文各写一份,这样无论询盘用哪种语言描述都能命中。国家用 ISO 短代码(`US`、`DE`、`JP`),它按整词匹配。
|
|
478
|
-
|
|
479
|
-
标签只影响召回排序,写不全不会导致记忆丢失,但写全能让它排得更靠前。
|
|
480
|
-
|
|
481
|
-
### 查看与修改
|
|
482
|
-
|
|
483
|
-
```bash
|
|
484
|
-
npx -y @yixinkj/inquiry-opening-coach-cli@latest \
|
|
485
|
-
--skill-path "本次实际读取的 SKILL.md 绝对路径" \
|
|
486
|
-
memory list --json
|
|
487
|
-
|
|
488
|
-
npx -y @yixinkj/inquiry-opening-coach-cli@latest \
|
|
489
|
-
--skill-path "本次实际读取的 SKILL.md 绝对路径" \
|
|
490
|
-
memory list --type directive --json
|
|
491
|
-
|
|
492
|
-
npx -y @yixinkj/inquiry-opening-coach-cli@latest \
|
|
493
|
-
--skill-path "本次实际读取的 SKILL.md 绝对路径" \
|
|
494
|
-
memory list --all --json # 含已停用
|
|
495
|
-
|
|
496
|
-
npx -y @yixinkj/inquiry-opening-coach-cli@latest \
|
|
497
|
-
--skill-path "本次实际读取的 SKILL.md 绝对路径" \
|
|
498
|
-
memory get --id <id> --json
|
|
499
|
-
|
|
500
|
-
npx -y @yixinkj/inquiry-opening-coach-cli@latest \
|
|
501
|
-
--skill-path "本次实际读取的 SKILL.md 绝对路径" \
|
|
502
|
-
memory update --id <id> --active false --json # 停用但保留
|
|
503
|
-
|
|
504
|
-
npx -y @yixinkj/inquiry-opening-coach-cli@latest \
|
|
505
|
-
--skill-path "本次实际读取的 SKILL.md 绝对路径" \
|
|
506
|
-
forget --id <id> --json # 永久删除
|
|
507
|
-
```
|
|
508
|
-
|
|
509
|
-
改动 `fact` 或 `directive` 的标题与正文时必须带 `--source user`,和新建时一条规则——否则先写一条无害的 fact 再改正文就成了绕过门禁的后门:
|
|
510
|
-
|
|
511
|
-
```bash
|
|
512
|
-
npx -y @yixinkj/inquiry-opening-coach-cli@latest \
|
|
513
|
-
--skill-path "本次实际读取的 SKILL.md 绝对路径" \
|
|
514
|
-
memory update --id <id> --content "<新正文>" --source user --json
|
|
515
|
-
```
|
|
516
|
-
|
|
517
|
-
改 `--active`、`--pinned`、`--tags`、`--priority` 不需要 `--source`,它们不改变事实内容。
|
|
518
|
-
|
|
519
|
-
用户想"先关掉看看效果"时用 `--active false`,不要直接 `forget`。删除前先把该条 `title` 和 `content` 展示给用户确认。
|
|
520
|
-
|
|
521
|
-
删除 `model` 时,它引用过、且没有被其它 model 引用的经验会自动回到待归纳队列,返回值里的 `restoredToReflectQueue` 列出这些 id。可以顺带告诉用户"这批经验可以重新归纳"。
|
|
522
|
-
|
|
523
|
-
### 归纳心智模型
|
|
524
|
-
|
|
525
|
-
经验累积到十几条后,或用户要求"总结一下经验"时:
|
|
526
|
-
|
|
527
|
-
```bash
|
|
528
|
-
npx -y @yixinkj/inquiry-opening-coach-cli@latest \
|
|
529
|
-
--skill-path "本次实际读取的 SKILL.md 绝对路径" \
|
|
530
|
-
reflect --json
|
|
531
|
-
```
|
|
532
|
-
|
|
533
|
-
返回三块:
|
|
534
|
-
|
|
535
|
-
- `unreflected` —— **已有真实结果**、尚未归纳的经验,只有这些能当证据
|
|
536
|
-
- `awaitingOutcome` —— 只是尝试过、还没有结果的经验,**不能**当证据
|
|
537
|
-
- `existingModels` —— 已有模型
|
|
538
|
-
|
|
539
|
-
然后:
|
|
540
|
-
|
|
541
|
-
1. 通读 `unreflected`,找出**跨多条经验都成立**的规律——某个国家偏好哪种切入角度、哪种风格反复被选中或从未被选中、哪类产品需要先说什么。
|
|
542
|
-
2. 单条经验的偶然结果**不构成**规律,CLI 强制要求至少 2 条证据。
|
|
543
|
-
3. 与 `existingModels` 重复的不要重复写入;有冲突时先展示给用户,由用户决定保留哪个。
|
|
544
|
-
4. 写入:
|
|
545
|
-
|
|
546
|
-
```bash
|
|
547
|
-
npx -y @yixinkj/inquiry-opening-coach-cli@latest \
|
|
548
|
-
--skill-path "本次实际读取的 SKILL.md 绝对路径" \
|
|
549
|
-
retain \
|
|
550
|
-
--type model \
|
|
551
|
-
--source reflect \
|
|
552
|
-
--title "<规律标题>" \
|
|
553
|
-
--content "<规律正文,写明适用范围>" \
|
|
554
|
-
--evidence "<经验id1>,<经验id2>,..." \
|
|
555
|
-
--json
|
|
556
|
-
```
|
|
557
|
-
|
|
558
|
-
`--evidence` 里的经验会自动标记为已归纳并退出 `reflect` 队列,因此**不要**把无关经验塞进 evidence 凑数——那会让它们再也不被归纳。CLI 会拒绝引用非 experience、已停用、或没有结果记录的条目。
|
|
559
|
-
|
|
560
|
-
`awaitingOutcome` 不为空时,告诉用户这些尝试还缺结果,可以用下面的命令补记:
|
|
561
|
-
|
|
562
|
-
```bash
|
|
563
|
-
npx -y @yixinkj/inquiry-opening-coach-cli@latest \
|
|
564
|
-
--skill-path "本次实际读取的 SKILL.md 绝对路径" \
|
|
565
|
-
outcome --id <id> --selected <版本key> --response "<客户反应>" --json
|
|
566
|
-
```
|
|
567
|
-
|
|
568
|
-
**为什么要卡这道**:一次生成只能证明 Agent 选了什么风格,不能证明客户偏好什么风格。若把无结果的尝试也算作证据,归纳出的"某国客户偏好"其实只是 Agent 自己选择的回声,而且会自我强化。宁可归纳得慢,也不要归纳出假规律。
|
|
569
|
-
|
|
570
|
-
model 的标题和正文不能用 `memory update` 修改——那等于凭空改结论。要改就 `forget` 掉重新归纳,证据经验会自动回到队列。
|
|
571
|
-
|
|
572
|
-
### 业务档案
|
|
573
|
-
|
|
574
|
-
档案是每次生成都会注入的固定身份信息,与记忆分开存放:
|
|
331
|
+
档案是每次生成都会注入的固定身份信息,与素材分开存放:
|
|
575
332
|
|
|
576
333
|
```bash
|
|
577
334
|
npx -y @yixinkj/inquiry-opening-coach-cli@latest \
|
|
@@ -587,44 +344,22 @@ npx -y @yixinkj/inquiry-opening-coach-cli@latest \
|
|
|
587
344
|
|
|
588
345
|
`profile show` 会返回 `profileGaps`,指出哪些空缺会削弱开场白的个性。可以据此询问用户,但一次只问一两项,不要做成问卷。
|
|
589
346
|
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
1. 使用当前宿主能力读取附件。
|
|
593
|
-
2. 区分一次性客户信息和长期公司资料;客户姓名、数量、项目报价等**默认不保存**。
|
|
594
|
-
3. 用户明确要求保存且资料清晰时,拆成少量单一主题的记忆写入。
|
|
595
|
-
4. 资料含糊、互相冲突,或可能构成产品能力承诺时,先展示拟保存内容并询问一次确认。
|
|
596
|
-
5. 写入后返回新增记忆的 id、标题和通路。
|
|
597
|
-
|
|
598
|
-
### 分区
|
|
599
|
-
|
|
600
|
-
不同产品线或市场需要互不干扰的记忆时才使用分区,默认单分区即可:
|
|
601
|
-
|
|
602
|
-
```bash
|
|
603
|
-
npx -y @yixinkj/inquiry-opening-coach-cli@latest \
|
|
604
|
-
--skill-path "本次实际读取的 SKILL.md 绝对路径" \
|
|
605
|
-
bank list --json
|
|
606
|
-
|
|
607
|
-
npx -y @yixinkj/inquiry-opening-coach-cli@latest \
|
|
608
|
-
--skill-path "本次实际读取的 SKILL.md 绝对路径" \
|
|
609
|
-
bank create <名称>
|
|
610
|
-
|
|
611
|
-
npx -y @yixinkj/inquiry-opening-coach-cli@latest \
|
|
612
|
-
--skill-path "本次实际读取的 SKILL.md 绝对路径" \
|
|
613
|
-
bank use <名称>
|
|
614
|
-
```
|
|
615
|
-
|
|
616
|
-
任意命令都可用 `--bank <名称>` 临时指定,不改变当前分区。
|
|
617
|
-
|
|
618
|
-
### 存储位置
|
|
619
|
-
|
|
620
|
-
记忆库在 `~/.yixin/inquiry-opening-coach/banks/<分区>/`(可用环境变量 `INQUIRY_OPENING_COACH_DATA_DIR` 改到别处,便于测试隔离、便携运行或临时切到备份副本):`profile.json` 存档案,`memories.jsonl` 每行一条记忆。目录权限 0700、文件 0600。
|
|
347
|
+
## 存储位置
|
|
621
348
|
|
|
622
|
-
|
|
349
|
+
数据在 `~/.yixin/inquiry-opening-coach/banks/default/`(可用环境变量
|
|
350
|
+
`INQUIRY_OPENING_COACH_DATA_DIR` 改到别处,便于测试隔离、便携运行或临时切到备份副本):
|
|
351
|
+
`profile.json` 存档案,`memories.jsonl` 每行一条素材。目录权限 0700、文件 0600。
|
|
623
352
|
|
|
624
|
-
|
|
353
|
+
早期版本用的是 `~/.inquiry-opening-coach/`。CLI 启动时会把它整份复制到新位置,原目录不删
|
|
354
|
+
不改;两边都有数据时会停手并在 stderr 提示,由用户自己决定怎么合并。用户问起旧目录时照此
|
|
355
|
+
说明,不要替他删。
|
|
625
356
|
|
|
626
|
-
`
|
|
357
|
+
`profile.json` 损坏时不会被当成空档案:`profile show` 会报错,`profile save` 会拒绝覆盖,
|
|
358
|
+
原文件保持原样等待人工修复。看到这个错误时把路径给用户,不要替他删文件。
|
|
627
359
|
|
|
628
|
-
|
|
360
|
+
`memories.jsonl` 可以手工维护:用户能直接用编辑器编辑或追加,最小只需
|
|
361
|
+
`{"content":"..."}`,缺失的 id 和时间戳会在下次运行时自动补齐。
|
|
362
|
+
本 Skill **只读这个文件,不写**——素材由专门沉淀成交客户的 Skill 写入。
|
|
629
363
|
|
|
630
|
-
|
|
364
|
+
某行损坏时 `recall` 会**跳过坏行照常返回**,并在 `warnings` 里给出行号和原因。把行号和原因
|
|
365
|
+
转述给用户,请其修正。不要替用户猜测那行本来想写什么,也不要直接删掉那行。
|
package/skills.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"runtimeVersion": "0.3.
|
|
2
|
+
"runtimeVersion": "0.3.7",
|
|
3
3
|
"platforms": {
|
|
4
4
|
"darwin-arm64": {
|
|
5
5
|
"id": "mac-arm64",
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"skill": {
|
|
25
25
|
"name": "create-inquiry-openers",
|
|
26
26
|
"id": "inquiry-opening-coach",
|
|
27
|
-
"version": "0.3.
|
|
27
|
+
"version": "0.3.10",
|
|
28
28
|
"bin": "inquiry-opening-coach-cli"
|
|
29
29
|
}
|
|
30
30
|
}
|