fix: 增强长 turn liveness 可见性

This commit is contained in:
Codex
2026-06-10 12:05:21 +08:00
parent 43d42fe087
commit 43c47d3fa9
7 changed files with 362 additions and 15 deletions
+1 -1
View File
@@ -167,7 +167,7 @@ Manager 只承接 HWLAB v0.2 Code Agent 的通用执行事实,不承接 HWLAB
| `runId` / `commandId` / `attemptId` | 支持调用方持久关联和问题定位。 |
| `artifactSummary` | 第一阶段只放有界摘要、字节数、截断标记和必要引用;不内嵌大 stdout/stderr。 |
| `toolCallSummary` | 输出有界、脱敏的 tool call 状态摘要,至少包含 `count``statusCounts``exitCodeCounts` 和最近若干条 `items``method/toolName/type/status/exitCode/command`。消费侧必须用它区分 AgentRun command terminal、agent 内部工具执行和后置诊断,不得用单一 `hwpodExitCode` 覆盖 AgentRun 成功终态。 |
| `liveness` | 查询时派生的 supervisor 活性快照,不写入 durable event。必须暴露 `phase``active``lastSeq``lastEventAgeMs``lastCommandActivity`、lease/heartbeat 摘要和可执行恢复动作。`phase` 至少区分 `waiting-runner``waiting-model``waiting-tool``idle-after-tool``transport-disconnected``runner-heartbeat-stale``terminal`,避免调用方只能用外层超时猜测 backend 状态。 |
| `liveness` | 查询时派生的 supervisor 活性快照,不写入 durable event。必须暴露 `phase``active``lastSeq``lastEventAgeMs``lastActivity`/`lastCommandActivity``timeoutBudget`lease/heartbeat 摘要和可执行恢复动作。`lastActivity` 必须包含 `sourceSeq``eventId``activityKind``ageMs`,用于按 id/seq drill-down;默认只给有界摘要,不展开 stdout、runnerTrace、完整 tool command 或 raw event。`timeoutBudget` 必须基于 `executionPolicy.timeoutMs` 暴露 `elapsedMs``remainingMs``state`(如 `within-budget``approaching-hard-timeout``timed-out`)。`phase` 至少区分 `waiting-runner``waiting-model``waiting-model-output``waiting-tool``waiting-tool-output``idle-after-tool``runner-stdio-inactive``transport-disconnected``runner-heartbeat-stale``terminal`,避免调用方只能用外层超时猜测 backend 状态。终态失败/阻塞时仍必须保留恢复动作,例如 inspect result、resume session、split task,而不是返回空数组。 |
| `steerDelivery` | 仅在查询 `type=steer` command result 时出现。必须说明 steer 是否已被 runner ack、是否已转发并被 backend `turn/steer` RPC 接受、目标 `targetCommandId`、是否观察到 target command 后续事件,以及“steer command completed 不等于 target turn 已产生后续 assistant/tool 输出”的语义。 |
`assistant_message` partial、`command_output` 存在、stdout 非空、backend transport close 或 idle timeout 都不能单独让 result 进入 `completed`