fix(rectification): align activity with real agent work
Independent Staging Quality Gate / validate (push) Successful in 14m58s
Independent Staging Quality Gate / publish (push) Successful in 8m5s

This commit is contained in:
Jesse_Chen
2026-08-13 14:43:54 +08:00
parent 62d12c5c06
commit 89f96dcfa5
19 changed files with 1149 additions and 199 deletions
+28
View File
@@ -3065,3 +3065,31 @@
- 防复发:Case API 的公开 DTO 必须有单一解析边界并由合同测试锁定;特殊业务流不得继承通用推荐问题兜底;Agent 正文、Activity 和结构化业务卡片必须各自拥有唯一内容职责,不得重复呈现或把内部执行过程写进自然回复。
- 相关记录:BUG-173、BUG-174、BUG-175、BUG-176
- 修复版本:本次提交(staging 精确 SHA 以推送结果为准;尚未部署)
## BUG-180 | 生时校正缺少跨轮安全上下文且单一事件契约破坏自然叙述
- 状态:resolved(已验证,待本次 staging 发布完成)
- 首次发现:2026-08-13
- 最近更新:2026-08-13
- 影响面:V9 System Prompt、首次开场、`rectification-read-case` 安全投影、多轮承接与多事件证据记录。
- 用户现象:Agent 容易把每条输入当成新事件;同一段中的多件事件被合并或要求逐条重发;“是的、那年、后来改了”等承接回答缺少上下文;用户拒答后可能被重复追问;首次开场像客服式流程介绍。
- 根因:Prompt 缺少以理解真实经历和信息增益为导向的正向行为目标,并把输入限制为单一事件;`buildAgentMessages` 只提供当前轮消息,`rectification-read-case` 又只返回统计,没有受限的近期对话、事件摘要、当前修订目标和近期拒答目标。
- 修复:整体替换 System Prompt 与首次开场指令;支持同轮多事件分别 propose/confirm`rectification-read-case` 从服务端 Dossier 派生有界的 `evidence_context``conversation_context`;允许当前 pending 用户轮立即关闭已拒绝的 active follow-up;同步 Skill 与 conversation strategy。
- 验证:V9 Agent、status/security、evidence、contracts 聚焦行为与安全合同测试共 56 项通过;目标 ESLint 通过,`git diff --check` 通过。
- 防复发:不得恢复单一事件问卷契约;跨轮承接必须通过服务端安全投影,不得传递 raw ledger;拒答不落成证据,也不得重新开启同一追问目标。
- 相关记录:BUG-173、BUG-174、BUG-175、BUG-179
- 修复版本:本次 staging 发布提交(精确 SHA 以提交与部署结果为准)
## BUG-181 | 生时校正 Activity 写死状态且完成凭证抢在 Agent 正文之前
- 状态:resolved(已验证,待本次 staging 发布与真实浏览器验收)
- 首次发现:2026-08-13
- 最近更新:2026-08-13
- 影响面:V9 生时校正 NDJSON Activity、运行中 Orbs、完成凭证、候选采用按钮与 Agent 执行静默。
- 用户现象:Agent 运行时显示与真实工具不一致的“正在核对星盘信息”等写死文案;只有候选比较能在开始阶段出现公开状态,其他工具实时状态缺失;完成后的大块执行记录位于 Agent 正文之前,用户先看到系统日志而不是结论,技法又以不可点击的标签堆叠产生交互误导。
- 根因:前端把运行中 Activity 与持久化执行凭证混在同一展示状态中,通用消息行在没有真实事件时虚构具体动作;服务端 stream mapping 只为少数 phase 映射开始状态,没有为所有公开校正工具投影统一的 started/completed/failed 生命周期;Prompt/Skill 也未明确禁止正文自行生成执行记录标题与 Activity 文案。
- 修复:新增仅包含 allowlist 工具、状态与公开 `executed_methods``tool.activity` 协议,并在 API 出口再次清理;所有十个公开工具均按真实 tool-call/tool-result/tool-error 映射 started/completed/failed。客户端拆分当前 Activity 与完成凭证,运行时只显示 Orbs 和当前真实动作,正文开始后清除状态;完成凭证移动到 Agent 正文之后,使用原生默认折叠 `details/summary`、普通文本分组和可见键盘焦点,不再使用大灰卡与胶囊标签。候选采用按钮内部改为“正在采用…”,不增加第二个 Orbs;文字流光支持 160ms 切换淡入和 reduced-motion。Prompt、Skill 与会话策略禁止正文生成“本轮做了什么”“执行步骤”“使用技法”或内部错误细节。
- 验证:V9 Agent/status/evidence/contracts、Activity stream、入口和布局聚焦回归共 98 项全部通过;目标 ESLint 与定向 TypeScript 检查通过;Next.js webpack 生产构建完成 TypeScript、60 个静态页面及全部路由生成;`git diff --check` 通过。默认 Turbopack 仅因隔离 worktree 的外部 `node_modules` 符号链接触发环境性 panic,非本次代码错误。真实键盘、读屏器、移动端状态切换和登录业务流仍需浏览器验收。
- 防复发:Activity 只能来自服务端清理后的真实工具生命周期,不得从 Agent 正文、未来步骤或前端猜测生成;工具参数、出生资料、评分、权限、Provider metadata 与内部错误不得进入公开事件;Agent 正文、运行状态、完成凭证和候选卡必须保持单一内容所有权。
- 相关记录:BUG-172、BUG-173、BUG-179、BUG-180
- 修复版本:本次 staging 发布提交(精确 SHA 以提交与部署结果为准)