异步任务执行

AI 员工后台执行引擎——SSE 解耦、任务追踪、中断追加

异步任务执行

OpenVort 的异步任务执行引擎(AgentTaskRunner)让 AI 员工能够在后台持续工作,不受用户浏览器状态影响。

核心机制

传统 AI 聊天系统中,用户关闭页面 = AI 停止工作。OpenVort 彻底改变了这一模式:

  • SSE 只是观众窗口:用户在 Chat 页面看到的流式输出是通过 SSE 传输的,但 AI 的实际执行是独立的后台任务
  • 断开不中断:用户离开 Chat 页面,SSE 连接断开,但 AI 的后台任务继续执行
  • 可重连续看:用户回到 Chat 页面时,自动重连到正在执行的任务流,继续看实时输出

任务生命周期

用户发消息 → 创建 agent_task(pending) → 启动后台执行(running)
                                            ↓
                                    Agent 调用工具、生成回复
                                            ↓
                    完成(completed) ← Agent 执行结束 → 失败(failed)
                         ↓                                ↓
                  写入 chat_messages              记录错误信息
                  WebSocket 通知用户               WebSocket 通知用户

任务中断与追加

  • 中断:在 Header 的活跃任务指示器上点击取消按钮,或在 Chat 中发送"取消"
  • 追加消息:AI 执行过程中,你可以发送新消息补充要求(如"重点看安全部分"),AI 会在当前步骤完成后收到并调整

并发控制

  • 同一会话同一时间只允许一个 running 任务
  • 不同会话可以并行(多个 AI 员工同时工作)

服务重启容灾

如果 OpenVort 服务重启,所有正在运行的任务会自动标记为失败,并通知用户。用户可以选择重新执行。