评审/返工时间线对客户端可见:review/rework 4 类脱敏事件纳入冻结集(Refs #34)
文档:event-schema §4 增 4 类(标 ⭐ + 脱敏说明)、header 13→17;frontend-event-api 评审/返工时间线行推进为已定义 + header 注明部分推进 + 剩余跨仓项(HM 注册、cockpit 渲染、仅脱敏摘要);review-loop-protocol §3.2 由"事件不进 Manager 流"更正为"已脱敏外发"。 测试:新增 scripts/test-review-timeline-events.py(单元投影脱敏 + run_cross_review 真实站点发出 + 断言无 evidence/summary 泄漏 + 4 类在冻结集);test-contract-freeze 的 13-精确断言改为"13 核心为子集"(因 #34 扩到 17)。接入 CI。本地全绿(含 e2e/cross-review 回归)。 影响范围:仅 agent_swarm(orchestrator + docs + 测试 + CI)。Manager:回调新增 4 类(向后兼容;HM agent_callback.go 需登记方可对客户端暴露)。密钥/内容:脱敏投影不含 evidence/summary/原文/密钥。不改契约鉴权/计费/审批链。 Refs #34 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
c04c306d78
commit
a7d2bb2870
@@ -4,7 +4,7 @@
|
||||
>
|
||||
> 冻结要点(实现见 `orchestrator/swarm_runtime.py`,契约测试 `scripts/test-contract-freeze.py`):
|
||||
> 1. envelope 带 **per-swarm 严格递增 `sequence`**(从 1、无空洞,供客户端 `events?after=` 去重/续传,§2)。
|
||||
> 2. **客户端 13 类事件**(§4 标 ⭐)冻结为 `FROZEN_CLIENT_EVENT_TYPES`(`swarm_runtime.py`)。
|
||||
> 2. **客户端事件集**(§4 标 ⭐)冻结为 `FROZEN_CLIENT_EVENT_TYPES`(`swarm_runtime.py`):#28 的 13 类核心 + #34 新增 4 类评审/返工(`review.started`/`review.decision_made`/`rework.requested`/`rework.completed`,**脱敏投影**,见 §4)= 17。
|
||||
> 3. **artifact** 扁平字段 `{uri, checksum, task_id, size_bytes?, created_at}`(§3)。
|
||||
> 4. **凭据红线**:`secret_ref`/`credential_ref`/`signing_secret_ref` 为 `azkv://` 引用(非明文),Swarm 侧 `_redact_sensitive` 透传引用、剔除明文 `*_token/_secret/_key/password`;客户端可见视图由 HM 再做递归脱敏。
|
||||
>
|
||||
@@ -64,7 +64,7 @@
|
||||
|
||||
## 4. 事件类型注册表(与 HM 一致)
|
||||
|
||||
⭐ = **冻结的客户端 13 类**(`FROZEN_CLIENT_EVENT_TYPES`,驾驶舱据此渲染;HM `agent_callback.go` 据此对齐注册表)。其余为 Swarm 也发的辅助/运行时事件(HM 仍消费,但非客户端必需)。
|
||||
⭐ = **冻结的客户端事件**(`FROZEN_CLIENT_EVENT_TYPES`,17 类 = #28 的 13 核心 + #34 的 4 评审/返工,驾驶舱据此渲染;HM `agent_callback.go` 据此对齐注册表)。`review.*`/`rework.*` 为**脱敏客户端投影**(仅 reviewer id/verdict/failed_criteria/affected_tasks/recommended_rework/root_cause + 安全标量;**不含** evidence/summary/rework_reason 自由文本)。其余为 Swarm 也发的辅助/运行时事件(HM 仍消费,但非客户端必需)。
|
||||
|
||||
| event_type | payload 必填字段(HM 校验) | 分类 | Swarm 是否发出 |
|
||||
|---|---|---|---|
|
||||
@@ -81,6 +81,10 @@
|
||||
| ⭐ `swarm.completed` | `status` | swarm_terminal | ✅(终态,与 `deployment.status_changed` 并发) |
|
||||
| ⭐ `swarm.failed` | `status` | swarm_terminal | ✅(终态) |
|
||||
| ⭐ `swarm.stopped` | `status` | swarm_terminal | ✅(`stop_run`) |
|
||||
| ⭐ `review.started` | `cycle`, `reviewer_count` | review | ✅(#34,脱敏投影;交叉评审一轮开始) |
|
||||
| ⭐ `review.decision_made` | `accepted`, `rework_targets` | review | ✅(#34,脱敏投影;仲裁结论 + 逐评审者 verdict/criteria,无 evidence/summary) |
|
||||
| ⭐ `rework.requested` | `task_id`, `root_cause` | review | ✅(#34,脱敏投影;无 rework_reason/evidence) |
|
||||
| ⭐ `rework.completed` | `task_id`, `root_cause` | review | ✅(#34,脱敏投影;返工被重新接受) |
|
||||
| `deployment.status_changed` | `status` | deployment | ✅(HM 用于 AgentDeployment.Status;客户端用 swarm.* 终态) |
|
||||
| `task.heartbeat` | `task_id`, `agent_role` | swarm_task_flow | ✅ |
|
||||
| `task.blocked` | `task_id`, `reason` | swarm_task_flow | ✅ |
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
# 前端事件 API(Frontend Event API)
|
||||
|
||||
> 状态:**DRAFT / 待对齐 Frontend & Product Team**。
|
||||
> 状态:**DRAFT / 待对齐 Frontend & Product Team**;**评审/返工时间线部分已推进(#34)**——`review.started`/`review.decision_made`/`rework.requested`/`rework.completed` 已定义为客户端可见事件(脱敏投影)并纳入冻结集(见 §4 / event-schema §4)。其余视图(graph/cost/SSE 传输)仍待 Frontend & Product 冻结。
|
||||
>
|
||||
> **剩余跨仓项(#34 DoD)**:HM `agent_callback.go` 登记这 4 类;macOS/winos cockpit 渲染评审结论/证据摘要/返工目标/循环次数时间线(客户端仓子工单);渲染只用脱敏摘要,不展示原文(对齐 security-boundary)。
|
||||
>
|
||||
> 依据:`heicode-mananger/docs/integration/heicode-desktop-client-api.md`、`docs/integration/manager-side-contract-patches.md §6`。配套:[`event-schema.md`](./event-schema.md)、[`runtime-contract.md`](./runtime-contract.md)。
|
||||
|
||||
@@ -43,7 +45,7 @@
|
||||
| UI 视图 | 数据来源(现有) | 缺口 |
|
||||
|---|---|---|
|
||||
| Task DAG / topology | `/tasks`(`depends_on`)+ `/workflow.phases` | 稳定 graph schema、增量更新事件 |
|
||||
| Review loop / retry timeline | `task.retried` + `timeline.updated`(`Review cycle N`) | 独立 review/retry 事件类型与时间线 schema |
|
||||
| Review loop / retry timeline | **`review.started` / `review.decision_made` / `rework.requested` / `rework.completed`**(#34,脱敏客户端投影,见 event-schema §4)+ `task.retried` | ✅ 事件类型已定义并纳入冻结集(17 类);HM 注册 + cockpit 渲染(评审结论/证据摘要/返工目标/循环次数)落客户端仓子工单 |
|
||||
| Collaboration timeline | `handoff.requested/completed` + peer 路由 | peer 消息事件未对前端暴露 |
|
||||
| Token / cost monitor | `/metrics` + `budget.alert`(usage) | 统一 usage 推送(见 usage-billing §7) |
|
||||
| 实时推送 | `/logs` 轮询 | 统一 SSE/WS event stream(事件名、断线重连、刷新可恢复) |
|
||||
@@ -54,7 +56,7 @@
|
||||
|
||||
- 🔴 Swarm 未提供前端 SSE/WS 推送(仅 REST 轮询)。
|
||||
- 🔴 蜂群 graph/timeline/cost 的统一前端 schema 未定义。
|
||||
- 🟡 review/retry/collaboration 缺独立事件类型(当前借 `task.retried`/`timeline.updated`)。
|
||||
- 🟢 review/rework 已有独立客户端事件(#34:`review.started`/`review.decision_made`/`rework.requested`/`rework.completed`,脱敏投影,已纳入冻结集);collaboration 仍借 `handoff.*`/peer 路由(未单列)。
|
||||
- 待对齐:Frontend / Product Team 确认蜂群三视图(graph / timeline / cost)入口与事件流形态;与 HM 的 `/api/user/tasks/{id}/events` 通道如何衔接。
|
||||
|
||||
## 6. Swarm 侧冻结口径(#18:run/task/event API + Agent Registry/调度)
|
||||
|
||||
@@ -79,7 +79,7 @@
|
||||
### 3.2 状态与事件
|
||||
|
||||
- **状态**:`run.metadata["cross_review"]` 存 `AggregatedVerdict.to_dict()`,`run.metadata["rework_attributions"]` 存 `[ReworkAttribution.to_dict()]`,与 `review_cycles` 并存(`MAX_REVIEW_CYCLES` 预算复用);拒绝则 `reopen_task` 返工目标、run 退回 `running`。
|
||||
- **事件不进 Manager 流**:`review.*` / `rework.*` 的 payload builder 已实现但**不经 `emit_event` 外发**(未在 Manager `agent_callback.go` 注册;与 `swarm.health`/`convergence.*` 同策略,避免向订阅全部的回调投递未登记事件)。重开通过既有 `timeline.updated` 反映。登记后方可启用 Manager 侧发送。
|
||||
- **事件已对客户端可见(#34)**:`review.started` / `review.decision_made` / `rework.requested` / `rework.completed` 现以**脱敏客户端投影**(`cross_review.*_client_payload`:仅 reviewer id / verdict / failed_criteria / affected_tasks / recommended_rework / root_cause + 安全标量;**丢弃** evidence / summary / rework_reason 自由文本)经 `emit_event` 由 `run_cross_review` 外发,并纳入 `FROZEN_CLIENT_EVENT_TYPES`(13→17)。HM `agent_callback.go` 需登记这 4 类,cockpit 据此渲染评审/返工时间线。内部仍另存 `run.metadata["cross_review"]` / `["rework_attributions"]`(含完整 evidence,供审计,不外发)。测试 `scripts/test-review-timeline-events.py`。
|
||||
|
||||
### 3.4 不变量
|
||||
|
||||
|
||||
Reference in New Issue
Block a user