docs(tasks): open consult answer-the-question brief (no motive guessing, follow-up turns answer directly)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0199rbQDTsUbCVw84wc8BTFe
This commit is contained in:
co-authored by
Claude Fable 5.1
parent
24a9a63579
commit
ab41532d89
@@ -244,6 +244,7 @@
|
||||
| `TASK-engine-runtime-hygiene-20260901.md` | `PROGRESS-engine-runtime-hygiene-20260901.md` | Python 引擎运行时治理 | 已验收 | `124d3990`(staging 实机三条待部署窗口) |
|
||||
| `TASK-billing-pricing-20260830.md` | `PROGRESS-billing-pricing-20260830.md` | 计费闭环与功能级定价 | 已合入 | `aaaa5fb7`~`a499c344` |
|
||||
| `TASK-cost-accounting-gaps-20260927.md` | — | **成本记账补漏与缓存分价**:七处模型调用不入账(标题 / 摘要 / 校正意图 / 采用旁白 / 校正开场 / 生时引导 / 每日星语);缓存命中按全价算、单价表无缓存列;多事件账本 `metadata.cache` 被覆盖;失败运行无成本记录;测算页不显示 token 分位数;**后台模型表单没有单价输入框,单价只能是 0**。只加「记」不加「扣」,不动售价与会员参数 | 待领取 | BUG-1064~1069 预留;部署后由产品按 `docs/testing/cost-accounting-20260927.md` 采真实成本 |
|
||||
| `TASK-consult-answer-the-question-20260927.md` | — | **普通对话回答问的那句话**:反差只写盘上、删「按我的理解答」、禁写动机句;追问轮 ≤ 200 字直接回答不重开四标题骨架(服务端按「本会话已有解读」切指令,不用正则);清单是核对项不是段落大纲;步骤栏「先抓住你真正在问的事」改「先回答你问的这件事」 | 待领取 | 基线 `24a9a635`;BUG 从 1070 起;真机夹具由产品补 |
|
||||
| `TASK-cend-ui-claude-alignment-20260916.md` | `PROGRESS-cend-ui-r1/r2/r3-20260916.md` | **C 端界面向 claude.ai 产品界面对齐(三轮串行 R1→R2→R3,都动 `globals.css`,不得并行)**:根因是 `frontend/CLAUDE_DESIGN.md` 扒的是 **claude.com 营销官网**,它自己在 Known Gaps 里写明 claude.ai 产品界面不在范围内,而 `DESIGN.md:3` 把它当成了产品界面的实现契约。**R1**:`--font-display` 里 Tiempos Headline / StyreneB **从未加载**(无 `@font-face`、`public/` 无字体、`layout.tsx` 只 vendor 了 Inter),中文标题全站落到 **宋体 / SimSun**,波及 20 处含助手回答的 h2/h3(BUG-737);亮色强调色 `#85432f` 与暗色 `#d78064` 不同源,产品拍板亮色换 **Claude coral `#cc785c`**,**易漏点**是 `globals.css:16` 的 `--color-ring` 硬编码在 `@theme inline` 里不跟随 `:root`,另有第四个 `:root` 亮色块(`:4358`)必须同步(BUG-738);`.composer-footer` 常驻 44px + 顶栏 68px + `--composer-reserve` 148px,每屏固定吃掉 216px,模型选择器移进输入框内部、删掉底栏、顶栏收到 46px 并删「分析对象」副标题。**R2**:空状态是营销落地页(hero 卡 + 两张 132px 入口大卡 + 3 列 156px 主题卡),输入框被压在 **800px 以上**内容之下,重排成「问候 + 居中输入框 + 两枚入口 pill + 一排 chip」。**R3**:侧栏两个 `<details>` 拍平成一条「最近」、星盘的两个入口(侧栏分组 + 账户菜单)收敛到一处、删掉逐条助手头像。**决策记录 D3 推翻 DESIGN.md「报告强调色与应用同源」一句**(报告刻意保留深棕)。原型图 https://claude.ai/code/artifact/da275da6-2954-4f50-99aa-32bb8694d38b(三套画面 + 明暗,页面标题就是建议字体栈的实际渲染)。环境缺口:无登录态无 Chrome,四项真机观感留 `docs/testing/`。BUG 段 737–738 | 待领取 | — |
|
||||
| `TASK-cend-surfaces-claude-alignment-20260916.md` | `PROGRESS-cend-shell-20260916.md`、`PROGRESS-cend-report-20260916.md`、`PROGRESS-cend-rectification-20260916.md`、`PROGRESS-cend-chart-eph-20260916.md` | **次级页面对齐(上一单的续篇,R4→R5/R6,R7、R8 可并行)**:星盘 `/chart`、星历 `/ephemeris`、报告 `/reports` **各是脱离 app 外壳的独立全屏页**,顶部只有一个「返回对话」链接、侧栏整个消失,且三家各写了一套一模一样的 `*-shell`/`*-topbar`/`*-hero` 骨架——与上一单 E5 同根因(营销站 band 结构被套到产品界面)。**R4** 抽只读导航外壳 `AppNavRail`(只用现成的 `GET /api/sessions` + `GET /api/account`,会话行走 `sessionHref` 跳 `/?c=<uuid>`;**刻意不带**重命名/删除/收藏/归档——那套连着 `Home()` 的乐观更新与回滚,搬过来会撞 useState 增长门禁)。**R5** 星盘五 tab 下划线化 + 参数合表 + 行星表横向滚动;星历日期导航改 `‹ 日期 ›`。**R6** 报告中心卡片网格改行式列表;阅读页加常驻目录。**R7** 生时校正把可信区间从盘面板标题行提成常驻条(窄屏 `.is-compact` 下盘面板是 overlay,现在默认看不到区间),五个 `technique-audit` 折叠块收成两段。**R8** 设置内容区收窄(880px 弹窗里表单铺了 690px)、套餐卡三修饰符收敛成两态。**已解锁**:原挡路的设置单已于 `111b4a84`(BUG-698)合入。**两条不得回退**:BUG-698 的 `@supports (height: 1dvh)` 写法(重复声明回退会被 Lightning CSS 折叠)、BUG-616/617 的报告盘面 grid 实现。默认不占 BUG 号 | **R4–R8 全部已实现并验收合入** | R4:抽出 `AppNavRail`(只读,两个 GET,零写操作)+ `SecondaryShell`,三个次级页并入 app 外壳并删掉各自的 shell/topbar/hero;四个路由渲染标记**完全不变**(`/` `/chart` `/ephemeris` 仍 Static);CSS gzip −0.25%。`/reports/[reportId]` 留给 R6 与目录一起做。两处自身健壮性问题被测试抓到:`usePathname()` 可为 null、`fetch` 可能不存在。差点弄丢 BUG-717 的 eyebrow 文案(已放回)。R8:表单分区收窄到 440px(列表分区不变)、套餐卡三修饰符收敛成互斥的 `is-current` / `is-recommended`,`--highlighted` 删除改为滚动定位;手机端 `order:-1` 改挂 `[data-plan-alias]`(版位不是状态)。测试 3350→3354(净增 4),失败清单与基线逐条一致;`/` 仍 Static;我的干净构建实测 CSS gzip −3 字节。**遗留待产品拍板**:`?plan=` 深链现在完全没有视觉指向,只有滚动位置。R6:报告中心卡片网格改行式列表、阅读页并入外壳并把目录挪到右侧常驻。**任务书 E10 过期**——目录在 `cfcd369d` 就已存在,本轮是挪位置定稿而非从零加。挂外壳带出一个真实打印风险已处理:`.chat-app`/`.chat-panel` 是 `height:100%;overflow:hidden`,裸 `window.print()` 会把九节报告裁成一页,阅读页因此多挂一条只在挂载期生效的 print 样式解锁外壳。「生成中的分节进度」做不了——`REPORT_LIST_COLUMNS` 不返回节数,按 VOICE.md 不许前端编。R7:区间常驻条与盘面折叠收敛。**任务书 E9 也不准确**——对话区顶部早有常驻条 `RectificationTimeline` 且窄屏可见,真正只在盘面标题行的是**代表分钟**;因此没另造第二条,在既有条上补齐代表分钟与已答题数(与盘面同一次 `workingRectificationTime()` 调用)。折叠块实际是 **8 个**不是 5 个。**触发让步顺序第 5 条**:收窄进度未做——服务端无该字段,且 `candidate_range` 会放宽(BUG-572),前端相减会把一次放宽报成收窄,已写进 `BLOCKED.md`。顺带修掉一个**静默失效的旧断言**(`slice(indexOf(A), indexOf(B))` 在 B 改名后变成几乎整份文件,四条 `doesNotMatch` 假通过)|
|
||||
| — (产品口头拍板,无任务书) | `PROGRESS-chart-glyphs-20260918.md` | **星盘改用行星符号,度数进行星表(非 Bug,无 BUG 号)**:北印星盘(星盘页 / 校正右栏 / 我的报告三处共用 `VedicChartSvg`)宫内不再画「水 19°」「罗逆 29°」这类文本——一宫三颗星就叠三行、字号压到 8。改成九个彩色符号(☉☽☿♀♂♃♄☊☋),每行最多 3 个、逆行改符号下同色横线、第 1 宫加 `As`、盘下两行图例。颜色只认星不表吉凶,罗计共用中性灰,`--color-planet-*` 九个 token 在 `:root` 与两个深色块各一份;颜色挂 `is-*` 修饰类而非行内 `style`(报告标记合同禁 `style=`)。符号字体是 vendored 的 9 字形 Noto Sans Symbols 子集(OFL,1.5 KB),`--font-planet-glyphs`,♀♂ 带 U+FE0E 防 iOS 画成表情。星盘页行星表四列扩到八列(行星 / 黄道经度 / 速度 / 宫位 / 星宿 / 宿主 / pada / 状态),度数精确到分,首行是上升(`vedic.ascendant` 新字段)。数据来源:`toNorthIndianChart()` 加结构化 `occupantGlyphs`;校正与报告两条路线的模型只有引擎/golden 显示文本,按首字解析并有测试锁住。**星宿未译中文**——仓库无对照表,印度 27 宿与中国二十八宿不同源,不自造 | 已实现,待验收 | `codex/chart-glyphs-20260918`:tsc 0 / lint 0 error(118 warning 不变)/ npm test 3471→3484 条、36 红与基线 `84b293fb` 逐条相同、0 新红 / `○ /` Static / 首屏 JS gzip 1,450,774→1,455,017(+0.29%),CSS gzip +2.23%(构成见 PROGRESS §2)。真机走查欠(iOS 符号呈现、深浅两主题配色、375px 横滚、打印) |
|
||||
|
||||
@@ -0,0 +1,136 @@
|
||||
# TASK · 普通对话:回答问的那句话,不揣测动机、追问轮不重开整套骨架(2026-09-27)
|
||||
|
||||
## 基线
|
||||
|
||||
- `origin/staging` = `24a9a635`(2026-09-27)。开工时 `git fetch origin --prune` 后以最新 `origin/staging` 为基线,写进 PROGRESS。
|
||||
- 分支 `codex/consult-answer-the-question-20260927`,工作树 `.worktrees/consult-answer-the-question-20260927`。
|
||||
- 与 `TASK-cost-accounting-gaps-20260927` 无文件交集,可并行。
|
||||
|
||||
## 事故实证(2026-09-27 真机,staging,`deepseek-v4-flash`)
|
||||
|
||||
用户在普通会话里问父母关系。用户原话反馈(产品转述):
|
||||
|
||||
1. 「内容我觉得还是太宽泛了」。
|
||||
2. 「他有点揣测我:我问他『是不是……』,他像『你是否需要……』,在揣测我为什么要这样问」。
|
||||
|
||||
截图可见的正文片段(脱敏,只引结构):回答按「母亲这一头(4 宫 + 月亮)……父亲这一头(9 宫 + 太阳)……D12(家世分盘)……还要说一句公道话……」逐段铺开整张父母卡;其中出现「她问的是结果,你要的是被听」这类对用户内心的断言。用户问的是一句是非题,得到的是一份父母领域的通盘解读,外加对提问动机的解释。
|
||||
|
||||
**环境缺口**:Claude 没有登录态与数据库访问,看不到这轮完整的问句与答句。上面的定性基于截图、产品转述与提示词源码;执行方开工前请产品把这轮的原问句和答句首段(脱敏后)贴进 PROGRESS 作为夹具。
|
||||
|
||||
## 根因(按符号定位,基线 `24a9a635`)
|
||||
|
||||
普通对话每轮的提示词由四层拼成:`productConversationVoice`、`natalSpokenReportContract`(都在 `frontend/src/mastra/product-voice.ts`)、`jyotishInstructions`(`frontend/src/mastra/index.ts`)、每轮用户轮里的 `natalAnswerShapeInstruction()`(`frontend/src/lib/consultation-thinking-plan.ts`)。四层合起来把「回答用户问的那句话」换成了「按固定形状写一份领域解读」。
|
||||
|
||||
### 「揣测我为什么这样问」有三个来源
|
||||
|
||||
- **R1 反差形状写到人身上**。`productConversationVoice` 的 OPENER SHAPE 第 1 步:「反差:先说『表面 A,底下 B』,并把这个反差命名成一个格局」,且 `natalSpokenReportContract` 要求每个本命问题都用这个开场。定稿样例里的反差是盘上的(木星在事业宫 / 土星压工作宫)。但形状本身没有限定 A 和 B 必须是盘面结构,问的是人(父母、伴侣)时,模型最省事的「表面 / 底下」就是当事人的表面行为和内心动机,于是写出「她问的是结果,你要的是被听」。
|
||||
- **R2 「按我的理解答」规则**。同文件 PERSONA 段:「问题含糊时不猜、也不反问一串——写『这句我按『……』理解了,不对你纠正我』,然后照这个理解把答案给完」。这条本意是防反问,副作用是鼓励模型先改写问题再回答:用户问「是不是 X」,模型改写成「你是否需要 Y」再答 Y。`frontend/tests/consultation-voice-contract.test.ts` 第 120 行把这句钉成了断言。
|
||||
- **R3 思考栏标题**。`natalConsultationThinkingPlan` 第一节 `title: "先抓住你真正在问的事"`(`consultation-thinking-plan.ts`),经 run timeline 显示在步骤栏(`frontend/tests/consultation-run-timeline.test.ts` 第 41 行断言该标签)。用户每轮先看到系统在找他「真正在问的事」,再看到答案确实换了题,两者互相印证成「揣测」。
|
||||
|
||||
### 「太宽泛」有两个来源
|
||||
|
||||
- **R4 追问轮也走整套骨架**。`jyotishInstructions`:「Call run-jyotish-consultation before answering every turn, including short follow-ups」;`natalSpokenReportContract` 末句:「One natal career/wealth/marriage/family question still uses the opener-plus-skeleton above」;每轮用户轮的 `natalAnswerShapeInstruction()`:「开场不要标题,先用口语回答问题;然后一次写完这四个二级标题」。没有任何一处区分「第一次问这个领域」和「对上一轮的追问 / 一句是非题」。于是一句「是不是 X」得到 ≤ 400 字口语开场 + 四个二级标题的完整解读。
|
||||
- **R5 清单被当成段落大纲**。`jyotishInstructions`:「work through their mandatory modules against the evidence you were given」;`natalSpokenReportContract` Never 段:「Skip a card fact the question needs」。父母卡(`consultation-evidence-card.ts` 第 144 行 `parents: spec({ vargas: ["D12"], houses: [4, 9], planets: ["Sun", "Moon"] })`)有 4 宫、9 宫、太阳、月亮、D12 五块,模型把五块各写一段,问题本身反而没有一句正面回答。「宽泛」不是缺盘面细节(截图里 4 宫主水星逆行、月亮 Mula 都有),是细节不服务于问的那句话。
|
||||
|
||||
### 不是根因的
|
||||
|
||||
- 服务端不改写问句:`resolveConsultationQuestion`(`consultation-entrypoint.ts`)对普通入口返回 `kind: "plain"`,模型看到的就是用户原句。
|
||||
- 数据卡体量已在 v2 压到单领域 ≤ 1.2 万字符(`TASK-consult-evidence-card-v2-20260927`),不是本单范围。
|
||||
|
||||
## 决策记录(产品 2026-09-27)
|
||||
|
||||
- D1 **回答对象是用户问的那句话**。是非题先给「是 / 不是 / 看情况」,再给盘上的依据;不改写问题、不解释用户为什么问、不替用户说他「真正想要什么」。
|
||||
- D2 **反差只许写盘上的反差**。「表面 A,底下 B」的 A 与 B 必须都是盘面结构(哪颗星、哪个宫、哪段大运);不得是用户或当事人的行为 / 动机 / 需求。这是对 2026-09-17 口气定稿(`84b293fb`,`TASK-agent-voice`)的收窄,不是推翻:形状保留,填法限定。
|
||||
- D3 **追问轮不重开整套骨架**。本会话已有一轮本命解读后的追问(包括是非题、「那 X 呢」、对上一轮某句的反问),按「直接回答」形状写:≤ 200 字,先答再证,不写四个二级标题,不重述上一轮已写过的盘面;只有用户明确换了领域或要求「完整看一下」才回到口语开场 + 骨架。这条推翻 `natalSpokenReportContract` 末句「One natal … question still uses the opener-plus-skeleton above」对追问轮的适用,以及 `consultation-voice-contract.test.ts` 里相应断言;首轮解读的形状不变。
|
||||
- D4 **删掉「这句我按『……』理解了」规则**,改成:问句只有在有两种实质不同读法时才写一句「我按 A 答」,且答完 A 不再解释为什么这样理解;单义问句直接答。
|
||||
- D5 **思考栏第一节标题**改成「先回答你问的这件事」。
|
||||
- D6 判断「追问轮」用服务端事实(本会话此前是否已有一轮本命解读),不用正则识别用户意图(沿用 BUG-976/977 的口径);是非题 / 换领域由模型按提示词判断。
|
||||
- D7 排盘工具仍每轮调用(计算是请求级的,BUG-1053 后答案由看过工具结果的那一步写),本单只改答案形状,不改工具调用与结算。
|
||||
|
||||
## 硬红线
|
||||
|
||||
1. 不改 `skills/**`(提示词都在 `frontend/src/mastra/` 与 `frontend/src/lib/`,Skill 版本不 bump);不改引擎、数据卡构建器、结算、扣点。
|
||||
2. `frontend/src/app/page.tsx` 不增长;`scripts/jyotish_api_server.py` 不动。
|
||||
3. 改既有断言写「原值 / 新值 / 原因」三栏(`consultation-voice-contract.test.ts`、`consultation-run-timeline.test.ts`、其他命中的);测试总数不低于开工时 `origin/staging` 实测。
|
||||
4. 不得用正则或关键词表判定「是非题」「追问」「换领域」(D6);服务端只提供「本会话已有本命解读」这一事实。
|
||||
5. 首轮解读的口语开场 + 四标题骨架不动(D3 只收窄追问轮);`consultationContinuePrompt` 的续写逻辑不动。
|
||||
6. 前端红线全套:`tsc --noEmit` 0 错、`npm run lint` 0 error、相关套件 fail=0、`next build` 后 `/` 仍 Static、首屏 gzip ±2%。
|
||||
7. 禁止 `git stash`;只 `git add <具体路径>`;提交前 `git diff --cached --stat`;不推送代码分支,回报后由 Claude 验收再推 staging。
|
||||
8. Bug 历史、PROGRESS、测试夹具里不得出现真实用户的问句原文中带出生资料、姓名的部分;夹具用虚构问句(例:「我妈是不是不太在意我」)。
|
||||
|
||||
## 任务分解
|
||||
|
||||
### T1 口气层:反差限定在盘上,删「按我的理解答」(R1、R2、D1、D2、D4)
|
||||
|
||||
改 `frontend/src/mastra/product-voice.ts` 的 `productConversationVoice`:
|
||||
|
||||
- OPENER SHAPE 第 1 步改成:反差的 A 与 B 都是盘面结构(星、宫、大运、分盘),命名成格局;问的是别人(父母、伴侣、子女、同事)时,反差写那个人在你盘上对应的宫位与代表星,不写那个人的心思。
|
||||
- PERSONA 段:删「问题含糊时不猜、也不反问一串——写『这句我按『……』理解了,不对你纠正我』」,改成 D4 的写法。
|
||||
- 新增一段 **禁写清单**(与「Never write 一切都会好…」并列):不得写「你其实想问的是」「你真正在意的是」「你要的是」「你是否需要」「你问这个是因为」「你更想知道」,以及任何替用户或当事人陈述动机 / 需求 / 感受的句子;盘上有证据可以写「4 宫主落 10 宫,母亲的注意力在你的前途上」,不得写「她问的是结果,你要的是被听」。
|
||||
- 新增 **是非题答法**:问句是「是不是 / 会不会 / 能不能 / 有没有 / ……吗」形状时,第一句就是「是」「不是」或「看情况:……」,第二句给盘上的依据;不先讲背景。
|
||||
- Good / Bad 对照各加一组(虚构盘面):Bad 是「你其实要的是被听见……」这类;Good 是「不是。4 宫主水星逆行落 10 宫,她把心力投在你的前途上,不是不在意,是不会用你想要的方式在意。」
|
||||
- 同步 `frontend/docs/VOICE.md` 人设段与「口语层的形状」段:加「反差只写盘上」「是非题先答」「禁写动机句」三条与对照表。
|
||||
|
||||
**验收**:`consultation-voice-contract.test.ts` 断言更新(三栏),新增断言:voice 含禁写清单里至少四个短语;不含「这句我按『……』理解了」;含是非题答法。
|
||||
|
||||
### T2 追问轮形状:服务端给事实,用户轮换指令(R4、D3、D6、D7)
|
||||
|
||||
- `frontend/src/lib/consultation-thinking-plan.ts` 新增 `followUpAnswerShapeInstruction()`:拿到本轮计算结果后直接答;≤ 200 字;第一句回答问的那句话;只引与这句话直接相关的盘面事实,最多三处;不写二级标题、不写行动清单(用户问了才给);不重述上一轮已经写过的结构;用户明确换领域或要求完整看时才按首轮形状写。
|
||||
- `frontend/src/app/api/consult/route.ts` 组用户轮处(`natalInstruction` 附近):本会话 `history` 里已有至少一条 assistant 正文时用 `followUpAnswerShapeInstruction()`,否则用 `natalAnswerShapeInstruction()`。`daily_starlanguage` 入口不变。仍然拼在 `consultationUserTurnContent` 的 `instruction` 位。
|
||||
- `natalSpokenReportContract` 末句改成:首轮解读用口语开场 + 骨架;追问轮按用户轮里的指令。
|
||||
- `jyotishInstructions` 的「Call run-jyotish-consultation before answering every turn, including short follow-ups」保留(D7)。
|
||||
|
||||
**验收**:记录提示词的假模型测试(沿用 `consult-single-pass-answer` 单里的测试模式):① 空历史 → 用户轮含四个二级标题指令;② 历史里有一轮 assistant 正文 → 用户轮含「≤ 200 字」「不写二级标题」,不含四标题指令;③ 两种情况工具仍被调用一次;④ `daily_starlanguage` 不受影响。`stepScopedAnswer` 对无标题正文的截留规则(标题或 160 字放出)在追问轮下仍能放出正文,写一条测试。
|
||||
|
||||
### T3 清单是检查项不是段落大纲(R5)
|
||||
|
||||
- `jyotishInstructions`(`frontend/src/mastra/index.ts`)在「work through their mandatory modules…」之后加一句:清单是核对项,不是段落清单;只把与这句问题直接相关的结构写进正文,核对过但与问题无关的不写;「Never skip a card fact the question needs」保留,改成「the question needs」的字面即可,不扩到整张卡。
|
||||
- `natalSpokenReportContract` 第 2 条「Ground the judgment in the evidence card's chart fields」后加:只引支撑这个判断的字段。
|
||||
|
||||
**验收**:voice 契约测试加断言(含「核对项」「与问题直接相关」)。
|
||||
|
||||
### T4 思考栏标题(R3、D5)
|
||||
|
||||
- `natalConsultationThinkingPlan` 第一节 `title` 改「先回答你问的这件事」;追问轮(T2 的服务端事实)下该节唯一步骤标签改「直接回答这句话」,其余节照旧。
|
||||
- `consultation-run-timeline.test.ts` 第 41 行三栏更新;`frontend/DESIGN.md` 步骤栏文案处同步。
|
||||
|
||||
**验收**:timeline 测试通过;组件快照若有变化写三栏。
|
||||
|
||||
### T5 记录
|
||||
|
||||
- `docs/BUG_HISTORY.md`:从 **BUG-1070** 起(开工时核对最大号,`TASK-cost-accounting-gaps-20260927` 已预留到 1069):
|
||||
- BUG-1070 普通对话把是非题改写成「你是否需要」并解释提问动机(R1、R2)。
|
||||
- BUG-1071 追问轮重开 ≤ 400 字开场 + 四标题骨架,一句是非题得到整份领域解读(R4、R5)。
|
||||
- BUG-1072 步骤栏显示「先抓住你真正在问的事」(R3)。
|
||||
- 三条都关联 `84b293fb`(口气定稿)与 BUG-1053(答案由看过工具结果的步写);修复版本写本单 commit;状态在 Claude 验收前写 `fixed_pending_acceptance`,不写 `resolved`。
|
||||
- `CHANGELOG.md` 一条:普通对话追问轮直接回答、不再揣测动机;Skill 不 bump。
|
||||
- `docs/tasks/PROGRESS-consult-answer-the-question-20260927.md`:基线、测试数字(开工 / 完工)、三栏表、偏离。
|
||||
- `docs/testing/consult-answer-the-question-20260927.md` 真机清单(虚构问句):
|
||||
1. 新会话问「我和父母的关系怎么看」→ 口语开场 + 四标题(首轮不变)。
|
||||
2. 接着问「我妈是不是不太在意我」→ 第一句是「是 / 不是 / 看情况」,全文 ≤ 200 字左右,无二级标题,无「你是否需要」「你要的是」。
|
||||
3. 接着问「那我爸呢」→ 同上形状,不重述母亲段。
|
||||
4. 接着问「完整看一下我的事业」→ 回到口语开场 + 四标题。
|
||||
5. 步骤栏第一节显示「先回答你问的这件事」。
|
||||
|
||||
## 让步顺序
|
||||
|
||||
1. T2 的服务端事实若因 `history` 在溢出裁剪后拿不到(`lastConsultationPair` 路径),以「本轮请求带有会话 id 且该会话已有 assistant 消息」为准;仍拿不到则退回 `natalAnswerShapeInstruction()` 并在 PROGRESS 写明。
|
||||
2. T4 若步骤栏标签被别的快照测试大量钉住(> 5 处),只改 `title`,步骤标签留待下一单。
|
||||
3. T1 的 Good / Bad 对照若使 `productConversationVoice` 超出现有长度上限测试(如有),先压缩旧的 Bad 样例,不删禁写清单。
|
||||
4. 任何一条做不到,写 `BLOCKED.md`,不得静默降级为「提示词加一句」。
|
||||
|
||||
## 开工前置命令
|
||||
|
||||
```bash
|
||||
cd /workspace/Jyotisha && git status -sb | head -1
|
||||
git fetch origin --prune
|
||||
git worktree add -b codex/consult-answer-the-question-20260927 .worktrees/consult-answer-the-question-20260927 origin/staging
|
||||
cd .worktrees/consult-answer-the-question-20260927/frontend
|
||||
npm ci
|
||||
./node_modules/.bin/tsc --noEmit && npm run lint && npm test 2>&1 | tail -5 # 记下开工测试总数
|
||||
grep -rhoE "BUG-1[0-9]{3}" ../docs/BUG_HISTORY.md ../docs/tasks/*.md | sort -u | tail -1 # 核对编号起点
|
||||
```
|
||||
|
||||
## BUG 编号起点
|
||||
|
||||
BUG-1070(`TASK-cost-accounting-gaps-20260927` 已预留至 1069)。开工时用上面的命令再核一次。
|
||||
Reference in New Issue
Block a user