docs: record Workbench projection anti-pattern cases

This commit is contained in:
Codex
2026-06-19 07:26:21 +00:00
parent 870aac9075
commit a6edcba69d
2 changed files with 5 additions and 0 deletions
+4
View File
@@ -72,6 +72,10 @@ Code Agent trace 的长期 API 和 Web 行为规格以 UniDesk OA 为权威:AP
Workbench projection/read model 是持久化投影,不是 GET 侧隐式修复路径。Cloud API 重启、内存 finalizer 丢失或投影 worker 中断后,恢复只能由受控后台 projector/resumer 从 durable session、durable trace 和 AgentRun source cursor 继续推进;`/v1/agent/turns/:traceId``/v1/agent/traces/:traceId` 和 Web hydrate 不得为了让一次读取看起来正确而隐藏写入或 remap command。排查“AgentRun 已完成但 Workbench 仍 running/pending”时,先比较 AgentRun command result/session terminal、AgentRun raw event 最大 `sourceSeq`、HWLAB durable trace 最大 `sourceSeq` 和 session/turn 投影状态;若 AgentRun 已 terminal 且 HWLAB trace 落后,应归为 HWLAB projection resume gap,并用 YAML-first 配置的 projector/resumer 修复与验收。
Workbench 投影相关问题的禁用模式以 HWLAB issue 历史为判定边界。`pikasTech/HWLAB#1585` 已证明 GET/read-side 补 AgentRun result 会把恢复能力藏进一次读取,Cloud API 重启、rollout 或内存 finalizer 丢失后仍会让 Workbench 长期停在旧 `lastProjectedSeq`;因此“事后修补/0repair”不能替代 durable projector/resumer。`pikasTech/HWLAB#1596` 已证明 turn/card completed 与 TraceEventPage 不一致会直接变成用户可见的“已完成但暂无可读 Trace”;因此不能让 AgentRun raw result、session summary、turn snapshot、trace tail 或 DOM 互相竞争,再用优先级规则仲裁显示状态。读侧也不得从 event `completed`、message text、elapsed timeout 或 final result cache 推测 lifecycle;这些只能作为诊断输入,最终事实必须由唯一 Workbench projection 写出。
TraceEventPage 自身的分页契约修复可以在同一持久化快照内做稳定排序和输出 cursor 归一化,但不得改变 lifecycle、补写 projector 状态或引入第二事实源。修复完成后的关闭证据必须同时覆盖同一 session/trace 的 turn、trace events、range/monotonic cursor 和 DOM Trace 可读性,避免只凭 completed card 或单个 API 通过误关。
Code Agent trace/result 展示类问题的 typed CLI 关闭证据以 `hwlab-cli client agent result <traceId>``hwlab-cli client agent trace <traceId> --render web` 和必要的 `hwlab-cli client agent inspect --trace-id <traceId>` 为准,具体操作说明见 `$hwlab-code-agent` skill。三者的默认 JSON 都应暴露 `traceResultSummary`,其中 `ids``toolCalls``agentMessages``finalResponse``diagnostics``counts``upstreamGaps` 是给用户和审计者阅读的稳定摘要;不要要求关闭者从 raw `body``runnerTrace.events``rows``terminalEvidence` 人工拼事实。
`result``trace --render web` 必须能直接证明 final assistant response、实际工具调用及状态、关键 trace/session/conversation/run/command/runner ID 和 runner/provider/lane 诊断。`inspect` 用于确认 trace 所属 session/conversation/thread、恢复上下文和下一步入口;它可以佐证 ID 和上下文,但不能单独替代 final response 或 Web renderer 行。验证必须打到 issue/CLI 选中的同一 node/lane public origin 或等价 Cloud Web/Cloud API dispatcher,不能用临时 AgentRun manager 调用、手写 raw request 或旧 lane trace 代替。