fix(rectification): open with batch collect, add skip/decline buttons, keep one spoken sentence (BUG-604, BUG-605, BUG-606)
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -9333,3 +9333,51 @@
|
||||
- 相关记录:BUG-043(禁止把后台评分状态渲染成用户需要管理的面板。本处边界不同且不冲突:等待屏是只读的,展示的是用户交付物自身的章节结构,`attemptCount`、原始错误码、lease、job id、payload 一律不出服务端)、BUG-576、BUG-574
|
||||
- 复发自:无
|
||||
- 修复版本:待发布
|
||||
|
||||
## BUG-604 | 开场不讲做法、一次只收一件,同一批经历被拆成多轮计费
|
||||
|
||||
- 状态:resolved
|
||||
- 首次发现:2026-09-09
|
||||
- 最近更新:2026-09-09
|
||||
- 影响面:`buildOpeningBrief`、`GENERIC_COLLECT_QUESTION`、`jyotish-birth-time-rectification@10.0.19` OpeningPolicy、口述开场正文
|
||||
- 用户现象:开场不说当前窗口和最后会给什么,也不点出可以讲哪些方面;题干只请人说一件,一条消息里的多件经历被拆成多轮,每轮都要重算。
|
||||
- 触发条件:新建生时校正、进入开场采集。
|
||||
- 根因:opening brief 和 Skill OpeningPolicy 禁止领域清单、禁止一次说完;题干带年份例子。产品决定推翻该口径:列领域不列年份,一条消息可以报多件。
|
||||
- 修复:brief 写入当前搜索窗口与 intake 来源、做法三句要点、六类领域。开场正文不合格时服务端换成模板。首题仍是 `collect:other:*`,题干改为「先说你最容易想起的一两件,年月大概就行」。批量写入路径仍是 `rectification-record-evidence-batch`。Skill 10.0.19。
|
||||
- 验证:`frontend/tests/rectification-v9-agent.test.ts`(opening brief、落库正文替换)、`frontend/tests/agent-voice-copy-contract.test.ts`(开场模板与六类)、`frontend/tests/rectification-spoken-collect.test.ts`(三件已确认领域不再被逐个追问)、`frontend/tests/rectification-server-focus.test.ts`(GENERIC 题干)。
|
||||
- 防复发:开场落库正文必须 ≤4 句、至少五类领域、不含四位年份。不得要求先准备材料。不得把具体年份写进开场。
|
||||
- 相关记录:BUG-488、BUG-558
|
||||
- 复发自:无
|
||||
- 修复版本:待发布
|
||||
|
||||
## BUG-605 | 口述采集只能打字「没有」,没有「记不清」,也不知道可以跳过
|
||||
|
||||
- 状态:resolved
|
||||
- 首次发现:2026-09-09
|
||||
- 最近更新:2026-09-09
|
||||
- 影响面:`rectification-agentic-chat.tsx` composer-wrap、`applyCollectFocusDenial`、`isCollectSkipUtterance`、采集回执文案
|
||||
- 用户现象:采集题只有输入框。想说这方面没有或这题记不清时,不知道可以跳过;打字「没有」才能走拒答。
|
||||
- 触发条件:`collect_spoken` 焦点激活且未 busy。
|
||||
- 根因:BUG-595 删掉输入框上方「先这样」后没有替代采集快捷回答。产品不要示例骨架条,只要「没有 / 记不清」。
|
||||
- 修复:composer-wrap 内两个 44px 次要按钮,类名 `rectification-collect-reply`,不复用 `rectification-step-state`。「没有」与打字「没有」同一 POST,走 declined,回执「记下了,这方面先跳过。」「记不清」走 skipped,回执「记下了,这题先放着。」精确这两句不调模型。skipped 领域本会话不再采集;采用后核对仍可碰到 skipped,不碰 declined。
|
||||
- 验证:`frontend/tests/rectification-spoken-collect.test.ts`(按钮只在 collect_spoken、精确「没有 / 记不清」短路分类器、skipped 不再采集、reverse-verify 仍可碰)。
|
||||
- 防复发:采集快捷回答不得画成「先这样」,不得用 `rectification-step-state`。不得在回答条预填年份。
|
||||
- 相关记录:BUG-546
|
||||
- 复发自:无
|
||||
- 修复版本:待发布
|
||||
|
||||
## BUG-606 | 每轮气泡太长:方法句、领先落后、价值评价叠在正文里
|
||||
|
||||
- 状态:resolved
|
||||
- 首次发现:2026-09-09
|
||||
- 最近更新:2026-09-09
|
||||
- 影响面:`chat-message-content.tsx`、`consultation-run-timeline.tsx`、`composeChoiceNarration`、`trimEvidenceTurnBody`、`agent-run` 开场/证据守卫
|
||||
- 用户现象:助手气泡里除了记下经历,还写「本轮对照了…」、点选后「这段领先那段落后」,以及「对校正特别有用」之类评价。
|
||||
- 触发条件:证据轮或点选题答完后看助手正文。
|
||||
- 根因:方法句渲在气泡;旁白拼接 `explainScoreMovement`;证据轮只靠提示词,模型仍写三句加评价。
|
||||
- 修复:气泡不再渲染 `vargaSentence`,展开的活动时间线保留。点选旁白只有「已记录,范围没变。」或「已记录,范围收到 / 变为 A–B。」证据轮超过两句只留首句,并去掉「很有帮助 / 很有价值 / 很有分量 / 特别有用」。
|
||||
- 验证:`frontend/tests/rectification-varga-style-copy.test.ts`、`frontend/tests/rectification-answer-choice.test.ts`、`frontend/tests/rectification-v9-agent.test.ts`、`frontend/tests/rectification-collect-prompt.test.ts`、`frontend/tests/agent-voice-copy-contract.test.ts`(机器词表含「领先」「落后」)。
|
||||
- 防复发:用户可见旁白不得出现「领先」「落后」。证据轮落库不得含价值评价四词。方法句不得回到气泡正文。
|
||||
- 相关记录:BUG-545、BUG-585
|
||||
- 复发自:无
|
||||
- 修复版本:待发布
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
# PROGRESS · 生时校正对话精简(2026-09-09)
|
||||
|
||||
工作树:`.worktrees/rectification-conversation-economy-20260909`
|
||||
分支:`codex/rectification-conversation-economy-20260909`
|
||||
任务书:`docs/tasks/TASK-rectification-conversation-economy-20260909.md`
|
||||
基线:`origin/staging` @ `d9252516`(任务书写 aa499da1;本 worktree 从当时的 staging 头切出,含时间轴文档提交)
|
||||
|
||||
本单状态:**待验收**。代码在执行分支,尚未 push,未合入 staging/main。
|
||||
|
||||
未改:采用门、确认门、各道门槛、`page.tsx`、`use-conversation-scroll-anchor.ts`。未改时间轴兄弟单文件(`rectification-timeline-scale.ts` / `rectification-candidate-result.ts` / 时间轴测试 / DESIGN §10)。Skill 从 10.0.18 升到 **10.0.19**。
|
||||
|
||||
## 做了什么
|
||||
|
||||
- **BUG-604 / 决策 1** `buildOpeningBrief` 写入当前搜索窗口(`candidate_range` HH:MM–HH:MM)与 intake 来源、做法三句、六类领域。开场正文不合格则换成 `openingSpokenBody`。首题仍是 `collect:other:*`,题干 `GENERIC_COLLECT_QUESTION` =「先说你最容易想起的一两件,年月大概就行。」不写具体年份、不要求先准备材料。批量写入仍走 `rectification-record-evidence-batch`;已确认领域不再被 `nextDatedCollectFollowup` 追问。
|
||||
- **BUG-605 / 决策 2** `collect_spoken` 且未 busy 时,`composer-wrap` 内两个 44px 次要按钮,类名 `rectification-collect-reply`(不复用 `rectification-step-state`,无示例骨架条)。「没有」= 打字「没有」= declined,回执「记下了,这方面先跳过。」「记不清」= skipped,回执「记下了,这题先放着。」精确这两句不调模型。skipped 本会话不再采集;采用后 `remainingReverseVerifyProbes` 仍可碰到 skipped(`includeSkipped: false`)。
|
||||
- **BUG-606 / 决策 3** 气泡不再渲染 `vargaSentence`;展开的 `ConsultationRunTimeline` / `AgentActivityStatus` 保留。点选旁白只有「已记录,范围没变。」或「已记录,范围收到 / 变为 A–B。」证据轮 `stripQuestionSentences` 之后 `trimEvidenceTurnBody`:超过两句只留首句,去掉「很有帮助 / 很有价值 / 很有分量 / 特别有用」。
|
||||
|
||||
## 三栏(被触碰断言)
|
||||
|
||||
| 用例 | 原值 | 新值 | 理由 |
|
||||
| --- | --- | --- | --- |
|
||||
| Skill / `RECTIFICATION_SKILL_VERSION` | `10.0.18` | `10.0.19` | OpeningPolicy 与证据轮口径变更 |
|
||||
| 开场 brief | 「不要一次说完 / 不要举例」 | 窗口 + intake 来源 + 做法三句 + 六类领域 | BUG-604 推翻旧口径 |
|
||||
| 开场题干 | 带大学例子的 GENERIC | 「先说你最容易想起的一两件,年月大概就行。」 | BUG-604;不写年份 |
|
||||
| 开场落库 | 模型一句招呼原样落库 | 不合格则换成三句模板;≤4 句、≥5 类、无年份 | BUG-604 |
|
||||
| composer-wrap 采集 | 无按钮(先这样已删) | 「没有」「记不清」44px,`rectification-collect-reply` | BUG-605 |
|
||||
| 精确「没有 / 记不清」 | 进分类器 / 模型 | 采集焦点分支短路,`declined` / `skipped`,无 `runV9AgentTurn` | BUG-605 |
|
||||
| skipped 领域 | 未单独建模 | 本会话不再采集;reverse-verify 仍可碰 | BUG-605 |
|
||||
| 气泡 `vargaSentence` | `ChatMessageContent` 渲染 | 只在展开活动时间线 | BUG-606(a) |
|
||||
| 点选旁白 | 「X 领先,Y 落后」+ 范围从…收到 | 「已记录,范围没变 / 收到 / 变为 A–B。」 | BUG-606(b) |
|
||||
| 机器词表 | 无「领先」「落后」 | `MACHINE_VOICE_LEXICON` 含这两词(用户可见旁白禁) | BUG-606(b) |
|
||||
| 证据轮正文 | 2–4 句额度;模型三句原样落库 | 超过两句只留首句;去掉价值评价四词 | BUG-606(c) |
|
||||
| Agent 提示 | 「正文只做承接(2-4 句)」;「接下来我们继续」 | 「正文只做承接」+「证据轮正文只写一句复述」;题干作下一段 | BUG-606 |
|
||||
| 流式三句证据 | `answerText` 等于模型全文 | 落库首句,并以 `replace: true` 覆盖可见正文 | BUG-606 服务端裁剪 |
|
||||
|
||||
## 测试
|
||||
|
||||
- `frontend` `./node_modules/.bin/tsc --noEmit`:exit 0
|
||||
- `npm run lint`:0 errors / 108 warnings(仓库基线 warning,无新 error)
|
||||
- 任务书指定切片:`tests/rectification-*.test.ts` + `agent-voice-copy-contract.test.ts` + `skill-registry.test.ts`(排除 database):**1065 tests / 1065 pass / 0 fail**
|
||||
- Docker `database-rectification-*.test.ts`:本机未跑,记 blocked
|
||||
- 浏览器真人走查:browser MCP 可用但无打开的页、无登录态的 `collect_spoken` 会话,未点到「没有 / 记不清」。采集按钮与 44px、不复用 `rectification-step-state` 由 `rectification-spoken-collect.test.ts` 锁源码。
|
||||
|
||||
Skill 10.0.19 SHA256:`a21b33abbbe3a530d725b94719b57ff8417cfcb850c54b547d5c18e390ec3d2b`。live 树与 `versions/10.0.19` 一致,registry 哈希与 `computeSkillPackageSha256` 一致。
|
||||
|
||||
## 偏离 / blocked
|
||||
|
||||
1. 预检系统 Python 3.14、无 pytest、无 swisseph(ERR-078)。**不声称预检通过。** 远端可见性此前已核过。
|
||||
2. 本机主仓停在 `codex/minute-rectification-p0` 且有脏文件;未 checkout / reset / stash。本单只在本 worktree。
|
||||
3. `move_agent_to_root` 对子代理不可用;全程用本 worktree 绝对路径。
|
||||
4. `.venv` 是指向主仓的 symlink,不提交。
|
||||
5. `origin/staging` 在切出后超前 2 个提交;按任务书不 merge、不 push。
|
||||
6. BUG_HISTORY 修复版本在提交前记「待发布」,提交后回填 SHA(不 amend)。
|
||||
7. 点选旁白测试里,若下一问未能单独落库,服务端仍可能把采集题干接在「已记录,范围收到…」后面。断言改为前缀匹配,不把下一问挂载当成旁白模板的一部分。
|
||||
@@ -85,7 +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) |
|
||||
| `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) |
|
||||
|
||||
### 聊天主链路与首页
|
||||
|
||||
|
||||
@@ -154,3 +154,17 @@
|
||||
- 双轨若写出偏向分钟,必须落在卡片范围内,不得点名已经被答题淘汰的分钟
|
||||
- 若报告写某候选的 D9 / D10 上升,必须与 `sign_by_candidate` 一致,不得按换升时刻自行推算成下一座
|
||||
|
||||
## 11. 开场一次报三件后不再被逐个追问;每轮正文一句
|
||||
|
||||
资料:家人记得大概时间,钟点任意,范围「差不多准」。地点任意公开城市。虚构经历。
|
||||
|
||||
开场后用一条消息说三件不同领域、带年月的事(例如上学、第一份工作、搬家)。之后继续采集。
|
||||
|
||||
期望:
|
||||
|
||||
- 开场正文不超过四句,点出升学、第一份工作、搬家、恋爱结婚、家里的大事、生病受伤中至少五类,不含具体年份
|
||||
- 这一条消息只触发一次候选比较,账本写入三件
|
||||
- 下一问不再是已经说过的那三个领域
|
||||
- 口述采集输入框上方有「没有」「记不清」,没有「先这样」
|
||||
- 每轮助手正文一句复述(可另接一句范围变化);气泡里没有「本轮对照了…」,也没有「很有帮助 / 很有价值 / 很有分量 / 特别有用」
|
||||
|
||||
|
||||
Reference in New Issue
Block a user