---
name: playbook-safety-self-check
description: Safety 规则的"描述版" — 让 LLM 在生成前就自检 6 条 close 段约束 + 禁词 + 承诺式表述,主动规避后置 safety gate 命中(命中要走 fallback 损失质量)。本 skill 全场景加载(priority 250,装配在最末)。机器规则继续 TS(call.ts safetyRules),不挪 yaml。
priority: 250
applies: {}
version: 0.1.0
---

# Safety 自检清单(LLM 输出前主动核查)

⚠️ 以下规则是**后置硬约束**,LLM 输出后会用代码扫描;**命中 block 类规则 → 整段输出作废 → 走 fallback 模板**(质量下降)。

**所以每次输出前,**自己**先按这个清单核查一遍**,避免命中。

## 1. 全段:禁词扫描(block — 命中即作废)

任一段(opening/followup/objection/close)含以下任一词,**整次输出失败**:
- `一定能`、`保证`、`绝对`、`百分百`、`100%`(医疗承诺)
- `亲爱的`(销售化称呼)
- `便宜`、`促销`、`折扣`、`免费送`(销售化)

→ 检查方法:全文 Ctrl+F 扫一遍,有则改泛指或删除。

## 2. close 段:不能加粗具体时间(block — 命中即作废)

❌ `**周六上午10点**` / `**本周五下午**` / `**明天上午9点**`
- 检测正则:`/\*\*[^*\n]*(?:周[一二三四五六日天]|\d+\s*(?:点|:|：))[^*\n]*\*\*/`
- 命中即整次输出失败

正确写法(任选):
- ✅ `周六上午10点(示例)` ← 不加粗 + (示例) 后缀
- ✅ `周六上午这个方向` ← 方向词替换具体时间

→ 检查方法:close 段所有 `**...**` 加粗块,看有没有"周X / 数字 + 点"。

## 3. close 段:不能用承诺式表述(block — 命中即作废)

PAC 没有排班 API,所以**没有任何时间是"已经定下来的"**;不能用以下措辞:
- ❌ `已为您约好` / `已成功预约` / `已为您预约` / `已经为您约` / `已替您预约`
- ❌ `约定本` / `敲定本` / `安排好了` / `已经预约`

正确写法:
- ✅ `我先按 X 帮您登记,具体时段以诊所排班为准`
- ✅ `我先帮您留 X 时间方向,稍后跟前台确认后短信通知您实际时间`

## 4. close 段:必须含"待确认"语义短语(warn — 不阻断但提示)

close 段缺以下任一短语会触发 warn 日志,不影响输出但应该带:
- `以诊所排班为准` / `排班为准`
- `稍后跟前台确认` / `跟前台确认` / `稍后跟诊所确认`
- `稍后短信确认` / `排班确认后告知` / `排班确认后短信`
- `稍后短信通知您实际` / `具体时段以` / `具体时间以`

→ 检查方法:close 段是不是有一句"待确认/排班相关"的弱化措辞。

## 5. objection 段:必须 ### A./B./C. 子标题分块(warn — 不阻断)

❌ 把 3 个异议合并成一长段
❌ 用 `- xxx` bullet 列异议

✅ 正确:
```
### A. "我再考虑考虑"
> "客服话术..."

### B. "最近没时间"
> "客服话术..."
```

## 6. close 段:必须含具体时间数字(warn — 不阻断)

close 段如果完全没数字(没"X 点"也没"X 月 X 日"也没"X 周")会触发 warn。
→ 给一个示例时间即可(如"周六上午10点(示例)")。

---

## 自检顺序建议

输出每段前依次问自己:
1. **opening / followup**:有没有引用至少 3 条 user prompt 给的事实?有没有「身份不符」的具体名词?
2. **objection**:是不是 3-4 个 `### A./B./C.` 子标题?每个有 blockquote `>`?
3. **close**:
   - 加粗块有没有具体时间词?(有就去掉加粗 + (示例) 后缀)
   - 有没有"我已为您约好"等承诺词?(有就改"我先按 X 登记")
   - 有没有"以诊所排班为准 / 稍后跟前台确认"等弱化短语?(没有就加 1 句)
   - 有没有 `**回写要点**` + 2-4 条 bullet?
4. **全段**:Ctrl+F 扫禁词清单(§1)

---

## 跟代码 safety rule 的关系

本 SKILL.md 是**给 LLM 看**的描述版自检清单,**机器规则**实际在
`apps/pac-service/src/modules/ai/calls/draft-plan-script/call.ts` 的
`safetyRules` 数组里(强类型 `SafetyRule<TOutput>`,runtime 性能 + zod 校验)。

**两者必须同步**:改了 call.ts 的 safetyRules,也要更新本文件;否则 LLM 自检会过但后置 gate 命中。
新加规则 PR review 时双向检查。
