docs(voice): add task E — opening dedupe and user_meaning layering
硬编码盘点新发现的两处定位错误:opening 轮双重提问去重(结构化 判定,不用正文正则);引擎 user_meaning 作为素材分层,指令语气 不得直出用户。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0155nFCgCHtoA7jhSDGmZmMu
This commit is contained in:
@@ -68,6 +68,26 @@
|
||||
|
||||
重写要求:每条在 PR 里"旧 → 新 → 保留的语义约束"三栏列出。
|
||||
|
||||
## 任务 E(P1)· 定位错误的硬编码:开场去重 + user_meaning 分层
|
||||
|
||||
硬编码全量盘点(2026-09-01)发现两处不是"文案难听"而是"定位错误",重写解决不了,需要结构处理:
|
||||
|
||||
### E-1 · 开场双重提问去重
|
||||
|
||||
事故 case 转写第一屏:opening 轮模型正文已自然包含收集引导("就从你最容易想起来的一件事开始……你先随便说一件吧"),紧接着 `finalizeSuccessfulTurnExit` 把服务端 focus 的 `GENERIC_COLLECT_QUESTION` 作为**第二条独立 assistant 消息**写进 turn 历史,用户连续看到两条语义重复、语气断裂的消息。
|
||||
|
||||
修法(保持问题槽红线):focus 仍照常持久化(UI 问题槽渲染不变);但当本轮模型正文存在且该 focus 是 opening 轮的 collect 类 focus 时,**不再把题干作为独立 turn 消息追加**。判定条件必须是结构化的(action === opening && focus.intent 为 collect 且本轮已有非空 assistant 正文),不得用正文字符串匹配(红线:不得靠正文正则判断"是否已问过"——BUG-456 教训的反面同样成立:这里判断的是"本轮有无正文"这个结构事实,不是正文内容)。非 opening 轮的问题写入历史(上轮任务 C 的成果)保持不变。
|
||||
|
||||
### E-2 · 引擎 user_meaning 分层:素材,不是用户文案
|
||||
|
||||
Python 引擎的 `user_meaning` 字段(`refinement_packet.py` / `decision_policy.py` / `confirmation-gate.ts` 等,如"主限更偏向 05:00,分盘大运更偏向 04:54。冲突时不能按更高把握收口。""不得把它描述为已确认的唯一出生分钟")设计定位是给模型/内部的解释素材,但存在被 UI 或确定性叙述**字段直出**给用户的路径——用户会读到混着内部指令语气的句子。
|
||||
|
||||
修法:
|
||||
1. 盘点所有 `user_meaning` 的消费点,分成两栏:进模型上下文(保留原样)vs 直出用户(逐个处理)。
|
||||
2. 直出用户的点:改为消费专门的展示字段(新增 `display_copy` 或由 TS copy 模块按结构字段生成),或改为模型转述路径;指令语气句("不得…")一律不得出现在用户可见文本。
|
||||
3. 引擎侧字段语义不变、不删字段(模型和审计仍在用);这是消费端分层,不是引擎改造。
|
||||
4. 在 PR 里贴出直出点清单与前后对照。
|
||||
|
||||
## 任务 D(P2)· 防回归
|
||||
|
||||
- copy 模块导出集中后,加一条"机器腔词表"测试:用户可见文案不得包含 "按同一规则计入"、"请刷新后重新作答"、"当前状态为" 等词条(词表放测试文件,≥8 条,含本次清理的全部旧词)。
|
||||
@@ -75,7 +95,7 @@
|
||||
|
||||
## 验收标准
|
||||
|
||||
1. 任务 0 的改前/改后对照(事故 case 形状全程文案 + 一次婚姻主题咨询的开场三段)贴 PR。
|
||||
1. 任务 0 的改前/改后对照(事故 case 形状全程文案 + 一次婚姻主题咨询的开场三段)贴 PR;对照中开场不得再出现语义重复的两连问(任务 E-1)。
|
||||
2. `tsc --noEmit` exit 0;四组前端测试 fail=0;改动的文案断言逐条三栏说明。
|
||||
3. 红线 1/2 的证明:交付轮输出仍含边界语义;正文仍不含题干(现有 server-focus/question-ownership 测试全绿)。
|
||||
4. `VOICE.md` 落库;机器腔词表测试落库。
|
||||
|
||||
Reference in New Issue
Block a user