Skip to content

【实现】 Agent Loop 重构 Phase 6:Runtime Event v5、Gateway 与 TUI v2 #728

@wynxing

Description

@wynxing

关联 RFC / 架构

目标问题

Runtime Event v4 只能描述线性 Run 和单个 subagent 生命周期,缺少 workflow/node/artifact 层级、幂等 event_id 与可重放 sequence。客户端无法在断线后恢复任务图,也无法稳定展示并行 Explore、审批、replan 和 needs_recovery。

实现设计(How)

  • 发布 Runtime Event payload v5,envelope 增加 event_id、workflow_id、node_id、parent_node_id 和 Workflow 内单调 sequence。
  • 增加 workflow、node、artifact、approval、recovery、node compact 事件;现有 agent/tool/permission/budget/usage/hook/checkpoint 事件携带节点归属。
  • Gateway 新增 getWorkflow、resolveWorkflowApproval、resolveWorkflowRecovery、listWorkflowEvents RPC。
  • 状态与事件同事务持久化;Gateway 重连先取 snapshot,再从 sequence 增量重放。
  • TUI v2 reducer 保存 Workflow/Node map、依赖、活动节点、审批/权限/恢复状态和 last sequence;使用 event_id 去重并检测缺口。
  • TUI v1 固定 v4 且目录冻结,本阶段不修改 internal/tui/;正式 v5 切换后停止支持 TUI v1。
  • Runtime 不双发 v4/v5;切换作为明确 breaking change。

影响模块:Runtime event contracts、Gateway contracts/RPC/relay/docs、TUI v2 gateway/reducer/view 和协议生成示例。

边界与非目标:Gateway 不推导 Workflow 状态;TUI v2 不导入 Runtime/Session;不建立 v4 投影层;不修改 TUI v1。

任务拆解

  • 定义 v5 envelope、事件类型和 payload schema 单一真源。
  • 把现有 provider/tool/permission/budget/hook 事件绑定 workflow/node。
  • 实现 Workflow snapshot 与增量事件查询接口。
  • 实现审批和恢复决议 RPC、ACL、错误映射、metrics 与文档。
  • 实现 Gateway stream 重连和 sequence replay。
  • 扩展 TUI v2 client contract、reducer 和 Workflow/Node 展示状态。
  • 实现审批、权限等待、replan、恢复和失败的 TUI v2 交互。
  • 更新 RPC reference、contract matrix、生成示例和 breaking change 说明。
  • 明确默认启动/发布文档指向 cmd/neocode-tuiv2

测试与验证(Done)

  • 正常路径:Workflow 创建、路由、并行节点、审批、执行、验收和终止事件顺序正确。
  • 边界条件:重复 event_id、sequence 缺口、空 parent、快速路径无 Explore 和多个并行节点。
  • 异常分支:stale revision、approval 非 pending、recovery 非 pending、ACL 拒绝和 Runtime 超时映射稳定。
  • 重连路径:snapshot + replay 恢复到相同 reducer 状态,乱序事件触发重新同步而非猜测。
  • TUI v2 边界:不 import runtime/session/repository/SQLite,不直接执行工具。
  • 协议:Runtime 只发 v5;TUI v1 文件无修改;文档明确 breaking change。
  • Go 与 TUI v2 测试通过,新增修改逻辑达到 100% 覆盖目标。

风险与回滚

  • 风险:v5 切换导致旧客户端立即失效。先完成 TUI v2 conformance 和发布指引,再切换 Runtime。
  • 风险:事件与状态不一致。事件 sequence 与状态迁移同事务,Gateway 只中继持久化事实。
  • 风险:Reducer 遇到缺口产生错误 UI。检测缺口后重新请求 snapshot。
  • 回滚:正式切换前可回退 v5 入口;切换后按完整版本回滚,不在 Runtime 内长期维护 v4 双发。

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions