diff --git a/docs/reference/hwlab.md b/docs/reference/hwlab.md index 249d5316..1713670a 100644 --- a/docs/reference/hwlab.md +++ b/docs/reference/hwlab.md @@ -90,6 +90,8 @@ Workbench prompt、TraceTimeline、final response、详情弹窗或工具调用 Session 切换、session rail 或 Workbench 恢复路径类问题必须同时验证点击态和持久化恢复态。浏览器证据应在同一 public origin 中选择一个非当前 session,等待足够覆盖 `hydrate`、`select-conversation`、active trace repair 等异步返回的空闲窗口,确认 active tab 没有回退;随后读取 `/v1/workbench/workspace?projectId=` 确认后端 `selectedConversationId` 已改变并持久化;最后刷新页面并再次等待 session tabs,确认同一个 session 仍是 active。若当前 selected conversation 没有出现在 `/v1/agent/conversations` 当前列表窗口中,前端必须把 workspace 当前选中 conversation 合入 session rail;刷新后没有 active tab、状态显示“等待 workspace”,或只靠内存态显示成功,均不能作为通过证据。自定义 Playwright 验收不要只按 tab index 或重复标题判断,应锁定唯一 title、conversationId 或后端 selected id,并记录 `select-conversation` response;与 session 切换无关的 health/RPC 噪声应拆成独立 issue,不阻塞已经通过的切换闭环。 +Code Agent 会话恢复的状态权威必须以最新 message 和同 turn trace 为准。conversation 顶层 `status=idle` 只能表示当前没有进行中的 turn,不能覆盖 message 自身的 `running` / `completed` / `failed`,也不能把 agent message 降级成 `source`;conversation 顶层 `lastTraceId` 若与最新 user/agent message trace 脱节,后端 summary 应按最新同 turn user/agent trace 修正,前端 hydrate/select/retry 后也应从最新 active message reattach trace。关闭刷新、deep link 或切换 session 后丢消息/卡住类 issue 时,验收必须同时看 DOM 最后一条 agent 的 `data-status`、conversation API 顶层 `lastTraceId`、最后 user/agent message 的 `traceId` 和 `runnerTrace.status`,不能只看 session rail 文案或 trace 面板是否出现占位文本。 + Workbench session URL 是恢复路径的一部分。每个可见或当前选中的 session 都应能映射到 `/workbench/sessions/`,`/workspace/sessions/` 仅作为兼容 alias;从 `/workbench` 进入、创建 session 或点击 session rail 后,地址栏应反映当前 active `conversationId`,复制 session 信息时也应包含可直接打开的 session URL。直接打开 deep link 时,Cloud Web 静态层必须返回 SPA `index.html` 而不是 404;登录 redirect 必须保留原 path;登录后或 hydrate 后应通过 `/v1/agent/conversations/` 与 workspace select 路径把后端 `selectedConversationId` 收敛到 URL 中的 id。关闭 session URL/恢复类 issue 时,浏览器证据至少包含最终 URL、workspace API 的 `selectedConversationId`、active tab 判断,以及一次无 cookie direct GET 或等价探针确认 deep link 是 `200 text/html`。 Cloud Web 登录页的中文错误可能会把 API upstream 502、rollout 中间态或真实 401 都表现成登录失败。遇到登录失败先看 `web-probe script` 的 `probe.auth.retryCount`、`transientObserved`、`retryable`、`fallbackUsed`、`fingerprint` 和 `commanderAction`,再用目标 public origin probe `/health/live`、`/auth/login` 状态和选中 namespace 的 API/Web/edge-proxy rollout;只有 API 已 ready 且 `/auth/login` 明确返回 401 时,才把它归类为凭据或用户状态问题。rollout 瞬态恢复后重跑同一短生命周期 Playwright 验收即可,不要把 transient `upstream_unavailable` 写成长期功能缺陷。