docs: 固化 command result 长 trace 合同

This commit is contained in:
Codex
2026-06-09 21:56:31 +08:00
parent 17918cda0a
commit 5ff882005b
3 changed files with 10 additions and 5 deletions
+2 -2
View File
@@ -38,7 +38,7 @@ Backend adapter 的第一阶段实现应吸收 HWLAB v0.2 已验证的 Codex std
| --- | --- | --- |
| Codex app-server JSON-RPC stdio | `internal/cloud/codex-stdio-session.ts``internal/cloud/codex-stdio-session-turn-state.ts` | 支持 `initialize``thread/start``thread/resume``turn/start`,并处理 app-server client request;未知请求要记录 unsupported error,不能静默等待。 |
| completed 判定 | `docs/reference/code-agent-chat-readiness.md` | 只有 Codex turn terminal completed 且 assistant reply 可聚合时才输出 completedassistant delta、item completed、stdout 或 transport close 不能单独完成。 |
| assistant stream 和 trace | `internal/cloud/code-agent-trace-store.ts``internal/cloud/codex-stdio-session-turn-state.ts` | assistant delta 只能作为 stream/progress 证据;长输出过程中可以输出有界 `assistant_message.source=agent-message-delta-progress` 快照,但 `replyAuthority=false` 且不得参与最终 reply 聚合;每个非空 completed `agentMessage` item 必须输出一个 `assistant_message` event,保留 `itemId` 和顺序;`item/agentMessage:started``item/agentMessage:completed` 这类 lifecycle 不得额外持久化为 `backend_status`,避免同一消息在 Web/CLI trace 中重复渲染;最终 result reply 必须优先来自最后一个 completed `agentMessage` item,不能把 commentary/progress delta 与 final response 直接串接。event 必须保留 `threadId``turnId`、session 摘要和 redacted backend metadata。 |
| assistant stream 和 trace | `internal/cloud/code-agent-trace-store.ts``internal/cloud/codex-stdio-session-turn-state.ts` | assistant delta 只能作为 stream/progress 证据;长输出过程中可以输出有界 `assistant_message.source=agent-message-delta-progress` 快照,但 `replyAuthority=false`,不能作为 authoritative final;每个非空 completed `agentMessage` item 必须输出一个 `assistant_message` event,保留 `itemId` 和顺序;`item/agentMessage:started``item/agentMessage:completed` 这类 lifecycle 不得额外持久化为 `backend_status`,避免同一消息在 Web/CLI trace 中重复渲染;最终 result reply 必须优先来自最后一个 completed `agentMessage` item,不能把 commentary/progress delta 与 final response 直接串接。若 provider 未产生 completed/final assistantmanager result 的可见性 fallback 与 `finalResponse` 标记规则以 [spec-v01-agentrun-mgr.md](spec-v01-agentrun-mgr.md#result-envelope) 为准。event 必须保留 `threadId``turnId`、session 摘要和 redacted backend metadata。 |
| command/tool output bounded | `docs/reference/code-agent-chat-readiness.md``web/hwlab-cloud-web/app-trace.ts` | `tool_call``command_output` 必须记录状态、摘要、字节数、截断标记;完整大输出只能通过后续 log/artifact 引用。 |
| provider/profile 隔离 | `internal/cloud/code-agent-contract.ts` | `codex``deepseek``minimax-m3``dsflash-go` 共享同一 backend kind,但必须使用 profile-scoped SecretRef、model/base-url/config/model catalog 和 writable runtime home。 |
| Secret redaction | `internal/cloud/code-agent-trace-store.ts` | `OPENAI_API_KEY`、auth/config、token、password、kubeconfig、URL credential 不得进入 event、result、log 或 health。 |
@@ -61,7 +61,7 @@ Registry 只表达能力和选择边界,不读取 Secret 值。Manager 负责
Adapter 输出给 runner 的 event 类型至少包括:
- `backend_status`backend 启动、模型/profile、能力和阶段状态,不包含 Secret 值。
- `assistant_message`:模型输出的用户可见 assistant 文本。Codex app-server 的 `item/agentMessage/delta` 只能作为流式过程证据或缺少 completed item 时的兜底;adapter 可以为长 delta 输出有界 progress 快照,必须标记 `source=agent-message-delta-progress``progress=true``replyAuthority=false``final=false`。一旦收到 completed `agentMessage` itemadapter 必须为每个非空 completed item 输出一条 `assistant_message`,并用 `itemId``messageIndex``messageCount``replyAuthority``final` 标明顺序与最终 reply authority。最终 result reply 必须以最后一个 `replyAuthority=true` / `final=true``assistant_message` 为准,避免把 commentary/status/progress 堆入 final response
- `assistant_message`:模型输出的用户可见 assistant 文本。Codex app-server 的 `item/agentMessage/delta` 只能作为流式过程证据或缺少 completed item 时的兜底;adapter 可以为长 delta 输出有界 progress 快照,必须标记 `source=agent-message-delta-progress``progress=true``replyAuthority=false``final=false`。一旦收到 completed `agentMessage` itemadapter 必须为每个非空 completed item 输出一条 `assistant_message`,并用 `itemId``messageIndex``messageCount``replyAuthority``final` 标明顺序与最终 reply authority。最终 result reply 必须优先以最后一个 `replyAuthority=true` / `final=true``assistant_message` 为准,避免把 commentary/status/progress 堆入 authoritative final response;无 authoritative final 时的 manager fallback 必须显式暴露 `finalResponse.source``finalResponse.seq` 和截断标记
- `tool_call`:工具调用摘要和 redacted 参数。
- `command_output`stdout/stderr 或命令输出摘要。
- `diff`:代码变更摘要或 patch 片段;必须受长度限制。