fix(rectification): keep single-event opening on the existing collect path (BUG-604)
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -5,13 +5,14 @@
|
||||
任务书:`docs/tasks/TASK-rectification-conversation-economy-20260909.md`
|
||||
基线:`origin/staging` @ `d9252516`(任务书写 aa499da1;本 worktree 从当时的 staging 头切出,含时间轴文档提交)
|
||||
|
||||
本单状态:**待验收**。产品提交 `aa7ccb30`;尚未 push,未合入 staging/main。
|
||||
本单状态:**待验收**。产品提交 `aa7ccb30`;单事件开场补丁见本文件后文 SHA。尚未 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**。
|
||||
未改:采用门、确认门、各道门槛、`page.tsx`、`use-conversation-scroll-anchor.ts`。未改时间轴兄弟单文件(`rectification-timeline-scale.ts` / `rectification-candidate-result.ts` / 时间轴测试 / DESIGN §10)。Skill 停在 **10.0.19**(live + 快照同步改 OpeningPolicy,不升版)。
|
||||
|
||||
## 做了什么
|
||||
|
||||
- **BUG-604 / 决策 1** `buildOpeningBrief` 写入当前搜索窗口(`candidate_range` HH:MM–HH:MM)与 intake 来源、做法三句、六类领域。开场正文不合格则换成 `openingSpokenBody`。首题仍是 `collect:other:*`,题干 `GENERIC_COLLECT_QUESTION` =「先说你最容易想起的一两件,年月大概就行。」不写具体年份、不要求先准备材料。批量写入仍走 `rectification-record-evidence-batch`;已确认领域不再被 `nextDatedCollectFollowup` 追问。
|
||||
- **BUG-604 追问补丁(`origin/staging` `54adb0d1`)** 邀请多件是降低门槛,不是要求。开场只报一件:batch 写一条、compare 一次、下一问仍是既有 `nextDatedCollectFollowup`(顺序不变)。不插「还有吗 / 还能想起别的吗」追问轮,也不重复开场邀请。第一道逐领域题干由服务端加一次 `FIRST_DATED_COLLECT_INVITE` =「想到别的也可以一起说。」(`invite_more_once`,只一次)。用户可见文案未出现「还有吗」。
|
||||
- **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`:超过两句只留首句,去掉「很有帮助 / 很有价值 / 很有分量 / 特别有用」。
|
||||
|
||||
@@ -32,16 +33,19 @@
|
||||
| 证据轮正文 | 2–4 句额度;模型三句原样落库 | 超过两句只留首句;去掉价值评价四词 | BUG-606(c) |
|
||||
| Agent 提示 | 「正文只做承接(2-4 句)」;「接下来我们继续」 | 「正文只做承接」+「证据轮正文只写一句复述」;题干作下一段 | BUG-606 |
|
||||
| 流式三句证据 | `answerText` 等于模型全文 | 落库首句,并以 `replace: true` 覆盖可见正文 | BUG-606 服务端裁剪 |
|
||||
| 只报一件后的下一问 | 未单独锁;有插追问轮风险 | 下一问 = 既有 dated collect(education 后是 family);正文无「还有吗 / 别的吗」 | `54adb0d1`;邀请不是要求 |
|
||||
| 第一道逐领域题干 | 等于 `USER_COLLECT_QUESTION.*` | 末尾一次接「想到别的也可以一起说。」;第二道起不再接 | 不是独立追问轮 |
|
||||
| Skill 10.0.19 哈希 | `a21b33abbbe3a530d725b94719b57ff8417cfcb850c54b547d5c18e390ec3d2b` | `a68885d3cf2110ee456bff65210c60e6bef4da4ea45e2a790a5462fd6d7307c8` | OpeningPolicy 补单事件口径;版本不升 |
|
||||
|
||||
## 测试
|
||||
|
||||
- `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**
|
||||
- 任务书指定切片:`tests/rectification-*.test.ts` + `agent-voice-copy-contract.test.ts` + `skill-registry.test.ts`(排除 database):**1066 tests / 1066 pass / 0 fail**(含新增「single confirmed domain opening goes to dated collect without a chase-more turn」)
|
||||
- Docker `database-rectification-*.test.ts`:本机未跑,记 blocked
|
||||
- 浏览器真人走查:browser MCP 可用但无打开的页、无登录态的 `collect_spoken` 会话,未点到「没有 / 记不清」。采集按钮与 44px、不复用 `rectification-step-state` 由 `rectification-spoken-collect.test.ts` 锁源码。
|
||||
- 浏览器真人走查:browser MCP 可用但无打开的页、无登录态的 `collect_spoken` 会话,未点到「没有 / 记不清」。采集按钮与 44px、不复用 `rectification-step-state` 由 `rectification-spoken-collect.test.ts` 锁源码。本补丁只改题干后缀与路由,无新 UI。
|
||||
|
||||
Skill 10.0.19 SHA256:`a21b33abbbe3a530d725b94719b57ff8417cfcb850c54b547d5c18e390ec3d2b`。live 树与 `versions/10.0.19` 一致,registry 哈希与 `computeSkillPackageSha256` 一致。
|
||||
Skill 10.0.19 SHA256:`a68885d3cf2110ee456bff65210c60e6bef4da4ea45e2a790a5462fd6d7307c8`。live 树与 `versions/10.0.19` 一致,registry 哈希与 `computeSkillPackageSha256` 一致。
|
||||
|
||||
## 偏离 / blocked
|
||||
|
||||
@@ -49,6 +53,6 @@ Skill 10.0.19 SHA256:`a21b33abbbe3a530d725b94719b57ff8417cfcb850c54b547d5c18e3
|
||||
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 BUG-604/605/606 修复版本:`aa7ccb30`(产品提交;本条为回填 SHA 的文档提交,不 amend)。
|
||||
5. `origin/staging` 在切出后超前(含 `54adb0d1` 任务书补丁、`d5972ef4` BUG-607)。只把 `54adb0d1` 的 §2.1 单事件口径摘进本 TASK;**不**取 BUG-607,不 merge staging,不 push。
|
||||
6. BUG_HISTORY BUG-604/605/606 修复版本:`aa7ccb30`(产品提交)。单事件开场补丁是新提交,不 amend。
|
||||
7. 点选旁白测试里,若下一问未能单独落库,服务端仍可能把采集题干接在「已记录,范围收到…」后面。断言改为前缀匹配,不把下一问挂载当成旁白模板的一部分。
|
||||
|
||||
@@ -19,7 +19,8 @@
|
||||
### 2.1 BUG-604 开场(决策 1)
|
||||
- `buildOpeningBrief` 改为给模型三个事实:当前搜索窗口(`candidate_range`,如 04:45–05:15)与来源(intake 声明的不确定档)、做法三句的要点、六类领域清单(升学、第一份工作、搬家、恋爱结婚、家里的大事、生病受伤)。正文模板由 Skill 规定为:一句窗口与做法、一句"最后给区间和代表分钟,不给精确到秒"、一句"想到几件说几件,有大概年月就行"+ 六类;仍不得写具体年份、不得要求先准备材料。首题 `spokenPrompt` 保持采集题身份(`collect:other:*`),题干改为"先说你最容易想起的一两件,年月大概就行"。
|
||||
- 批量写入:`rectification-record-evidence-batch` 已支持多事件;确认一条消息含 3 件不同领域事件时 batch 一次写入、compare 只跑一次、后续逐领域采集只问缺口(`nextDatedCollectFollowup` 已按 `hasConfirmedDomain` 跳过)。
|
||||
- 验收:opening 落库正文 ≤ 4 句、含六类中至少五类、不含年份;mock 一条三事件消息 → receipt 里 compare 一次、`evidence` 三条、下一问不再是这三个领域;`agent-voice-copy-contract` 收新句。SKILL.md L52 改口径,`conversation-strategy.md` OpeningPolicy 同步,Skill 10.0.19 快照与 registry。
|
||||
- **只报一件也必须走通(产品 2026-09-09 追问)。** 邀请是降低门槛,不是要求。用户开场只说一件事时,流程与今天完全一致:batch 写一条、compare 一次、下一问是既有的逐领域采集题(`nextDatedCollectFollowup` 顺序不变);**不得**插入"还有吗 / 还能想起别的吗"这种追问轮,也不得因为只报了一件就重复开场邀请。逐领域采集题的题干末尾可以带一次"想到别的也可以一起说"(服务端固定句,只在第一道逐领域采集题上出现一次)。
|
||||
- 验收:opening 落库正文 ≤ 4 句、含六类中至少五类、不含年份;mock 一条单事件消息 → compare 一次、下一问为逐领域采集题、正文不含"还有吗 / 别的吗";mock 一条三事件消息 → receipt 里 compare 一次、`evidence` 三条、下一问不再是这三个领域;`agent-voice-copy-contract` 收新句。SKILL.md L52 改口径,`conversation-strategy.md` OpeningPolicy 同步,Skill 10.0.19 快照与 registry。
|
||||
|
||||
### 2.2 BUG-605 「没有 / 记不清」(决策 2)
|
||||
- `collect_spoken` 焦点激活且未 busy 时,`composer-wrap` 内输入框上方渲染两个按钮(44px,次要样式,与被删的「先这样」不同类名,不得复用 `rectification-step-state`)。「没有」POST 与打字"没有"相同的请求(复用 `applyRectificationChoice`/拒答分支,`collectDeclinedAck` 原句);「记不清」走 `resolve-focus status=skipped` 的服务端路径,回执"记下了,这题先放着。"(新文案对照 VOICE.md)。
|
||||
|
||||
@@ -158,13 +158,14 @@
|
||||
|
||||
资料:家人记得大概时间,钟点任意,范围「差不多准」。地点任意公开城市。虚构经历。
|
||||
|
||||
开场后用一条消息说三件不同领域、带年月的事(例如上学、第一份工作、搬家)。之后继续采集。
|
||||
开场后用一条消息说三件不同领域、带年月的事(例如上学、第一份工作、搬家)。另走一遍只说一件。之后继续采集。
|
||||
|
||||
期望:
|
||||
|
||||
- 开场正文不超过四句,点出升学、第一份工作、搬家、恋爱结婚、家里的大事、生病受伤中至少五类,不含具体年份
|
||||
- 这一条消息只触发一次候选比较,账本写入三件
|
||||
- 下一问不再是已经说过的那三个领域
|
||||
- 只报一件时也只比较一次,下一问是既有逐领域采集,正文没有「还有吗 / 还能想起别的吗」;第一道逐领域题干末尾可以有一次「想到别的也可以一起说」
|
||||
- 口述采集输入框上方有「没有」「记不清」,没有「先这样」
|
||||
- 每轮助手正文一句复述(可另接一句范围变化);气泡里没有「本轮对照了…」,也没有「很有帮助 / 很有价值 / 很有分量 / 特别有用」
|
||||
|
||||
|
||||
Reference in New Issue
Block a user