fix(rectification): put each question inside the assistant message
Focuses now carry asked_turn_id so GET rebuilds stem and options on the same turn. Agent writes spokenPrompt; the live question slot is gone. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -7536,3 +7536,36 @@
|
||||
- 相关记录:BUG-486、BUG-467、BUG-352
|
||||
- 复发自:BUG-486(键名别名与 demote 治标,值形状与缺失层未修)
|
||||
- 修复版本:`7faf8555`(staging;未提升 main)
|
||||
|
||||
## BUG-490 | 校正题目必须在同一条助手消息里,删除问题槽
|
||||
|
||||
- 状态:resolved
|
||||
- 首次发现:2026-09-02
|
||||
- 最近更新:2026-09-02
|
||||
- 影响面:`agentic_rectification_conversation_focuses.asked_turn_id` / `answer_option`、GET `/api/rectification/cases/[caseId]` `turns[].question`、`rectification-set-focus.spokenPrompt`、`rectification-agentic-chat`、`.rectification-question-slot`
|
||||
- 用户现象:采集题、区分题、前事核对出现在助手气泡下面的独立问题槽,或刷新后只剩正文。产品要求每一问都是同一条助手消息:正文 → 题干 → 选项;已答原地变灰;刷新从 turn 重建。
|
||||
- 触发条件:任意校正 opening / message / answer_choice / accept 后仍有 active focus。
|
||||
- 根因:focus 没有挂到 asked turn,也没有记录所选选项。前端只能从 GET 直播槽或正文拼接恢复题目,所以必须另画 `.rectification-question-slot`。Agent 被禁止调用 set-focus,题干只能用服务端模板。
|
||||
- 修复:focus 增加 `asked_turn_id` 与 `answer_option`。GET 按 `asked_turn_id` 把 `question` 接到 assistant turn。Agent 用 `rectification-set-focus.spokenPrompt` 写题干(校验失败两次落模板)。题干和选项画在同一条 `<article>` 里。删除问题槽与把题干拼进 `assistant_message` 的路径。旧 turn 仅在精确后缀 `\n\n${prompt}` 且 `asked_turn_id` 命中时 detach。不 bump Skill 10.0.14,确认门仍 fail-closed。
|
||||
- 验证:`rectification-question-in-message`、`rectification-spoken-prompt`、`rectification-spoken-collect` / `rectification-collect-prompt` / `rectification-walkthrough-polish` / `rectification-answer-choice` / `rectification-decision-authority` / `rectification-varga-style-copy` 迁到新合同;`rectification-v10-tool-contract` 锁 Agent 可调用 set-focus,两次 `invalid_spoken_prompt` 后 `retryable=false` 落模板。
|
||||
- 防复发:DOM 中不得再出现 `.rectification-question-slot`。运行时不得用正文字符串判断「有没有问过」。任意 active focus 必须能在某条 assistant turn 的 `question.focus_id` 上找到。缺题状态只出现在输入框上方。本题废止 BUG-441/461/471/485/487/488 中与「槽」或「正文不得含题干」绑定的条款;其余条款保留(有选项时题干可见、共用 `--assistant-content-inset`、不得用正文判断状态、开场不得并行提问、不得追加第二条 opening 题干消息)。
|
||||
- 相关记录:BUG-441、BUG-461、BUG-471、BUG-480、BUG-485、BUG-487、BUG-488、BUG-491
|
||||
- 复发自:BUG-488(拼接进正文后选择卡仍走槽,刷新合同仍不完整)
|
||||
- 修复版本:待发布
|
||||
|
||||
## BUG-491 | message 路径预建 choice focus 不挂 asked_turn_id,刷新丢题干
|
||||
|
||||
- 状态:resolved
|
||||
- 首次发现:2026-09-02
|
||||
- 最近更新:2026-09-02
|
||||
- 影响面:`persistNextInterviewIfIdle`、`finalizeSuccessfulTurnExit`、agent-run message 路径预建 choice focus
|
||||
- 用户现象:用户回答采集题后进入区分题时,在线会话也许能看到下一问;刷新后对应助手消息没有题干和选项。
|
||||
- 触发条件:message 路径上 agent-run 已为下一问建好 choice focus,随后 `finalizeSuccessfulTurnExit` 因已有 focus 早退,不写题干 turn。引入提交约为 `39c30b55`。
|
||||
- 根因:题干曾依赖第二条 assistant turn 或正文拼接。已有 active focus 时 idle persist 直接返回,不把 focus 链到当前 turn。
|
||||
- 修复:题干改为 turn 上的 `question`。idle persist 若已有 active focus,仍用当前 `turnId` 回写 `asked_turn_id`。GET 按该列重建。不再需要第二条题干 turn,早退不再丢题。
|
||||
- 验证:`rectification-question-in-message` 锁「预建 choice focus + askedTurnId → set_focus.p_asked_turn_id」;GET `turns[].question` 按 `asked_turn_id` 连接,禁止按时间戳推断。
|
||||
- 防复发:opening / message / answer_choice / accept 建立的每个 focus 都必须有 `asked_turn_id`,且 GET `turns[]` 恰有一条 assistant turn 带该 `question`。不得按 `asked_at` 与 `created_at` 对题。
|
||||
- 相关记录:BUG-480、BUG-490
|
||||
- 复发自:无
|
||||
- 修复版本:待发布
|
||||
|
||||
|
||||
Reference in New Issue
Block a user