fix(consult): BUG-950~953 Pass 4 按句放行,无分钟按句丢弃
正文不再整段 hold:闭合句立刻过 Pass 4,无 reject 即发(950)。 无出生分钟改为按句丢弃,全丢才用兜底句(951);该模式日期记 observe(952)。 校正流 token 级 thinking 死链按 P2 删除,测试翻转成否定合同(953)。
This commit is contained in:
@@ -12445,3 +12445,67 @@
|
||||
- 相关记录:BUG-732、BUG-943
|
||||
- 复发自:无
|
||||
- 修复版本:`e32ce624`
|
||||
|
||||
## BUG-950 | Pass 4 整段 hold,正文不再逐字出现
|
||||
|
||||
- 状态:resolved
|
||||
- 首次发现:2026-09-18
|
||||
- 最近更新:2026-09-18
|
||||
- 影响面:`stream-agent-response.ts`、`timing-output-guard.ts`
|
||||
- 用户现象:本命 / 窗口 / 一般咨询的正文整段一次性蹦出来,打字机没了,首字延迟等于整段写完。
|
||||
- 触发条件:`pass4Mode` 三条路径全开;三个 `text-delta` 只产出 1 条 `answer.delta`。
|
||||
- 根因:`holdAnswer` 把整段攒进 `fullOutput`,等 `finishPass4` 判定完一次发出。948 让步「不闪两次」等于关掉流式。
|
||||
- 修复:只缓冲当前未闭合句。句子碰到 `。!?.!?\n` 就对这一句跑 `classifyPass4`:无 `reject` 立刻 `send`;有 `reject` 整句不发。`exact-timing` 的 `observe` 不阻塞。`methodology` 整篇重写只允许发生在还没发出任何正文之前;已经发出过句子就只丢后续命中句。流末残句再过一次门。
|
||||
- 验证:三个 `text-delta` 在 `verified_chart` 下 ≥3 条 `answer.delta`;保证句不出现在任何 `answer.delta` 且回执有 `pass4-reject:guarantee`;日期句照发且有 `pass4-observe:exact-timing`。
|
||||
- 防复发:Pass 4 是句门不是刀,不得再整段 hold。合同锁 ≥3 条 delta。
|
||||
- 相关记录:BUG-948
|
||||
- 复发自:BUG-948
|
||||
- 修复版本:待合入 SHA
|
||||
|
||||
## BUG-951 | 没有出生分钟时,一句拒绝顶掉整段回答
|
||||
|
||||
- 状态:resolved
|
||||
- 首次发现:2026-09-18
|
||||
- 最近更新:2026-09-18
|
||||
- 影响面:`timing-output-guard.ts`、`stream-agent-response.ts`
|
||||
- 用户现象:一般知识句和个人盘断言写在同一段时,整段被换成「这部分需要具体出生分钟才能判断」。
|
||||
- 触发条件:`general_no_birth_time` 二次落地;无 `composeAnswer` 的一般路径没有重写机会。
|
||||
- 根因:二次命中 `personal-chart` 时整段替换成 `GENERAL_NO_BIRTH_TIME_REFUSAL`。旧实现是按句挖掉。948 任务书「兜底句替代整段」措辞造成。
|
||||
- 修复:`dropRejectedClauses` 只丢 `guarantee` / `personal-chart` / `methodology` 命中句。其余原样。只有全部句子都丢掉、正文为空时才发兜底句。保证句静默删句,回执留 `pass4-reject:guarantee`。
|
||||
- 验证:混合文本二次后一般知识句仍在,个人盘句与保证句不在,无残留 `。。`;全丢用例仍落到兜底句。
|
||||
- 防复发:不得再对 `general_no_birth_time` 二次整段替换;合同锁「preserving general knowledge」。
|
||||
- 相关记录:BUG-948、BUG-950
|
||||
- 复发自:BUG-948
|
||||
- 修复版本:待合入 SHA
|
||||
|
||||
## BUG-952 | 没有出生时间时的具体日期既不记录也不拦
|
||||
|
||||
- 状态:resolved
|
||||
- 首次发现:2026-09-18
|
||||
- 最近更新:2026-09-18
|
||||
- 影响面:`timing-output-guard.ts`
|
||||
- 用户现象:无出生分钟模式下写了具体日期,回执没有任何痕迹。
|
||||
- 触发条件:`classifyPass4` 对 `exact-timing` 在 `general_no_birth_time` 直接 `continue`。
|
||||
- 根因:948 让步 4 把「日期不删字」写成「连 observe 也不记」,恰恰在最没有依据给日期的模式下一笔痕迹都没有。
|
||||
- 修复:该模式下 `exact-timing` 记 `observe`,仍不拦、不删字。
|
||||
- 验证:含日期正文原样通过,回执有 `pass4-observe:exact-timing`。
|
||||
- 防复发:`exact-timing` 在所有 `pass4Mode` 下都要能观察到。
|
||||
- 相关记录:BUG-948、BUG-950
|
||||
- 复发自:BUG-948
|
||||
- 修复版本:待合入 SHA
|
||||
|
||||
## BUG-953 | 校正流 token 级 thinking 是死链,按 P2 删除
|
||||
|
||||
- 状态:resolved
|
||||
- 首次发现:2026-09-18
|
||||
- 最近更新:2026-09-18
|
||||
- 影响面:`rectification-agentic/v9/stream-mapping.ts`、`think-step-gate.ts`
|
||||
- 用户现象:无(用户看不见这条通道)。947 修好的是测试里的死函数。
|
||||
- 触发条件:生产校正流对 `reasoning-delta` 在 `step-answer.ts` 直接 `{ kind: "none" }`。`toPublicThinkingDelta` / `mapStreamChunkToThinking` 零生产调用方。
|
||||
- 根因:上游 P2 规定 provider reasoning 永不外发。把 reasoning 分片推给浏览器本身就违反 P2。947 按任务书方案 (b) 留了这条没人走的路。
|
||||
- 修复:删除 `toPublicThinkingDelta`、`mapStreamChunkToThinking`、`InternalThinkingDeltaEvent`、`acceptThinkingFragment`、`createThinkingFragmentAssembler`。`acceptThinkStepText` 保留。测试翻转成否定合同:源码不得出现这些函数名,`reasoning-delta` 必须丢弃。
|
||||
- 验证:全仓 `frontend/src` grep 不到上述函数;相关测试翻转后仍绿,测试总数不降。
|
||||
- 防复发:校正流不得再把 `reasoning-delta` 映射成对外事件。将来校正面板若要显示判断依据,走咨询流 Pass 2 `think.step`。
|
||||
- 相关记录:BUG-947、BUG-942
|
||||
- 复发自:BUG-947
|
||||
- 修复版本:待合入 SHA
|
||||
|
||||
Reference in New Issue
Block a user