fix(consult): write the first turn as chat, not a sectioned report

Ordinary consult first turns drop Markdown headings and the required
action list. People are named in the paragraph, and pinned examples no
longer contain copyable advice. BUG-1244, BUG-1245.
This commit is contained in:
jesse-ux
2026-10-06 15:58:40 +08:00
committed by Jesse_Chen
parent 6d28298226
commit 5a589a9058
18 changed files with 434 additions and 168 deletions
@@ -0,0 +1,74 @@
# PROGRESS:普通对话首轮改成聊天 — 2026-10-06
基线:`origin/staging` `86cafe68`(任务书,只有文档)。形状文件上一次产品提交仍是 `7806c72f` / `6a02e5e9`,没有更新的提交,没有变基。分支 `codex/consult-conversational-answer-20261006`,工作树 `.worktrees/consult-conversational-answer-20261006`。
未推 staging,未部署。BUG-1244、BUG-1245 状态是 `fixed-pending-verify`。Skill 版本不变。
## 做了什么
1. 首轮形状只留在 `frontend/src/lib/consultation-thinking-plan.ts`。`product-voice.ts`、`skill-binding.ts`、`index.ts`、`route.ts` 引用它,不再各写一套标题。首轮不写二级标题;问到几个人就分段落、段首点名;行动不强制;通常三到六段,不设硬截断。追问仍讲清楚为准。换领域或要求完整看时,回到同样的段落形状(BUG-1244)。
2. Good 示范改成段落。删掉三句会被照抄的行动(书面确认、这周去看小毛病、给妈妈打电话先问近况),也删掉「## 这周」。另加一条只示意结构的汇报体 Bad(BUG-1245)。
3. 思考计划去掉「这周可以做什么」。正文没有二级标题时,流式中没有任何一节停在进行中,结算后一起完成。写作行是「组织回答」/「正在组织回答…」。历史消息里的旧标题仍能拆开。
4. 文案:`frontend/docs/VOICE.md` 第七条、首轮只说一遍、对照表;`frontend/DESIGN.md` 写作行。真机清单 `docs/testing/consult-conversational-answer-20261006.md`。
## 提示词里还留下的旧标题(允许的兼容命中)
`git grep -n "这周可以做的一件事" frontend/src` 只剩:
- `frontend/src/lib/consultation-thinking-plan.ts:20`:`REPORT_HEADING.action`。给旧回答拆段、缩短标题用,不拼进新提示词。
`git grep -n "骨架不可省略" frontend/src`:无。
`git grep -n "REPORT_HEADING" frontend/src` 都在 `consultation-thinking-plan.ts`,没有出现在模板字符串里:
| 行 | 用途 |
| --- | --- |
| 17–21 | 常量。注释写明只给 2026-10-06 之前的回答用 |
| 95–97 | `consultationReportHeadings()` 返回这三个字符串,给旧回答对标题 |
| 140、152 | 思考节 `heading` 字段(schema 必填),值是「盘上依据」。无标题的新回答不靠它推进进度 |
| 160 | 时间节的 `heading` 字段,值是「时间怎么看」 |
`frontend/src` 的 `*.ts` / `*.tsx` 里没有 `## 盘上依据`、`## 时间怎么看`、`## 这周可以做的一件事`。仓库根 `SKILL.md` 里也没有这三句。历史文档、旧任务书、旧真机记录里的标题没有改。
## 断言三栏(本单改过的)
| 位置 | 原值 | 新值 | 原因 |
| --- | --- | --- | --- |
| 思考计划节 | 四节,含「这周可以做什么」 | 三节:question / support / timing | T3,BUG-1244 |
| 无标题时的进度 | 口语开场还没有标题时首节 active | 整篇没有二级标题时没有 active;结算后全部 done | 首轮不再写标题,避免一直转圈 |
| 时间节出现后的状态 | done, done, done, active | done, done, done | 行动节已删,时间节是最后一节 |
| 续写 | 要求补三个固定二级标题 | 认出最后一个已有标题,接着用段落写,不再点名三个节名 | D1 |
| 本命列表 | 并列点必须是 Markdown 列表 | 默认段落;用户要求列举,或三个以上时间窗,才用列表。每日星语仍用列表 | D5 |
| 首轮指令 | 要求 `## 盘上依据` 等三个标题 | 不要求任何 `##` 节名;含段首点名、行动不强制、三到六段 | D1–D3 |
| 口吻合同 | 「骨架不可省略」、不设字数上限 | 通常三到六段、不设硬截断;合同里没有「骨架不可省略」 | D1/D3 |
| 技能骨架句 | Level 2 模板就是回答形状;行动出现一次 | Level 2 只是依据来源;六步宫位和 Yoga 表不贴在标题下 | D1/D2/D6 |
| 长度句 | There is no length cap | usually three to six paragraphs;There is no hard cutoff | D3,只约束首轮 |
| 行动句 | 一到三条破折号,只在最后一节 | 行动不强制 | D2 |
| 父母 / 事业示范 | 带 `##` 和行动清单 | 段落、段首点名、括号只放依据占位 | D1/D4,BUG-1245 |
| 寒暄合同 | opener-plus-skeleton | paragraph shape | D1。测试名保留 |
| 写作提示(两份路由测试) | 提示里含三个固定 `##` 标题 | 含段首点名、行动不强制、三到六段,且不含 `##` + 旧节名 | D1–D3。夹具正文仍带旧标题,只测续写和放出 |
测试名没有删。新增两条:无标题首轮的思考节与写作行(BUG-1244);示范不含可抄行动和「## 这周」(BUG-1245)。
## 验证
| 项 | 结果 |
| --- | --- |
| `tsc --noEmit` | 0 错 |
| `npm run lint` | 0 error,126 warning。本单改过的文件里,只有 `consultation-thinking-plan.ts` 的 `_domains` 未使用,这是原来的参数。没有为清 warning 改业务代码 |
| 定向测试 | `consultation-thinking-plan`、`consultation-voice-contract`、`consultation-smalltalk`、`consultation-run-timeline`、`consult-career-yoga-functional-20261002`、`consult-no-presupposition-20261001`:79 项,79 通过,0 失败,0 cancelled |
| `npm test` | 4851 项,4706 通过,145 失败,0 cancelled,0 skipped。退出码 1 |
| 隐私标记 | `tests/test_repo_privacy_markers.py` 通过。进度和 Bug 历史没有写入具体出生资料 |
| `next build --webpack` | 编译成功(2.9 分钟),TypeScript 检查通过。收集页面数据时在 `/api/birth-time-guide` 失败:现场技能符号链接 EPERM。没有打出路由表,因此没有 `/` 是否 Static、也没有首屏 gzip。这是本机工作树的已知环境缺口,不是这轮文案改动的编译错误 |
145 条失败里,和本单相关的文件是整文件加载失败,不是新断言没对上:`consult-answer-the-question-20260927.test.ts`、`consult-single-pass-answer-20260927.test.ts` 在导入 `skill-binding` 时抛 `SkillPackageRegistryError`,Windows 不允许为现场技能创建符号链接(EPERM)。同一原因还打红了 `consultation-workflow-request`、`consult-condensed-checklist`、`consult-evidence-lookup`、`consult-gender-card`、`skill-binding.test.ts` 等。本机工作树里的 `skills/jyotish-vedic-astrology/SKILL.md` 是 14 字节的链接文本(`../../SKILL.md`),不是真正的符号链接,所以「方法来自现场技能树」那一组也会空。数据库、备份、部署脚本失败是这台机器上原有的 Docker / 环境缺口。本轮没有在干净的 `86cafe68` 上再跑一遍全量做逐条对照。
写作提示那两条断言没有在测试进程里跑到。静态核对:`frontend/src` 和仓库根 `SKILL.md` 都不含 `## 盘上依据`、`## 时间怎么看`、`## 这周可以做的一件事`。
## T5 长度与离线
没有模型凭据,四道题(父母、事业、财运、伴侣)没有真跑,不把估计写成实测。新形状要求首轮通常三到六段,不设硬截断。相对旧的约 1,500 字、同一判断说三遍的父母样本,新指令去掉了固定节和行动清单。真机八步在 `docs/testing/consult-conversational-answer-20261006.md`。浏览器登录验收没有做。
## 构建
`npx next build --webpack`(Next.js 16.3.1):webpack 编译成功,接着的 TypeScript 检查也通过。收集页面数据时失败,原因与测试里的技能链接相同:`SkillPackageRegistryError`,无法为 `skills/jyotish-vedic-astrology/SKILL.md` 创建符号链接(EPERM)。路由表没有打出来。`/` 是否仍为 Static、首屏 gzip 相对基线的变化,本机没有数。没有改用 Turbopack:工作树的 `node_modules` 是联接,Turbopack 会直接拒绝。
+1 -1
View File
@@ -424,4 +424,4 @@
| `TASK-consult-latency-quickwins-20261005.md` | `PROGRESS-consult-latency-quickwins-20261005.md` | 普通对话耗时两项快修:咨询链校正闸不再同步白等 VedAstro 官方快照子进程(每域约 4 s,复用顶层缓存 + 负缓存,不推翻 BUG-301);补分段计时(第 0/1 步耗时、推理 token、分类耗时进日志与 usage)。推理强度/精简说明待模型 key 另单(BUG-1231、BUG-1232) | 已验收(Claude 10-05 Linux:Python 62 / 前端 24 失败与基线逐名相同,Static、gzip 0%;装 SDK 实测每领域 4.47→1.66 s,剩余 1.33 s 是保留的顶层前台等待;/admin/usage 真机欠) | 分支 `codex/consult-latency-quickwins-20261005` |
| `TASK-rectification-nadi-seconds-research-20261005.md` | `PROGRESS-rectification-nadi-seconds-research-20261005.md` | **「纳迪秒级校准」可证伪检验(离线)**:竞品宣传「问前事到天 → 秒级」。本仓主链只用三层小运,Sookshma / Prana 与 D150 从未进评价集;v5 真值 52/77 是整 5 分钟(秒级无真值可对)。N0 五层小运 + D150 底座(前三层与主链对账 0 差)、N1 拟合率 vs 安慰剂日期(核心)、N2 留一件预测、N3 六题后区间内再细分能否提头名、N4 岁差 / 坐标 / 时间扰动的噪声地板、N5 D150 结构层(原文比对 blocked)、N6 结论 + 对外口径草稿。规则先登记再跑;不改生产代码;不得重调 BUG-1091 已关的权重 | 已验收(Claude 10-05:N1/N2/N3/N5 不过门、N4 触发文案禁令;Linux 复跑内容 0 差,结果改 LF;补 Lahiri/KP/True Chitra 对照,月亮差 0.83′ 第 5 层仍换 94%)→ 不立实现单 | 分支 `codex/rectification-nadi-seconds-research-20261005`(BUG-1240 `closed_by_design`) |
| `TASK-rectification-delivery-dup-adopt-20261006.md` | `PROGRESS-rectification-delivery-dup-adopt-20261006.md` | **校正交付一次两段回答 + 点「改用…盘解读」被拒 `adoption_not_allowed`**(10-06 真机):收尾补位按文字子串防重,遇采用旁白 Agent 改写版失效(BUG-1153 复发);accept/GET 调 `decideFromDossier` 不带出生日期,未成年探针复活致判定与出卡时相反(BUG-598/680 同族);卡片按钮不看公开 can_adopt、拒绝码直出英文。不放宽采用门,判定入参统一 + 结构防重 + 按钮判据 + 中文提示(BUG-1241~1243) | **验收未通过 → 修复单待领取**(Claude 10-06 验收 `b977f482`:T1 出生日期统一、T3 按钮/中文通过;T2 防重只认全等,事故原样「已记录,范围没变。」+改写仍补第二条;`persistApplied` 丢了放宽窗口/选时段后强制的 snapshotCurrent=false(BUG-1246)。tsc 0、lint 0 error、npm 失败与基线同名(+1 首页计时 flaky)、Static、gzip +0.03%) | 分支 `codex/rectification-delivery-dup-adopt-20261006`;修复单 `TASK-rectification-delivery-dup-adopt-fix-20261006.md` |
| `TASK-consult-conversational-answer-20261006.md` | `PROGRESS-consult-conversational-answer-20261006.md` | **普通对话首轮去汇报骨架,改成聊天**(10-06 产品反馈「像机器在汇报」):首轮取消全部 `##`(三个固定节 + 按对象标题,多人改分段落点名)、行动不强制(盘上有具体指向才顺口一句,问「怎么办」再展开)、首轮三到六段;示范删可抄的行动句(实测被逐字照抄);思考栏去「这周可以做什么」。推翻 10-01 D2 与 D8 首轮部分(BUG-1244~1245) | 待验收→修复中 | 28113fa0 验收未通过:`chat-answer-detail` 合同测试新红、示范段落单换行渲染成一整块;修复单 `TASK-consult-conversational-answer-fix-20261006.md` |
| `TASK-consult-conversational-answer-20261006.md` | `PROGRESS-consult-conversational-answer-20261006.md` | **普通对话首轮去汇报骨架,改成聊天**(10-06 产品反馈「像机器在汇报」):首轮取消全部 `##`(三个固定节 + 按对象标题,多人改分段落点名)、行动不强制(盘上有具体指向才顺口一句,问「怎么办」再展开)、首轮三到六段;示范删可抄的行动句(实测被逐字照抄);思考栏去「这周可以做什么」。推翻 10-01 D2 与 D8 首轮部分(BUG-1244~1245) | 已验收 | 28113fa0 验收未过 → 修复单 `TASK-consult-conversational-answer-fix-20261006.md` 由 Claude 直接执行(含去掉助手头像),复验通过后推 staging;真机清单 10 步待产品 |