Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0193vBv6w5MV2cifdTUu9H5P
6.0 KiB
6.0 KiB
TASK · 定向补事改成逐条点选卡 + 文案 + 参考题入口(2026-09-13)
- 基线:
origin/staging@4e93ca15(代码5d54d059,已部署;含 BUG-646~660,Skill 10.0.24) - 分支:
codex/rectification-targeted-collect-cards-20260913,基于origin/staging - 执行方:coding agent;验收:Claude
- BUG 编号起点:BUG-661(开工时核对
docs/BUG_HISTORY.md最大号,应为 660) - 决策来源:
TASK-rectification-after-pool-empty-decision-20260913.md,产品负责人 2026-09-13 拍板:做 A + D,顺带 C;B 单独研究单(TASK-rectification-probe-supply-research-20260913.md),不与本单混做。 - 不改引擎计分、不改确认门;Skill 若改用户可见流程升 10.0.25(本单预计要升:定向补事的问法变了)。
1. 现状(2026-09-13 真机,5d54d059)
六道带年月题答完 → 刷新 no_new_probes → 落下定向补事口述题:「还有4条线能把 04:51 和 05:06 分开:哪年结婚或订婚、哪年收入明显变过、哪年搬家、家里哪年添丁。记得哪件说哪件,年月大概就行。」范围 04:48–05:07,5 簇,头名 32%。流程正确但体感死板:一道开放题堆四条线,没有可点的东西;「04:51 和 05:06」是范围两端而不是剩余候选的说明。
2. 决策记录(产品负责人 2026-09-13)
- A:定向补事拆成一次一条的点选卡。每条线先问「有没有」(有 / 没有 / 记不清),答「有」再口述年月;答「没有」记为该线近年无事(不计分,只用于不再问);答「记不清」同「没有」处理但话题状态记 skipped;所有线都问完仍无新事 → 出「目前范围」卡(现有 S3)。
- D:题干与卡下提示说清「现在还剩 04:48–05:07 里 N 个候选,能把它们分开的是这几条线」;不再写「04:51 和 05:06」这类范围端点。
- C:「目前范围」卡下加入口「再答两道参考题微调排序」,点了才出 D9 / D10 性格卡,按 BUG-629 的
tie_break(±1、不淘汰、不改can_adopt)。不点不出。 - 「没有」的信息价值:不计分、不淘汰、不进引擎;只在账本话题里记
collect:targeted:<domain>declined,防复问;与 BUG-629「无年月否定不参与打分」一致。 - 四条线都「没有」后直接出卡:接受(现有行为)。
3. 硬红线
- 不改
SCORE_DELTA、MIN_ACCEPTANCE_*、收敛门;性格题不得回到计分池(BUG-629 防复发)。 - 每条线只问一次;「有」之后的年月追问只问一次,答不出则该线记 skipped。
- 焦点落库走服务端(
persistServerOwnedFocus),target_kind走 BUG-656 的映射;不得再出现「决策有题、库里无题」(BUG-652 / 657 不变量测试照跑)。 - 文案禁词照旧(领域、任何领域、做不了、材料不够、还差 N 件、才会变、这次给出、最终)。
- 既有测试总数不降;改断言写原值 / 新值 / 原因;记录只用脱敏领域 + 年月。
4. 任务分解
- T1 逐条点选(BUG-661):
collection-question-pool.tstargetedCollectPool改为按remainingLayers → REMAINING_LAYER_DOMAIN逐条产出{domain, existence_prompt, year_prompt},排除已覆盖 / 已 declined / 已 skipped 的线;method-followup.tstargetedCollectFollowup产出带choice_frame的collect:targeted:<domain>(选项 A 有 / B 没有 / C 记不清,scoring:false);answer-choice.ts处理:A → 落collect:targeted:<domain>:year口述焦点(题干「大概哪年几月?」);B → 话题 declined、下一条;C → 话题 skipped、下一条;口述年月 → 走现有 batch 写证据 → 引擎重算 → 回到 S2。验收:§1 序列六题答完后出第一条卡「结过婚或订过婚吗?」;答 B → 下一条卡;答 A → 「大概哪年几月?」;答「2022 年 5 月」→ 账本多一条 relationship 事件、引擎重算、出现新的带年月题或范围句变化;四条都 B → 「目前范围」卡;全程不出现「没有拿到下一个问题」。 - T2 文案(BUG-662):
rangeNarrowHint/ 定向卡题干 / 时间轴行:「现在还剩 04:48–05:07 里 5 个候选,能把它们分开的是这几条线:…」;卡下提示「还能再收窄:如果记得…」保留。agent-voice-copy-contract加禁词「能把 HH:MM 和 HH:MM 分开」(正则)。验收:文案合同测试。 - T3 参考题入口(BUG-663):
rectification-range-delivery.tsx卡下入口「再答两道参考题微调排序」→ 点击调用set-focus落 D9 / D10varga_style卡(复用 BUG-629tie_break路径);答完刷新卡,can_adopt不变。验收:不点不出;点后出 D9 卡、答后rounds.kind=tie_break、头名可变但无淘汰。 - T4 Skill 10.0.25 + 记录:SKILL.md 与
references/conversation-strategy.md里「定向补事」改为逐条点选;registry;case-status.ts;部署后先验 10.0.24 历史可打开(BUG-621);BUG-661~663 入历史;CHANGELOG;PROGRESS;docs/testing/rectification-scenarios-20260907.md加场景 0d。
5. 让步顺序
T3 可拆下一单;T1 + T2 不可省。
6. 开工前置命令
git fetch origin --prune
git worktree add -b codex/rectification-targeted-collect-cards-20260913 .worktrees/rectification-targeted-collect-cards-20260913 origin/staging
grep -o "^## BUG-[0-9]*" docs/BUG_HISTORY.md | sort -t- -k2 -n | tail -1 # 应为 660
cd frontend && npm test -- tests/rectification-collection-question-pool.test.ts tests/rectification-probe-pool-exhausted-20260911.test.ts tests/rectification-replay-20260911.test.ts tests/rectification-yearless-probe-downgrade-20260909.test.ts tests/agent-voice-copy-contract.test.ts
7. 验收口径
- 前端
tsc --noEmit0 错、npm run lint0 error、相关套件 fail=0、测试总数 ≥ 基线;next build后/仍 Static、首屏 gzip ±2%。 - Skill 升版后
skill-registry.test.ts通过,旧版本哈希不变。 - 部署后真机按 §4 T1 验收序列走一遍。