Skip to content

[V1 Purity] 将前端 AgentTask 数据链路统一为类型化客户端与 SSE #146

Description

@leecyang

问题

后端已经提供 AgentTask 事件接口,但 TaskDetail 仍以固定间隔轮询完整 snapshot,且缺少终态停止、请求取消和重叠请求控制。前端 API 层部分返回值仍为 Record<string, unknown>,创建任务和发送消息也没有系统性使用幂等键。

实施要求

  • 基于唯一公开 OpenAPI 生成 operation-level TypeScript client,不只生成 schema。
  • 所有外部响应必须经过生成类型或明确的运行时解析,不得在业务层传播 Record<string, unknown>。
  • AgentTask 详情采用唯一 SSE state machine;删除固定轮询及“失败后退回轮询”的双轨逻辑。
  • 支持 cursor/Last-Event-ID 恢复、断线重连、事件去重、乱序保护和 terminal event 后主动关闭。
  • 页面卸载、Workspace/Task 切换时使用 AbortController 取消 fetch 与流连接。
  • 所有会产生状态变化的 command 由客户端生成稳定幂等键,并通过类型化客户端发送。
  • 明确 snapshot 初始化与增量事件归并规则,避免每次命令后重新抓取完整状态。

验收条件

  • 业务组件不手写公开 API URL,不直接使用未解析 unknown 响应。
  • TaskDetail 不存在固定周期轮询。
  • SSE 在 terminal 状态、卸载和路由切换后正确关闭。
  • 重连不会重复应用事件,cursor 丢失有明确错误语义。
  • 创建任务、发送消息及其他 command 均携带幂等键。
  • 测试覆盖断线重连、终态停止、重复事件、取消请求、401/403/404 和 Workspace 隔离。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions