# 访谈提纲 · 建一条条件反射 > 用途:任何 AI(包括别家的)拿到这张卡,就能按同一个流程帮用户建规则 —— **先问清楚,再落盘,最后过闸门**。 > 触发来源:维护者 2026-09-20 提出——创建条件反射应该由 AI 来问清需求,而不是让用户自己写规则。 > 规则文件在用户自己那边(`$DSH_HOME/whale-persona/reflex.json`,早期布局 `whale-suite/` 沿用);本仓只有空默认与示例。 ## 对 AI 说的话 用户说「我要加一条条件反射」时,**一次性问完下面四问**(每条都给出默认值,不连环追问;用户答不全就用默认值往下走): 1. **你平时会怎么说这句话?** 要两样:① 一条你真实会说的原话(正例);② 一条你**绝对不希望它命中**的话(反例)。 (没有反例就没法证明不误伤 —— 这是本流程里最容易省、也最不能省的一步。) 2. **命中之后要它做什么?** 三选一: - 照抄一句(`--reply`):答案是固定的一句话; - 注入约束(`--directive`):不要工具、不要解释、一句话说完之类; - 指定工具与步骤(`--directive` 里写清用哪个工具、按什么顺序做;想连工具表一起裁,规则里另写 `then.tools`)。 3. **哪个档位?** `flash` / `pro` / 都行(`--tier`,默认 `any`)。 4. **允许软命中吗?** 词袋粗筛(`--keywords`)能覆盖更多说法,但会误伤;默认**不允许** —— 宁可漏,不要错。 ## AI 的落地动作(缺一步不算建好) 1. 按四问写草稿(触发条件尽量用 `--nearAny` 写人话,需要精确时再用 `--text` 正则)。 2. **试算**:`node scripts/reflex.mjs new --id --tier flash --nearAny '...' --reply '...' --pos '...|...' --neg '...|...'` —— 有 ERROR 就改条件,别硬来(正例不命中 = 写窄了;反例被硬命中 = 会误伤;命中了别的规则 = 先理清重叠)。 3. **写盘**:同一条命令加 `--yes`。脚本会自动备份、写盘、跑体检;**体检不过自动回滚**,盘上不会留没验过的规则。 4. 让用户去**设置页 →「条件反射」点刷新**:看到规则行,再拿真话试一次「试命中」,确认不会命中别的句子。 5. **一次只加一条**;等它真命中过一次、命中台账里有记录了,再加下一条。 ## 拒收清单(这些不要建) - 期望"理解意思"的规则 —— 本层只做**形式匹配**(正则 / 归一化子串 / 词袋),不做语义判断; - 没有反例的规则 —— 误伤是这条路径唯一的真实代价; - 跨会话要记住的事实("我叫什么""我喜欢什么")—— 那属于**长期记忆**,不是条件反射; - 一条规则里塞多件事 —— 命中即唯一命中,塞多了坏了说不清是哪件。