Skip to content

Task ​

任务是一次需求的生命周期载体,也是计费、追踪、取证的主键。生产环境的主执行链路走 TaskExecutionService。


职责 ​

负责不负责
任务创建、查询、更新、软删除定义工作流结构(workflow)
任务与 Workflow / Dialog 的关联需求翻译(demand-translation)
节点执行与结果保存Agent 匹配(agent-matching)
执行状态机与重试结果综合的语义(reporter / 内部 Agent)
需求摘要与确认交付验收(fulfillment)

数据模型 ​

MySQL tasks ​

字段说明
id主键
userId需求方
workflowId关联的 Mongo 工作流
statuspending / matching / workflow_ready / executing / completed / failed
summaryAI 提取的需求摘要(JSON)
title / description基本信息
createdAt / updatedAt时间戳

相关实体:

  • TaskExecution:一次执行的节点结果与时间线
  • TaskSummaryHistory:摘要的历史版本

Task 在 MySQL,Workflow 在 MongoDB,两者是软关联。这带来双库状态同步问题,见 数据模型。


服务结构 ​

服务职责
TaskServiceCRUD、状态流转、摘要确认
TaskExecutionService生产主链路:拓扑排序、节点执行、结果保存
TaskQueryService查询、列表、详情
TaskSummaryServiceAI 提取需求摘要
TaskWorkflowMatchService推荐与选择工作流
TaskStoreService存储与检索封装
ChatExecuteServiceChat 两段式桥接(prepare / execute)
TaskFeedbackService用户反馈

接口 ​

任务 ​

方法路径说明
POST/api/task创建任务
POST/api/task/marketplace从市场创建
GET/api/task/list列表
GET/api/task/agentAgent 视角列表
GET/api/task/:id详情
GET/api/task/:id/with-dialog详情 + 对话
PUT/api/task/:id更新
DELETE/api/task/:id硬删除
DELETE/api/task/:id/soft软删除

路由顺序上 /agent 必须在 /:id 之前声明,否则会被当作 id。

摘要与执行 ​

方法路径说明
POST/api/task/:id/summary生成需求摘要
GET/api/task/:id/summary读取摘要
POST/api/chat/prepare翻译 + 匹配 + 建工作流 + 推任务
POST/api/chat/execute启动执行

WebSocket ​

task.gateway.ts 推送任务状态与节点进度。


状态机 ​

pending
  │ 确认摘要
  ▼
matching
  │ 选择工作流
  ▼
workflow_ready
  │ 执行
  ▼
executing ──▶ completed
    │
    └──────▶ failed(可重试)

执行流程 ​

startExecution(taskId)
  ├─ 读取 Task 与 Workflow
  ├─ topologicalSort(nodes)
  └─ 对每个节点
       ├─ 内部 Agent(domain=platform)
       │    └─ EngineChatService.directPrompt()
       ├─ 外部 Agent
       │    ├─ A2AClientService.executeTask()
       │    └─ 失败 → AgentGatewayService.pushTask()
       └─ 内置节点 → 平台代码
            │
            ├─ 保存节点结果
            ├─ 旁挂写状态(若声明 stateWrites)
            └─ 触发下游节点

边界与限制 ​

限制说明
双库状态Task 在 MySQL,Workflow 在 Mongo,需要显式同步
节点结果保存在 MySQL大对象会带来存储压力
重试粒度是节点不支持从中间状态恢复整条链路
并发执行无依赖节点并行,但缺少全局并发上限配置
取消无完整取消语义,已推送的外部任务按 SLA 处理

源码位置 ​

libs/modules/src/task/
├── task.controller.ts
├── task.gateway.ts
├── task-feedback.controller.ts
├── services/
│   ├── task.service.ts
│   ├── task-execution.service.ts
│   ├── task-query.service.ts
│   ├── task-summary.service.ts
│   ├── task-workflow-match.service.ts
│   ├── task-store.service.ts
│   └── chat-execute.service.ts
├── entities/
└── dto/

相关页面 ​

Released under the MIT License.