规则包与话术库
QuickCue 的判断全部来自规则文件,不来自模型。这一篇讲规则长什么样、怎么改、话术库怎么组织。
01两个产品仓,机制同构
text
quickcue/(会中辅助仓) ├── core/py/quickcue_engine.py 判定引擎:触发判定 + 出卡闸 + 结果卡协议 + 反馈 SDK ├── packs/meeting/rules.example.yaml 规则面全量示例(全中文注释) └── hosts/mcp/meeting_server.py stdio MCP 服务器(Python 3.10+) recoscan/(项目体检仓) ├── core/js/ 体检引擎(仅 Node.js 内置模块) ├── packs/project/rules.example.yaml 指标权重 / 风险阈值示例(全部可改) └── hosts/mcp/project_server.mjs stdio MCP 服务器(Node 18+)
两件机制同构,学会一件就会第二件。
02规则文件里有什么
packs/meeting/rules.example.yaml 是闸参数与判据面的全量示例,全字段中文注释:
| 诉求 | 改哪个字段 | 改成 | 预期效果 |
|---|---|---|---|
| 卡太吵,想再克制些 | global_cooldown_sec | 60 → 120 | 两张卡间隔拉大到 2 分钟 |
| 出卡总量想收紧 | max_per_meeting | 12 → 8 | 单场会议最多出 8 张卡 |
| 我说话有忌讳 | 画像 banned 黑名单 | 填禁用词 | 命中的话术候选直接跳过 |
画像字段 role / style / phrases 参与话术模板选择;banned 子串命中即弃候选(只跳过,不改写文案)。
03当前版本(v0.1.0)的行为
引擎内置默认参数开箱即用,默认值与示例文件逐字一致(全局冷却 60 秒 / 同型冷却 180 秒 / 场均上限 12 张)。把示例文件复制为 rules.yaml 改成你自己的口径,规则文件自动加载接入引擎后即本地生效(演进路径见 packs/meeting/README.md 的「60 → 70 → 80 分」)。改规则前先跑宿主里的 rules.validate 校验结构,改错的字段会被标出。
04判定链路逐层拆解
1. L0 触发判定:客户角色发言 ∧ 疑问判定 ∧ 完整性判定——三个都过才进下一层。 2. L1 强度打分:逼宫式追问和客套式一问优先级不一样;带负例抑制,避免瞎提醒。 3. 三层闸:全局冷却 / 同型冷却 / 场均上限(默认 60 秒 / 180 秒 / 12 张),同一句话去重。闸的作用不是限制你,是保住它不被你关掉。 4. 话术库直出:命中规则就从你的库里取那句,组卡渲染,全程零大模型调用。
05话术库怎么组织
一条话术的最小结构:触发条件(哪类疑问)+ 应答文案(能直接说出口的一句话)+ 证据(出处或依据)。分组按场景走(报价 / 交付 / 售后 / 数据安全 …)。cue.analyze 每次出卡都会在卡面上标证据行——没有出处的话术不值得进库,这是这个工具的性格。