From d925251654981bbc989bfa733c50a4833c66f6ef Mon Sep 17 00:00:00 2001 From: Jesse_Chen Date: Wed, 9 Sep 2026 05:36:48 +0000 Subject: [PATCH] docs(tasks): conversation economy brief (BUG-604/605/606) Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_0193vBv6w5MV2cifdTUu9H5P --- docs/tasks/README.md | 1 + ...ification-conversation-economy-20260909.md | 50 +++++++++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 docs/tasks/TASK-rectification-conversation-economy-20260909.md diff --git a/docs/tasks/README.md b/docs/tasks/README.md index 3231e576..fac8bcf4 100644 --- a/docs/tasks/README.md +++ b/docs/tasks/README.md @@ -85,6 +85,7 @@ | `TASK-rectification-ux-20260902.md` | `PROGRESS-rectification-ux-20260903.md` | 会话面空白假死与交互摩擦 | 已验收 | `d159f08e`(09-03 在新基线重做后合入,BUG-505~509) | | `TASK-rectification-timeline-20260909.md` | — | 常驻吸顶时间轴:轴锁**当前**搜索窗口并随放宽缩放、时段/分钟两套标记、候选点二元编码不分置信度(BUG-560 blocked)、无 hover(BUG-575)、只读不可采用。实现用第三个 grid 行而非 `position: sticky`,`useConversationScrollAnchor` 一行不改;条高固定是正确性要求;吸顶条只留区间与宽度两个元素 | 已验收通过;宽度口径与空心点两处未通过→修复单 | `ce91a0d2` | | `TASK-rectification-timeline-fix-20260909.md` | `PROGRESS-rectification-timeline-fix-20260909.md` | 时间轴修复单:宽度读数改含两端分钟数(与 BUG-593 报告/卡片一致);标记改读推断层候选全集,被淘汰分钟留在原地变空心(客户端投影只含 active,DESIGN §10 描述在真实数据下画不出) | 待执行 | `codex/rectification-timeline-fix-20260909`(BUG-602~603) | +| `TASK-rectification-conversation-economy-20260909.md` | `PROGRESS-rectification-conversation-economy-20260909.md` | 对照竞品后产品拍板三条:开场三句讲做法 + 一次收多件(推翻 opening brief「不要一次说完/不举例」与 SKILL L52);采集题「没有 / 记不清」按钮(不做示例骨架条);每轮只留一句(方法句进活动记录、点选旁白去领先落后、证据轮正文一句复述 + 服务端裁剪);Skill 10.0.19 | 待执行 | `codex/rectification-conversation-economy-20260909`(BUG-604~606) | ### 聊天主链路与首页 diff --git a/docs/tasks/TASK-rectification-conversation-economy-20260909.md b/docs/tasks/TASK-rectification-conversation-economy-20260909.md new file mode 100644 index 00000000..d2552e11 --- /dev/null +++ b/docs/tasks/TASK-rectification-conversation-economy-20260909.md @@ -0,0 +1,50 @@ +# TASK · 生时校正对话精简:开场讲清做法并一次收多件、采集题「没有 / 记不清」按钮、每轮只留一句话(2026-09-09) + +- 基线:`origin/staging` @ `aa499da1`(代码头 `724a1215`;时间轴已上线) +- 分支:`codex/rectification-conversation-economy-20260909`,基于 `origin/staging`;与 `codex/rectification-timeline-fix-20260909`(BUG-602/603,只改 `rectification-timeline-scale.ts` / `rectification-candidate-result.ts` / 时间轴测试)无文件重叠,可并行 +- 执行方:coding agent;验收:Claude +- 涉及文件:`frontend/src/lib/rectification-agentic/v9/agent-run.ts`(`buildOpeningBrief` L225–245)、`skills/jyotish-birth-time-rectification/SKILL.md` §4 L52 与证据轮正文口径、`references/conversation-strategy.md`(bump **10.0.19**)、`frontend/src/components/rectification-agentic-chat.tsx`(`composer-wrap` 采集题按钮;`vargaSentence` 渲染 L1577/1637)、`frontend/src/components/chat-message-content.tsx` L115、`frontend/src/components/agent-activity-status.tsx` L93、`frontend/src/lib/rectification-agentic/v9/choice-action.ts::composeChoiceNarration` L99、`v9/probe-explain.ts` L220、`v9/answer-choice.ts`(拒答路径 L999 `collectDeclinedAck`、跳过路径)、`frontend/src/lib/rectification-agentic/user-copy.ts`、`frontend/DESIGN.md`、`frontend/docs/VOICE.md` +- BUG 编号起点:**BUG-604**(602/603 已由时间轴修复单占用) +- 优先级:**P1**(产品负责人 2026-09-09 拍板;三条一起做) + +## 1. 决策记录(产品 2026-09-09 口头决定;标 ★ 的推翻既有口径,执行方按本节为准) + +1. **开场三句讲做法 + 一次收多件。** ★ 推翻 `agent-run.ts` L243 opening brief 的"不要要求一次说完、不要举大学/工作/搬家的例子",也推翻 SKILL.md L52"不得固定复述完整流程、领域清单"。理由:重算按轮计费不按事件,一条消息报三件只跑一次 compare(≈22s),分三轮跑三次;列领域不列年份不构成引导。 +2. **采集题上方两个 44px 按钮:「没有」「记不清」。** 「没有」= 打字"没有"的既有拒答路径(`declined`,不调模型,瞬时收口);「记不清」= `skipped`,本次不再问该领域,采用后核对阶段仍可碰。**不做**带骨架的示例条(产品明确不要)。 +3. **每轮只留一句话。** (a) "本轮对照了 …" 方法句从正文移除,进"已完成 N 步"的活动记录展开区(凭证数据不变);(b) 点选题旁白去掉"X 这段领先,Y 这段落后",改为"已记录,范围没变。"或"已记录,范围收到 A–B。";(c) 证据轮正文只准一句复述:"记下了:2016 年 9 月入学、2020 年 6 月毕业。"(年-月 + 事件短语,不评价价值,不写"对校正很有帮助"),范围句照旧由服务端接在后面。 +4. 不学竞品把年份预填进回答条;不动采用门、确认门、各道门槛;不动 `page.tsx`;不动 `use-conversation-scroll-anchor.ts`。 + +## 2. 任务分解 + +### 2.1 BUG-604 开场(决策 1) +- `buildOpeningBrief` 改为给模型三个事实:当前搜索窗口(`candidate_range`,如 04:45–05:15)与来源(intake 声明的不确定档)、做法三句的要点、六类领域清单(升学、第一份工作、搬家、恋爱结婚、家里的大事、生病受伤)。正文模板由 Skill 规定为:一句窗口与做法、一句"最后给区间和代表分钟,不给精确到秒"、一句"想到几件说几件,有大概年月就行"+ 六类;仍不得写具体年份、不得要求先准备材料。首题 `spokenPrompt` 保持采集题身份(`collect:other:*`),题干改为"先说你最容易想起的一两件,年月大概就行"。 +- 批量写入:`rectification-record-evidence-batch` 已支持多事件;确认一条消息含 3 件不同领域事件时 batch 一次写入、compare 只跑一次、后续逐领域采集只问缺口(`nextDatedCollectFollowup` 已按 `hasConfirmedDomain` 跳过)。 +- 验收:opening 落库正文 ≤ 4 句、含六类中至少五类、不含年份;mock 一条三事件消息 → receipt 里 compare 一次、`evidence` 三条、下一问不再是这三个领域;`agent-voice-copy-contract` 收新句。SKILL.md L52 改口径,`conversation-strategy.md` OpeningPolicy 同步,Skill 10.0.19 快照与 registry。 + +### 2.2 BUG-605 「没有 / 记不清」(决策 2) +- `collect_spoken` 焦点激活且未 busy 时,`composer-wrap` 内输入框上方渲染两个按钮(44px,次要样式,与被删的「先这样」不同类名,不得复用 `rectification-step-state`)。「没有」POST 与打字"没有"相同的请求(复用 `applyRectificationChoice`/拒答分支,`collectDeclinedAck` 原句);「记不清」走 `resolve-focus status=skipped` 的服务端路径,回执"记下了,这题先放着。"(新文案对照 VOICE.md)。 +- 服务端:`skipped` 的领域进入 `declinedSkippedTopics` 后,本会话 `nextDatedCollectFollowup` / holdout 不再问它(与 declined 同待遇),采用后的 `remainingReverseVerifyProbes` 可用。 +- 验收:`rectification-spoken-collect.test.ts` 扩——两个按钮只在 collect_spoken 出现;点「没有」后焦点 `declined`、无 agent run(receipt phases 空);点「记不清」后焦点 `skipped`,下一问不再是该领域;`agent-voice-copy-contract` 收新句。 + +### 2.3 BUG-606 降噪(决策 3) +- (a) `chat-message-content.tsx` L115 不再渲染 `vargaSentence`;`agent-activity-status.tsx` 在展开的活动行里保留它(折叠态不显示)。`rectification-varga-style-copy.test.ts` 等三栏。 +- (b) `composeChoiceNarration`:去掉 `probe-explain.ts` L220 的领先/落后子句;模板只有"已记录,范围没变。"或"已记录,范围收到 A–B。"(范围变宽时写"变为")。`rectification-answer-choice*.test.ts` 三栏,`agent-voice-copy-contract` 把"领先""落后"加进机器词表(仅对用户可见旁白)。 +- (c) Skill 证据轮口径:正文一句复述,格式"记下了:年 月 事件短语(、…)。",不得加评价句;`agent-run` 的 `stripQuestionSentences` 之后再加一道守卫:证据轮正文超过 2 句时只保留首句(服务端裁剪,不靠提示词)。验收:mock 模型写三句 → 落库一句 + 范围句;真实 Case 回放正文不含"很有帮助/很有价值/很有分量/特别有用"。 + +### 2.4 记录 +- `docs/BUG_HISTORY.md` BUG-604(关联 BUG-488 开场口径、BUG-558)、BUG-605(关联 BUG-546 家人"没有"收口)、BUG-606(关联 BUG-545、BUG-585 剪问句);`CHANGELOG.md`(Skill 10.0.19);`frontend/DESIGN.md`(采集题按钮、方法句位置);`frontend/docs/VOICE.md`;`PROGRESS-…`;`docs/testing/rectification-scenarios-20260907.md` 加"开场一次报三件后不再被逐个追问这三个领域;每轮正文一句"。 + +## 3. 让步顺序 + +2.3 (b)(c) 与 2.2 最先(改动小、立刻可见);2.1 必做;2.3 (a) 必做;2.4 不可省。 + +## 4. 开工前置命令 + +```bash +git fetch origin --prune +git worktree add -b codex/rectification-conversation-economy-20260909 .worktrees/rectification-conversation-economy-20260909 origin/staging +cd .worktrees/rectification-conversation-economy-20260909 +ln -s /workspace/Jyotisha/frontend/node_modules frontend/node_modules +cd frontend && ./node_modules/.bin/tsc --noEmit; npm run lint 2>&1 | tail -1 +ls tests/rectification-*.test.ts tests/agent-voice-copy-contract.test.ts tests/skill-registry.test.ts | grep -v database | xargs npx tsx --test 2>&1 | grep -E "^# (tests|pass|fail)" +```