From c968c904e6e7d1e5fd6ff30522d6897734a2f01d Mon Sep 17 00:00:00 2001 From: Jesse_Chen Date: Thu, 1 Oct 2026 09:57:57 +0800 Subject: [PATCH] =?UTF-8?q?docs(rectification):=20records=20for=20message?= =?UTF-8?q?=20cleanup=20=E2=80=94=20BUG-1135..1137,=20BUG-917=20revision,?= =?UTF-8?q?=20changelog,=20design,=20voice,=20checklist,=20progress?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_017eEAG8HD3mm8gsKXgk8uU8 --- CHANGELOG.md | 7 +++ docs/BUG_HISTORY.md | 46 +++++++++++++++ ...-rectification-message-cleanup-20261001.md | 58 +++++++++++++++++++ docs/tasks/README.md | 2 + .../rectification-message-cleanup-20261001.md | 16 +++++ frontend/DESIGN.md | 8 +++ frontend/docs/VOICE.md | 2 +- 7 files changed, 138 insertions(+), 1 deletion(-) create mode 100644 docs/tasks/PROGRESS-rectification-message-cleanup-20261001.md create mode 100644 docs/testing/rectification-message-cleanup-20261001.md diff --git a/CHANGELOG.md b/CHANGELOG.md index 08a901d9..77df54ef 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # 印度占星 Skill 更新日志 +## 2026-10-01 — 生时校正:每道题只出现一次,复述变短,回复不再挂「已完成 N 步」(待验收) + +- 同一道题被重新出题时,以前会出现「题干、题干、选项」,或者只剩一行没选项的题干加「没有拿到下一个问题」;现在屏幕上只有当前这道题出一次题干,旧题什么都不显示(BUG-1135)。 +- 一次说了很多件经历时,回复不再逐条复述:两件以内直接列出,三件以上只写「记下了 N 件事」,清单收在「看记下的 N 件」里,点开可看;清单来自已记下的经历,不是模型复述(BUG-1136)。 +- 校正回复写完后不再显示「已完成 N 步」;写作中的步骤进度照旧。普通对话不变(BUG-1137)。 +- Skill 不 bump(只改了校正 Agent 的系统提示与服务端文案,Skill 文本未改)。不改数据库结构。 + ## 2026-10-01 — 校正后判断不了的分盘,聊天和报告会说出来(待验收) - 用新版生时校正采用了出生时间、而校正卡上 D9(婚恋)或 D10(事业)写着「判断不了」的用户:聊天里问到婚恋 / 事业时,回答会用一句大白话说明这张盘在出生时间范围里会变、判断不了,只看本命盘和大运,不按它下结论(BUG-1138)。 diff --git a/docs/BUG_HISTORY.md b/docs/BUG_HISTORY.md index 38a50801..8eda3fdf 100644 --- a/docs/BUG_HISTORY.md +++ b/docs/BUG_HISTORY.md @@ -11968,6 +11968,7 @@ - 防复发:死卡与 `collect_waiting` 不得同屏;未作答却已被关闭的点选题不得渲染成灰色选项。 - 相关记录:BUG-915、BUG-675、BUG-674 - 复发自:无 +- 2026-10-01 产品修订:见 `docs/tasks/TASK-rectification-message-cleanup-20261001.md` D1——死题(superseded 且无答案、或被替换的未答题)在消息上什么都不画,不再保留「题干无选项」;本条其余防复发不变(BUG-1135)。 - 修复版本:待发布 ## BUG-918 | 校正时间轴读数在 375px 手机上被裁成「已…」 @@ -15182,6 +15183,51 @@ - 复发自:无(新迁移引入,未部署) - 修复版本:`codex/rectification-varga-resolution-fix-20261001`(未部署)。 +## BUG-1135 | 生时校正题干出现两遍:被替换的旧题仍打印题干,同一题又在独立问题块再出一次 + +- 状态:resolved(2026-10-01 执行方实现;待 Claude 验收;未部署) +- 首次发现 / 最近更新:2026-09-29 / 2026-10-01 +- 影响面:`frontend/src/components/rectification-message-entry.tsx`、`src/lib/rectification-snapshot-messages.ts::placePersistedQuestion`、`src/lib/rectification-chat-view.ts`(BUG-917 的 `unansweredDeadChoiceOnMessages`)、`src/lib/rectification-agentic/v9/turn-question.ts::attachQuestionsToTurns`。 +- 用户现象:一条校正回复里出现「题干、题干、A–D」;另一种形状是只剩一行没有选项的题干,下面写「没有拿到下一个问题」,而 Case 其实有一道可答的题。 +- 触发条件:同一探针被重新 set-focus(旧焦点已链接到最新助手轮、被 `superseded` 且没人答;新焦点尚无 `asked_turn_id`);或正文末尾带着题干句、问题由客户端挂到这条消息上。 +- 根因:(1) GET 组装只在最后一条助手轮**没有**链接焦点时才把悬空的活焦点挂上去,旧死焦点占着位置,活焦点落到独立问题块;(2) 消息组件对死题仍打印题干(BUG-917 画法:题干无选项);(3) 客户端 `placePersistedQuestion` 遇到目标消息挂着不同焦点就走独立块,且挂题时不剥正文题干;(4) BUG-917 的「死卡 → unavailable」判断没看 Case 是否另有活题。 +- 修复:GET 与客户端都让活焦点替换「superseded 且无答案」的死焦点;挂题时用既有 `stripQuestionSentences` 剥正文题干;死题或被替换的未答题在消息上什么都不画(当前焦点在 busy / 只读时仍保留题干);Case 另有活题时死题不再把缺口判成 unavailable;复制文本跳过死题。 +- 验证:`frontend/tests/rectification-dup-question-20260926.test.tsx` 新增三条 DOM 测试(真实 `RectificationAgenticChat` + 真实 `attachQuestionsToTurns`):同题重新出题、客户端守卫、正文残留题干——修复前全红(题干 2 次 / 0 个可点选项),修复后题干恰 1 次、4 个可点选项。 +- 防复发:任何题干可见位置(消息内、独立块、正文残留)都在同一组 DOM 测试里按「出现次数 = 1」锁定;新增挂题路径必须复用 `stripQuestionSentences` 与 `questionIsDeadUnanswered`。 +- 相关记录:BUG-585、BUG-917、BUG-1045、BUG-1046、BUG-678。 +- 复发自:BUG-585 / BUG-1045(题干两遍)。旧防线只覆盖「同一焦点」的重复(BUG-1046 的 `placePersistedQuestion` 只摘同 `focus_id` 的副本),没覆盖「两个焦点、同一句题干」;BUG-917 有意保留死题的题干,正好与新题形成两遍。原测试都只用单焦点夹具。 +- 修复版本:`codex/rectification-message-cleanup-20261001`(未部署)。 + +## BUG-1136 | 生时校正证据轮逐条复述用户说的经历,一次说十几件时正文占满屏 + +- 状态:resolved(2026-10-01 执行方实现;待 Claude 验收;未部署) +- 首次发现 / 最近更新:2026-09-29 / 2026-10-01 +- 影响面:`frontend/src/lib/rectification-agentic/v9/agent-run-finish.ts`、`agent-run-attempt.ts`、`host-fallback.ts`、`user-copy.ts::evidenceTurnRecap`、`case-dossier-response.ts`(每轮 `recorded_evidence`)、`turn-question.ts::recordedEvidenceByTurn`、`rectification-message-entry.tsx`、`src/mastra/agentic-rectification.ts` 两套提示。 +- 用户现象:开场一次说了 12 件经历,回复第一段是一整句「记下了:2000年 随家人搬家、2006年 小学毕业、……」,问题被挤到屏幕下方。 +- 触发条件:一轮里入账多件经历。 +- 根因:提示要求证据轮正文逐条复述「记下了:年 月 事件、…」,件数没有上限。 +- 修复:批次有入账条目时,证据轮正文由服务器按条目写——两件以内直接列出,三件以上「记下了 N 件事。」;案例快照给每条助手回复带上本轮入账清单(证据账本,排除拒绝与被替换),三件以上在消息里收起显示。提示改为「复述由服务器写,你不逐条复述」。中文日期标签直接接事件(「2016年入学」)。 +- 验证:`rectification-v9-agent.test.ts` 新增 12 件入账 → 正文与落库均为「记下了 12 件事。」;`rectification-message-cleanup-20261001.test.tsx` 覆盖复述规则、账本分组(拒绝 / 被替换排除)、12 件收起渲染与 2 件不收起。 +- 防复发:复述只来自服务器批次结果与证据账本,不来自模型正文;新增入账路径须经 `acceptedRecapLines` / `recordedEvidenceByTurn`。 +- 相关记录:BUG-606、BUG-633、BUG-635、BUG-1055。 +- 复发自:无(文案与形态问题)。 +- 修复版本:`codex/rectification-message-cleanup-20261001`(未部署)。 + +## BUG-1137 | 生时校正回复结算后仍显示「已完成 N 步」系统内部步骤 + +- 状态:resolved(2026-10-01 执行方实现;待 Claude 验收;未部署) +- 首次发现 / 最近更新:2026-09-29 / 2026-10-01 +- 影响面:`frontend/src/components/rectification-message-entry.tsx`(`timeline` / `vargaSentence` 在结算后为空)。 +- 用户现象:每条校正回复顶部一行「已完成 3 步」,展开是「看了你的资料 / 记录你说的经历 / 准备好下一个问题」——对用户没有信息量;真机复制出的文字里还多一个「1.」。 +- 触发条件:任何已结算的校正回复(含刷新、历史打开)。 +- 根因:校正与普通对话共用结算后的步骤回执(BUG-1050 只做了去重)。「1.」:步骤列表是 `
    `,收起后仍在 DOM 里;按纯文本复制时浏览器给有序列表项加序号(屏幕上 `list-style: none` 不显示)——为推断,无浏览器复现;回执整块不再渲染后不再可能出现。 +- 修复:校正回复结算后不渲染步骤时间线(含分盘说明句);写作中步骤行仍是等待态;普通对话结算回执不变。 +- 验证:`rectification-message-cleanup-20261001.test.tsx` 三条渲染测试——校正已结算无「已完成」与步骤名(改前红)、写作中仍有步骤与「正在分析」、普通对话结算仍「已完成 1 步」;`rectification-opening-plain-20260926.test.tsx`、`rectification-timeline-adapter.test.ts` 断言按三栏改。 +- 防复发:普通对话回执由范围锁测试守住;校正结算回执的重新出现会让上述测试红。 +- 相关记录:BUG-1049、BUG-1050、BUG-606(分盘说明句只在活动展开区)。 +- 复发自:无(产品修订)。 +- 修复版本:`codex/rectification-message-cleanup-20261001`(未部署)。 + ## BUG-1132 | 普通对话回答像谜语:四步开场形状逼出格局名、大运拟人、扮演象,问父母时爸妈揉成一段 - 状态:resolved(代码 + 合同测试;未部署,真机待产品) diff --git a/docs/tasks/PROGRESS-rectification-message-cleanup-20261001.md b/docs/tasks/PROGRESS-rectification-message-cleanup-20261001.md new file mode 100644 index 00000000..0c8fedc6 --- /dev/null +++ b/docs/tasks/PROGRESS-rectification-message-cleanup-20261001.md @@ -0,0 +1,58 @@ +# PROGRESS · 生时校正消息清理(2026-10-01,BUG-1135~1137) + +任务书:`TASK-rectification-message-cleanup-20261001.md`。执行:Claude fork 子代理。分支 `codex/rectification-message-cleanup-20261001`,基线 `origin/staging` @ `437dcecb`。未推送。 + +## 环境 + +Linux,Node 22.14(`/exec-daemon/node`),Python 3.13。`frontend/node_modules` 由主检出 `cp -al` 硬链(同一 lockfile;Turbopack 不接受软链),未跑 `npm ci`。无 Docker(DB 套件跳过 / 环境失败,同基线)。基线 `next build` 首次因本机内存紧张类型检查中断,单独重跑通过(`/` Static),gzip 以重跑产物为准。 + +## 交付 + +| T | 内容 | 提交 | +| --- | --- | --- | +| T1 一屏一题干(BUG-1135) | GET `attachQuestionsToTurns` 与客户端 `placePersistedQuestion` 让活焦点替换「superseded 且无答案」的死焦点;挂题时复用 `stripQuestionSentences` 剥正文题干;死题 / 被替换的未答题在消息上不画任何东西(当前焦点 busy / 只读时保留题干);Case 另有活题时死题不再判 unavailable;复制文本跳过死题 | `9ec908d3` | +| T3 结算后无回执(BUG-1137) | 校正消息结算后 `timeline=[]`、无分盘说明句;写作中照旧;普通对话不变 | `6e11a8f0` | +| T2 复述变短(BUG-1136) | 批次有入账条目时证据轮正文 = 服务器复述(≤2 件列出,>2 件「记下了 N 件事。」);快照每条助手回复带 `recorded_evidence`(证据账本,排除 rejected / superseded);>2 件时消息内 `
    ` 收起清单;两套 Agent 提示删逐条复述;中文日期标签直接接事件 | `b8dac9c1` | +| T4 记录 | BUG-1135~1137、BUG-917 修订注、CHANGELOG、DESIGN、VOICE、真机清单、本进度、README | 本提交 | + +## 复现与修复证据 + +- 形状 B(同题重新出题):`C · a superseded focus with the same stem on the latest message…`、`C · client guard: a message still carrying a dead focus…`——修复前 0 个可点选项(死题只剩题干 + 「没有拿到下一个问题」),修复后题干 1 次、4 个可点选项。 +- 形状 A(正文残留题干):`C · a stem left in the body of the message that receives the persisted question shows once`——修复前题干 2 次,修复后 1 次。 +- T3:`a settled rectification reply renders no step receipt` 在改动前红(临时回退组件验证),改后绿。 +- 「1.」来源:步骤列表是 `
      `,收起后仍在 DOM;按纯文本复制时浏览器为有序列表项补序号(屏幕上 `list-style: none` 不显示)。**推断,未在浏览器复现**;回执结算后不再渲染,该来源消失。 + +## T2 一次 12 件的结果 + +服务端:12 条入账 → 正文与落库都是「记下了 12 件事。」(`rectification-v9-agent.test.ts` 新测试)。前端:正文一行,其下收起的「看记下的 12 件」,展开 12 个 `
    1. `(如「2000年虚构事件1」),默认不展开;2 件时正文直接列出、无清单。 + +## 既有断言改动(原值 / 新值 / 原因) + +| 文件 | 原值 | 新值 | 原因 | +| --- | --- | --- | --- | +| `rectification-timeline-adapter.test.ts` | `/timeline: rectificationTimelineRows/` | `/timeline: settled \? \[\] : rectificationTimelineRows/` | BUG-1137 结算后不派生步骤 | +| `rectification-opening-plain-20260926.test.tsx` | turn 以「已完成 2 步」开头;两条步骤名各 1 次 | turn 以开场正文开头;无「已完成」;步骤名 0 次 | BUG-1137 | +| `agent-voice-copy-contract.test.ts` | `/证据轮正文只写一句复述/`、「记下了:2016 年 9 月入学、2020 年 6 月毕业」为好例 | `/证据轮的复述由服务器写/`、该句为坏例 | BUG-1136 | +| `rectification-v9-agent.test.ts` | `/证据轮正文只写一句复述/`;`answerText`/落库 `/^记下了:2016 年 9 月入学、2020 年 6 月毕业。/` | `/证据轮的复述由服务器写/`;整句等于服务器复述 | BUG-1136 | +| `rectification-agentic-entry.test.ts` | `/证据轮正文只写一句复述/` | `/证据轮的复述由服务器写/` | BUG-1136 | +| `rectification-adopt-flow-20260902.test.ts` | `/必须先用一句话承接用户本轮给出的事实(年份\+事件)/` | `/证据轮的复述由服务器写:「记下了 N 件事」/` | BUG-1136 | +| `rectification-host-fallback.test.ts` | 「2016年9月 入学、2020年6月 毕业」「2018年7月 入职」 | 无空格 | 中文日期标签直接接事件 | +| `rectification-grounding-20260927.test.ts`、`rectification-unwritten-evidence.test.ts`、`rectification-v9-stream.test.ts` | 同上四处带空格 | 无空格 | 同上 | + +## 门禁(基线 `437dcecb` vs 最终) + +| 项 | 基线 | 最终 | +| --- | --- | --- | +| tsc | 0 | 0 | +| lint | 0 error / 126 warning | 0 error / 126 warning | +| npm test | 4809 / pass 4744 / fail 24 / cancel 0 / skip 41 | 4820 / pass 4755 / fail 24 / cancel 0 / skip 41;失败清单逐名一致;基线名 0 丢失,新增 11 | +| `/` | Static | Static | +| 首屏 gzip | JS 555,325 / CSS 68,764 | JS 555,587(+0.05%)/ CSS 68,813(+0.07%) | +| 快速门 | — | Python 1036 passed / 1 skipped / 0 failed;npm 步同 24 条环境失败 | + +## 缺口 + +- 「1.」来源为推断,未在浏览器复现。 +- 真机清单 `docs/testing/rectification-message-cleanup-20261001.md` 未执行。 +- 无 Docker:本单不改库,DB 套件未跑。 +- Skill 未 bump(只改系统提示与服务端文案)。 diff --git a/docs/tasks/README.md b/docs/tasks/README.md index 2057f8d1..5284d76f 100644 --- a/docs/tasks/README.md +++ b/docs/tasks/README.md @@ -263,6 +263,8 @@ | `TASK-rectification-message-cleanup-20261001.md` | — | **校正消息清理**:题干两遍(作废旧焦点仍打印题干 + 独立问题块再打印一次)→ 一屏一题干;证据轮正文改为「记下了 N 件事」+ 服务端清单可展开;校正结算后不显示「已完成 N 步」与「1.」泄漏。推翻 BUG-917 作废题留题干、VOICE 逐条复述 | 待领取 | BUG-1135~1137 | | `TASK-rectification-chart-tier-caveats-20261001.md` | `PROGRESS-rectification-chart-tier-caveats-20261001.md` | **报告与聊天标注判断不了的分盘**:采用后读 `active_birth_provenance`(segment-v1)→ 结果 `segment_summary` 档位,blocked/indistinct 的 D9/D10 在聊天 answer_policy 与一句说明、报告章节顶部提示 + 主题降级;旧资料逐字节不变;不改库、不改 consult/route.ts | 已验收(Claude 10-01:存盘分钟头段判定修正后全套门禁对 staging 一致;主题段降级未做——引擎正文无主题→分盘映射,另议;写作模型报告路径生产关闭未接入) | BUG-1138~1139 | | `TASK-rectification-angle-timing-research-20261001.md` | — | **角度类时间技法研究(离线)**:行运土木罗压本命上升 / 天顶度数、次限推运角、太阳弧角(1° ≈ 4 分钟出生时间),77 例 v5;乱序日期对照 ≥ 50 次必做、留一法、不得挤出真值;显著才叠加到六题后验比头段命中与区间宽度 | 待领取 | BUG-1141 | +| `TASK-rectification-message-cleanup-20261001.md` | `PROGRESS-rectification-message-cleanup-20261001.md` | **校正消息清理**:题干两遍(作废旧焦点仍打印题干 + 独立问题块再打印一次)→ 一屏一题干;证据轮正文改为「记下了 N 件事」+ 服务端清单可展开;校正结算后不显示「已完成 N 步」与「1.」泄漏。推翻 BUG-917 作废题留题干、VOICE 逐条复述 | 已实现待验收(分支 codex/rectification-message-cleanup-20261001,未推送) | BUG-1135~1137 | +| `TASK-rectification-chart-tier-caveats-20261001.md` | — | **报告与聊天标注判断不了的分盘**:采用后读 `active_birth_provenance`(segment-v1)→ 结果 `segment_summary` 档位,blocked/indistinct 的 D9/D10 在聊天 answer_policy 与一句说明、报告章节顶部提示 + 主题降级;旧资料逐字节不变;不改库、不改 consult/route.ts | 待领取 | BUG-1138~1139 | | `TASK-rectification-typed-event-scoring-research-20260929.md` | `PROGRESS-rectification-typed-event-research-20260929.md` | **打字经历按选择题规则计分(离线研究,不上线)**:计分通道不对称 + 已入账年份挡题;R0 学业质量题措辞 / 年精度显示成 1 月(冻结文件,需重新冻结) | 已验收(Claude 2026-09-29 合并验收:全量前端 4302/24 与基线同 24 条环境失败、tsc 0、lint 0 error、`/` Static、gzip +0.16%、快速门 pytest 1001 passed、两份回放复跑一致),待部署核对 | BUG-1088、1089 | | `TASK-report-reader-polish-20260929.md` | `PROGRESS-report-reader-polish-20260929.md` | **报告页打磨**:生成入口挪进页面主体(删标题栏按钮)、详情页到底部按钮(懒渲染一次到底)、导出按钮带文字、目录一级/二级分层、去掉「字段」与 RL/NL 缩写表头、状态列同义重复去重、报告表格淡底色、分块导出显示真实文件大小 | Claude 直接执行并自验(tsc 0、lint 0 error、全量 fail 与基线同 24 条、`/` Static、gzip +7 B、快速门 Python 1000 passed),已部署 staging `d7772011`,真机欠 | BUG-1092~1094 | | `TASK-report-english-edition-20260929.md` | `PROGRESS-report-english-edition-20260929.md` | **报告中英两版**:同一次引擎计算渲染 zh/en 两遍(不用模型翻译),瑜伽库 477 条补英文、模板与前端表头英文化;中文逐字节不变、英文零汉字、两版数字序列一致;阅读页 `?lang=en` 切换,导出当前语言 + 「问 AI 建议导出英文版」提示;旧报告不补英文 | Claude 直接执行(含两个 fork 子代理)并自验(tsc 0、lint 0 error、全量 fail 与基线同 24 条、`/` Static、gzip +0.06%、Python 定向全绿),已部署 staging `d7772011`,真机欠 | — | diff --git a/docs/testing/rectification-message-cleanup-20261001.md b/docs/testing/rectification-message-cleanup-20261001.md new file mode 100644 index 00000000..a31072d7 --- /dev/null +++ b/docs/testing/rectification-message-cleanup-20261001.md @@ -0,0 +1,16 @@ +# 真机清单:生时校正消息清理(2026-10-01,BUG-1135~1137) + +> staging 部署后,用自己的账号在手机(375px 宽)和电脑各走一遍。用虚构经历即可。 + +1. **一次说很多件**:新开一次生时校正,开场直接打「2000年搬家,2006年小学毕业,2009年初中毕业,2011年去外地艺考,2012年上大学,2016年毕业,2017年工作,2019年换工作,2021年结婚,2023年换城市」。 + - 回复正文只有一行「记下了 10 件事。」;下面有收起的「看记下的 10 件」,点开是 10 条; + - 回复顶部**没有**「已完成 N 步」; + - 下面的题目只出现一次,四个选项可点。 +2. **说两件**:再打「2024年3月换工作,2024年8月搬家」。正文直接列出两件,没有「看记下的」。 +3. **答一道题**:点任一选项;新题出来后,屏幕上旧题不留半句题干,新题只出现一次。 +4. **写作中**:发一句话后,回复写的过程中能看到步骤进度(如「正在记下这件事…」),写完后步骤消失。 +5. **刷新**:刷新页面,以上三点保持(题干一次、无「已完成」、清单仍可展开)。 +6. **普通对话**:回到普通对话问一句,回复顶部仍有「已完成 N 步」可展开。 +7. **旧校正会话**:从会话列表打开一个以前的校正会话,能打开、不报错、历史题目与答案都在。 + +有任何一项不符,截图发给 Claude。 diff --git a/frontend/DESIGN.md b/frontend/DESIGN.md index 6415464e..ed968849 100644 --- a/frontend/DESIGN.md +++ b/frontend/DESIGN.md @@ -38,10 +38,18 @@ This file adapts the full visual analysis in `CLAUDE_DESIGN.md` to the shipped J 本命咨询不再有单独的「写结论」阶段:算完盘后,同一个模型循环接着就写回答。时间线的变化只有两处,没有新组件、没有新动效。一是不再出现「正在整理判断依据」「正在写结论」这两个阶段事件,也不再发 `think.step`;计划里的思考行在第一段正文出现时收口(沿用 `completeLiveThink`),写作行的进行中句统一为「正在组织回答」。二是第一段正文要等模型写出第一个二级标题或满 160 字才出现(为了把工具前后的过程说明挡在正文外),开场句会整段一起到达,之后照常按帧放出。截断、停止、失败三种收口与提示不变(BUG-1051)。 +## 校正消息:一屏一题干、复述变短、结算后无回执(2026-10-01,BUG-1135~1137) + +- **一屏一题干。** 屏幕上只有当前有效焦点打印题干。被替换掉、没人答过的旧题(`superseded` 且无答案,或不是当前焦点的未答题)在它的消息上什么都不画——不留「题干没选项」(推翻 BUG-917 的那种画法)。GET 组装时,最后一条助手消息挂着这种死题而当前焦点还没挂上时,当前焦点占这个位置;客户端挂题时同样把死题换掉,并把正文末尾残留的同一句题干剥掉(`stripQuestionSentences`)。最新消息挂着死题、而 Case 另有活题时,不再显示「没有拿到下一个问题」。 +- **复述变短。** 证据轮正文由服务器按本轮入账条目写:两件以内「记下了:2016年入学、2020年毕业。」,三件以上「记下了 N 件事。」。条目来自证据账本(按说出它的那一轮挂到该轮回复上,拒绝与被替换的不算),三件以上时在正文下面放一个默认收起的 `
      `,摘要「看记下的 N 件」,展开是逐条列表;两件以内不放。中文日期标签直接接事件(「2016年入学」),ISO 标签保留空格(「2016-09 入学」)。 +- **结算后无步骤回执。** 校正回复写作中,步骤行照旧是等待态;结算后整块不画(包括分盘说明句),不再出现「已完成 N 步」。普通对话的结算回执不变。 + ## 校正开场与步骤回执(2026-09-26,BUG-1049 / BUG-1050) 开场一轮只有两段字:正文两句讲做法(要把出生时间缩小到更准的范围、现在先在哪段时间里找;你说几件大事和大概年月,我拿去和星盘对照),下面是问题块里的题干(六个例子 + 一个带年月的回答示例)。题干只出现一次:正文里和题干逐句相同或几乎相同的句子才会被去掉;只是开头几个字一样、内容不同的句子保留(以前按前 12 个字判定,把正文里的例子句删掉了)。 +> 2026-10-01 修订:校正回复结算后不再显示步骤回执(BUG-1137),本段只适用于写作中的步骤行。 + 回答上方的步骤时间线:同一个完成名只出现一行(同一工具调两次、或两个工具共用一个名字,都只算一步),折叠后的「已完成 N 步」数的是读者看得见的行数。完成名与进行中句都写大白话,进行中句沿用 BUG-1047 已批准的「正在准备下一个问题…」「正在记下这件事…」「正在重新对照盘面…」;失败行写「重新对照盘面未完成」这类「在做什么 + 未完成」,不写「重新对照了盘面未完成」。没有新组件、没有新动效。 ## 校正打字回答的阶段进度句(2026-09-26,BUG-1047) diff --git a/frontend/docs/VOICE.md b/frontend/docs/VOICE.md index df8a3ce8..3078c071 100644 --- a/frontend/docs/VOICE.md +++ b/frontend/docs/VOICE.md @@ -279,7 +279,7 @@ Jyotisha 的可见文案是产品的一部分。正确性红线(真实性、 | (采用后只念代表分钟)代表分钟是 05:12。 | 这 27 分钟里,事业方向、性格底色的判断是稳定的;婚恋(D9)会随分钟变,看盘时按范围读。这不是已确认的唯一出生分钟。 | 采用后先讲区间里什么稳、什么随分钟变;两句来自服务端,不是模型编的。 | | 当前问题已更新,请刷新后重新作答。 | 这一问刚换成新的,刷新后再答就行。 | 机器状态句改成下一步。 | | 选择题处理失败,请稍后重试。 / 这道题已经过期,请回答当前问题(点选没提交上,下面又画出同一张卡) | 这次没提交上,请再点一次。 | 点选没到服务器时撤回已选,只留一张可点的卡,错误行就这一句。不说「稍后」,不把服务端状态码翻成话。 | -| 好的,记下了。 | 记下了:2016 年 9 月入学、2020 年 6 月毕业。 | 只复述年-月和事件短语,不评价价值。 | +| 记下了:2000年 随家人搬家、2006年 小学毕业、2009年 初中毕业、……(一次说了十几件,逐条复述占满屏) | 记下了 12 件事。(下面「看记下的 12 件」收起) | 2026-10-01 起复述由服务器按入账条目写:两件以内直接列出(「记下了:2016年入学、2020年毕业。」),三件以上只说件数,清单收起在同一条消息里;模型不逐条复述(BUG-1136)。 | | 记下了,这方面先跳过。 | 答「这类事都没有过」回「记下了,这条按没有发生过记。」答「记不太清楚 / 这条先跳过」回「记下了,这题先放着,后面换个问法再问一次。」 | 拒绝和跳过不是同一句话。 | | 界面上继续有下一问。 | 接下来我们继续。 | 正文不得断言界面当前有没有题;题干在同一条消息里正文之后出现,过渡用中性句。 | | 选一个最贴近你实际情况的就行,答不上来也可以选「一时说不好」。 | 2024 年那件事记下了。接下来我们继续。 | 正文先承接用户刚说的年份和事件;不要预告选项。 |