docs: 设计增补——CC追问输出侧强制+回显豁免收窄(墙层,需求方决策)
Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
# 设计增补:CC 追问输出侧强制 + 回显豁免收窄(墙层)
|
||||
|
||||
- 日期:2026-10-08(场景①三轮提示词迭代 0/8 后的需求方决策)
|
||||
- 前置:2026-10-08-dual-contact-and-country-code-design.md(本增补修改其实现层)
|
||||
|
||||
## 1. 背景与决策
|
||||
|
||||
场景①(裸号→国家代码追问)经三轮提示词层修复(共改 system.md 5 处 + reminder 3 处
|
||||
+ 让位唯一锚点 + 禁数字回显),真实 GLM 验收核心断言累计 **0/8**。行为分析结论:
|
||||
GLM 对**顺对话惯性**的指令全部服从、对**反惯性**的 CC 重发追问结构性无视——
|
||||
这是层级问题不是措辞问题。
|
||||
|
||||
**决策(需求方已确认)**:沿用本项目"prompt 教行为,墙保底线"的既有 doctrine
|
||||
(价格墙同款演进路径),把 CC 追问升级为输出侧确定性强制;同步收窄零号码墙的
|
||||
客户回显豁免(该豁免与"不回显"红线矛盾,GLM 稳定利用它回显号码 3/3)。
|
||||
|
||||
## 2. 规则一:CC 强制墙
|
||||
|
||||
- **触发**:本轮 `_contact_completion_note` 返回 `["_cc_asked"]`(裸号在场且未问过)
|
||||
——conversation.py 流程已有该判定(completion_marks)
|
||||
- **检测**:本轮完整 AI 回复不含 `country code`(大小写不敏感)——含则视为
|
||||
GLM 已自发服从,不干预
|
||||
- **动作**:不含 → 整段替换为 CC 模板句(英文正文 "Got it — Could you send the
|
||||
full number with the country code, like +966 5x xxx xxxx? Just so our manager
|
||||
can reach you directly.",中文同 `_CC_NOTE_ZH` 正文),走既有 violated 替换
|
||||
机制(logger.warning 留痕)
|
||||
- **计数**:`_cc_asked` 照常写回(一次性语义不变——无论 GLM 是否服从,本轮消耗)
|
||||
- 客户配合重发完整号后:下轮号码带前缀 → CC 墙/note 均不再触发,确认句自然回归
|
||||
- 客户不理睬:下轮 `_cc_asked` 已消耗 → 墙不再触发(一次性)
|
||||
|
||||
## 3. 规则二:回显豁免收窄(零号码墙)
|
||||
|
||||
- **现状**:`no_contact_value` 对 AI 输出中的 ≥10 位数字串/邮箱,若出现在近期
|
||||
客户消息中则豁免("礼貌回显"设计)
|
||||
- **决策变更**:**移除 AI 输出侧的回显豁免**——红线早已规定"客户自己的号码/
|
||||
邮箱也不回显(确认收到即可)",豁免与红线矛盾且被 GLM 稳定利用;AI 输出中
|
||||
的客户号码只可能来自回显(它不掌握其他号码),拦截无误杀面(规格数字
|
||||
DN110/5000m 等不构成 ≥10 位连续数字)
|
||||
- **实现**:`no_contact_value` 的 `user_history` 豁免参数停用(保留签名兼容或
|
||||
移除参数+清理调用点,以最小改动为准);替换句走 NO_CONTACT_* 既有分支
|
||||
- **测试影响**:既有回显豁免测试(含阿语回显一致性)按新语义更新为"AI 输出
|
||||
客户号码一律拦"
|
||||
|
||||
## 4. 不变项
|
||||
|
||||
- 提示词层全部保留(三层话术/提醒/禁令——墙只是兜底,GLM 自发服从时零干预)
|
||||
- 串行优先级/一次性计数/推送过滤/墙渠道精确化均不变
|
||||
- 价格墙/零号码墙其余行为不变
|
||||
|
||||
## 5. 测试策略
|
||||
|
||||
1. CC 墙单测:触发轮回复不含 "country code" → 替换为模板句;含 → 原样;
|
||||
非触发轮(带前缀号/_cc_asked 已耗/双渠道齐)→ 不干预
|
||||
2. 回显收窄单测:AI 输出含客户裸号/完整号/邮箱(无论客户消息是否有)→ 拦截;
|
||||
规格数字形态 → 放行
|
||||
3. 集成:CC 触发轮 + FakeAI 输出纯确认句 → 最终流出为 CC 模板句且 `_cc_asked` 落库
|
||||
4. 第四轮生产验收:场景①三断言(CC 句必出/零数字回显/一次性)+ 场景②③复验不回归
|
||||
|
||||
## 6. 风险
|
||||
|
||||
| 风险 | 等级 | 缓解 |
|
||||
|---|---|---|
|
||||
| CC 替换句与客户上下文衔接生硬 | 低 | 模板句自带 "Got it —" 开头;观察期收集反馈 |
|
||||
| 回显收窄误杀合法场景 | 低 | AI 输出无其他号码来源;规格数字形态已验证安全 |
|
||||
| 邮箱回显也被拦后确认句变短 | 低 | 符合红线设计(确认收到即可) |
|
||||
Reference in New Issue
Block a user