Acceptance fix for28113fa0(TASK-consult-conversational-answer-fix-20261006): - F1: chat-answer-detail no longer pins 'Every H2 must start its own line' (first turns carry no H2), assertion change noted in three columns. - F2: Good examples separate paragraphs with a blank line and the shape says so; .message p is pre-wrap, so a single newline only wraps. - Product request: remove the assistant avatar on every surface (consult, rectification, onboarding); --assistant-content-inset back to 0px. Full suite 4941 / fail 24, identical to baseline86cafe68minus a timing flake; build keeps / Static; first-load gzip -0.1%. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017eEAG8HD3mm8gsKXgk8uU8
9.7 KiB
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 版本不变。
做了什么
- 首轮形状只留在
frontend/src/lib/consultation-thinking-plan.ts。product-voice.ts、skill-binding.ts、index.ts、route.ts引用它,不再各写一套标题。首轮不写二级标题;问到几个人就分段落、段首点名;行动不强制;通常三到六段,不设硬截断。追问仍讲清楚为准。换领域或要求完整看时,回到同样的段落形状(BUG-1244)。 - Good 示范改成段落。删掉三句会被照抄的行动(书面确认、这周去看小毛病、给妈妈打电话先问近况),也删掉「## 这周」。另加一条只示意结构的汇报体 Bad(BUG-1245)。
- 思考计划去掉「这周可以做什么」。正文没有二级标题时,流式中没有任何一节停在进行中,结算后一起完成。写作行是「组织回答」/「正在组织回答…」。历史消息里的旧标题仍能拆开。
- 文案:
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 会直接拒绝。
验收修复(Claude 直接执行,2026-10-06)
产品要求直接修复,并顺带去掉助手回答旁的头像。修复单 TASK-consult-conversational-answer-fix-20261006.md。
漏掉的原因:执行方在 Windows 上全量测试有 145 条因技能符号链接 EPERM 整文件加载失败,chat-answer-detail.test.ts 混在里面,进度记录也没有和基线逐条比对。
| 项 | 做了什么 |
|---|---|
| F1 | chat-answer-detail.test.ts:原值要求 Every H2 must start its own line / 新值不再要求 / 原因 首轮不写 ## |
| F2 | 父母题、事业题 Good 示范段落之间空一行;NATAL_ANSWER_SHAPE_SUMMARY、natalAnswerShapeBody()、ANSWER SHAPE 写明段落之间空一行(单换行在界面上不分段)。英文摘要里「One person or one matter stays one stretch of prose」改成「is not split by person」,避免单对象题被读成只写一段。新增合同测试一条 |
| 头像 | 删 AgentAvatar(对话、生时校正、首次引导三处)与 .agent-avatar 样式;--assistant-content-inset 两处回到 0px,.message-assistant 的 gap 删掉。推翻 09-16 071317f7「加回头像」。两条既有断言改三栏:rectification-timeline-20260909.test.ts、rectification-agentic-entry.test.ts(原值 calc(32px + var(--space-3)) / 新值 0px / 原因 产品 10-06 要求去头像)。新增「助手消息没有头像」测试一条 |
验证(Linux + Node 22.14,干净 npm ci):
| 项 | 基线 86cafe68 |
修复后 |
|---|---|---|
tsc --noEmit |
— | 0 错 |
npm run lint |
— | 0 error / 126 warning |
npm test |
4936 项 / fail 25 | 4941 项 / fail 24,名单与基线逐条一致(基线多出的 70 s 计时测试是并发抖动,单跑 3/3 通过) |
next build |
/ ○ Static |
/ ○ Static |
| 首屏 gzip | 567,642 B | 567,007 B(-0.1%) |
环境缺口:无模型凭据,没有真跑新提示词;无浏览器,去头像后的版面没有截图核对,列入真机清单第 9、10 步。