AI agent 任务优先级队列:长任务、短任务、人工确认和重试如何排队

HTMLPAGE 团队
18 分钟阅读

AI agent 上线后会同时处理短问答、长流程、重试和人工确认。本文给出队列分层、状态字段、优先级公式、超时策略和监控指标。

#AI agent #任务队列 #优先级 #并发控制

AI agent 原型阶段通常一次只跑一个任务。上线后情况会复杂得多:有人问简单问题,有人提交长流程,有些任务等待人工确认,有些工具调用失败需要重试。如果都进同一个队列,短任务会被长任务拖慢,重试可能挤占正常请求。

任务优先级队列的目标,是让不同类型任务各得其所。它不是“把任务放到后台”这么简单,而是要控制等待时间、重试风暴、人工确认卡点和不同用户之间的公平性。

先给结论:队列要按任务类型分层

队列适合任务
realtime短问答、快速分类
workflow多步工具流程
review_waiting等待人工确认
retry工具超时后的限次重试
batch离线生成、批量整理

一个队列承载所有任务,迟早会互相影响。

最小任务模型

队列设计先从任务数据结构开始:

{
  "taskId": "run_123",
  "queue": "workflow",
  "priority": 72,
  "status": "queued",
  "taskType": "content_generation",
  "userTier": "team",
  "createdAt": "2026-05-06T10:00:00Z",
  "deadlineAt": "2026-05-06T10:05:00Z",
  "attempt": 0,
  "maxAttempts": 2,
  "requiresHumanReview": false,
  "costBudget": 1200
}

至少要有 queueprioritystatusattemptdeadlineAt。没有这些字段,队列就只能先进先出,无法表达业务优先级。

一、短任务要保护响应时间

用户等待中的短任务应该优先处理。比如意图分类、简单问答、格式转换。如果被长任务堵住,用户会觉得系统卡死。

可以为 realtime 队列设置独立并发和更短超时。

常见配置:

队列并发超时说明
realtime5-10s面向用户等待
workflow1-5min多步工具任务
retry按错误类型防止重试挤占资源
batch离线任务

短任务不是永远最高优先级,但它们应该有独立资源,避免被批处理拖垮。

二、长流程要有状态,而不是占住请求

多步 agent 任务应该创建 taskId 后进入后台队列。前端显示进度,而不是一直等待 HTTP 请求。

状态至少包括:queued、running、waiting_review、retrying、completed、failed、cancelled。

更细的状态能帮助前端和运营判断卡在哪里:

queued -> running -> waiting_tool -> waiting_review -> running -> completed
              |              |                  |
              -> retrying     -> cancelled       -> failed

等待人工确认时,worker 应该释放任务;确认后重新入队。不要让一个 pending review 的任务占住执行线程。

三、重试队列要限流

工具失败后的重试不能和正常任务抢资源。重试队列要限制并发,并采用退避策略。失败次数超过上限后,任务应转入人工或失败状态。

不要让失败请求越重试越多。

重试任务的优先级通常要低于新任务,除非它影响用户正在等待的流程。可以用退避时间控制:

nextRetryAt = now + baseDelay * 2 ^ attempt

同时要记录 lastErrorType。如果连续两次都是 permission_denied,说明分类错了,不应该继续重试。

四、人工确认会改变队列流向

等待人工确认的任务不应该继续占用执行资源。它应该进入 review_waiting 状态,确认后再回到 workflow 队列。

这样可以避免一堆等待确认的任务占住 worker。

确认结果也要结构化:

{
  "taskId": "run_123",
  "reviewDecision": "approved | rejected | needs_change",
  "reviewerId": "user_456",
  "comment": "可以发送,但标题需要改短。",
  "resumeQueue": "workflow"
}

不要让 agent 从自然语言评论里猜是否可以继续。

五、优先级公式要透明

可以先用简单公式:

priority = urgency + userTierWeight + taskTypeWeight - retryPenalty - costPenalty
因子作用
urgency越接近 deadline 越高
userTierWeight团队或付费用户权重
taskTypeWeight交互任务高于批任务
retryPenalty防止失败任务抢占资源
costPenalty控制高成本任务排队

公式不必复杂,但要可解释。否则用户会觉得任务随机排队。

六、失败案例:批量任务堵住实时问答

一个团队晚上跑批量内容生成,和白天用户问答共用同一队列。批量任务没有完成时,用户简单问题也要等很久。

修复后,批量任务进入 batch 队列,实时问答有独立并发。团队还设置了 retry 队列限流,避免外部工具抖动时重试任务把 worker 占满。批量任务可以慢,交互任务必须快。

七、队列 Checklist

  • 是否按任务类型拆队列
  • 短任务是否有独立并发
  • 长任务是否异步并可查询状态
  • 重试是否进入独立队列并限流
  • 人工确认是否释放执行资源
  • 每类任务是否有超时和取消机制
  • 是否监控排队时间和完成时间
  • 等待人工确认时是否释放 worker
  • 重试任务是否有退避和最大次数
  • 优先级公式是否可解释
  • 是否监控每个队列的积压和超时

结语

AI agent 的队列设计决定它在真实并发下是否稳定。短任务、长流程、重试、人工确认和批量任务分层处理,再配合状态机、优先级公式和监控指标,才能让系统既快又不乱。

延伸阅读: