智能体设计模式:优先级排序 Prioritization
1. 为什么 Agent 需要优先级排序? 现实系统里,任务永远不会一个一个排队来。 同一时间可能有用户请求、接口告警、定时任务、人工审批、子 Agent 回调。 如果 Agent 没有优先级,它就会像一个没有项目经理的团队:谁喊得大声就先
1. 为什么 Agent 需要优先级排序?
现实系统里,任务永远不会一个一个排队来。
同一时间可能有用户请求、接口告警、定时任务、人工审批、子 Agent 回调。
如果 Agent 没有优先级,它就会像一个没有项目经理的团队:谁喊得大声就先做谁,真正重要的事反而被拖住。
优先级排序的价值很直接:让有限的模型调用、工具调用、执行线程和人力审批,优先投向最关键的任务。
2. 它到底是什么?
优先级排序,就是给任务打分,然后决定执行顺序。
它不是简单的“先来先做”。它更像调度器。
每个任务进入系统后,Agent 先提取字段:任务类型、截止时间、影响范围、依赖关系、成本、风险。然后计算分数,放入队列。分数越高,越先执行。
上传 PDF 中也强调,优先级排序要根据紧急性、重要性、依赖关系、资源可用性、成本收益和用户偏好等标准评估任务,并支持环境变化后的动态调整。
3. 核心流程:先评分,再排队,再重排
优先级排序的流程不复杂,关键是每一步都要可追踪。
任务进入:用户请求、系统告警、定时任务、子 Agent 回调都统一转成 Task。
提取字段:提取 deadline、impact、risk、dependency、cost、confidence。
计算分数:规则先打底,LLM 只辅助判断模糊信息。
放入队列:可以是 P0/P1/P2,也可以是优先级队列。
执行任务:Worker、Tool Agent 或子 Agent 按优先级消费。
动态重排:新故障、任务失败、SLA 变化后重新计算分数。
4. 评分维度怎么设计?
优先级分数不要只靠模型感觉。
更稳的做法是:规则负责底线,模型负责理解语义,最终输出结构化结果。
常见评分维度可以这样拆:
紧急性:是否快到 SLA,是否有明确截止时间。
重要性:是否影响收入、核心链路、关键客户。
依赖关系:是否会卡住后续任务。
资源可用:工具、权限、数据是否已经准备好。
成本收益:是否值得消耗高级模型、外部 API 或人工审批。
风险级别:是否涉及生产、资金、权限、隐私。
5. 案例:线上告警处理 Agent
假设你的系统同时收到 4 个任务:
支付接口 5xx 激增。
登录接口响应变慢。
日报生成失败。
低优先级报表优化。
普通脚本可能按进入顺序执行。
真正的 Agent 不应该这样。
它应该先判断影响面:支付故障影响付款和收入,属于 P0。登录耗时升高影响体验,属于 P1。日报失败可以延后,属于 P2。报表优化没有紧急影响,属于 P3。
这时 Agent 的正确动作不是“全部处理”,而是先查支付日志、指标、最近发布记录,再通知值班人。
6. 工程上怎么落地?
优先级排序不要只写在 Prompt 里。
Prompt 可以让模型判断语义,但真正的队列、状态、日志、重排,都应该落在工程系统里。
一个可上线的实现通常分 5 层:
入口层:所有事件统一封装成 Task。
评分层:规则 + LLM 生成 priority_score 和 reason。
队列层:小系统用 heapq,大系统用 Redis Sorted Set、Celery、Temporal 或消息队列。
执行层:Worker 或子 Agent 根据优先级取任务。
反馈层:失败、超时、新事件、人工调整都会触发重新评分。
7. 这里有几个坑
第一,不能让所有任务都标 P0。
如果每个任务都是最高优先级,就等于没有优先级。
第二,不能只靠 LLM 判断。
LLM 适合理解语义,但不适合单独决定生产优先级。涉及 SLA、客户等级、资产等级、金额阈值,必须用规则兜底。
第三,要防止低优先级任务被饿死。
如果低优先级任务一直排不上,就要加 aging 机制:等待越久,分数逐步抬高。
第四,要记录排序原因。
每次排队都要写清楚 reason。否则出了问题,没人知道 Agent 为什么先做这个。
8. 上线检查清单
9. 总结
优先级排序,让 Agent 从“会做任务”变成“会安排任务”。
它解决的不是能力问题,而是选择问题。
真实业务里,任务、资源、风险永远同时存在。优秀的 Agent 不只是执行快,更要知道什么事该先做,什么事可以等,什么事必须交给人。
一句话:没有优先级的 Agent,只是自动化脚本;有优先级的 Agent,才开始像一个真正的项目经理。
要点速读
1. 为什么 Agent 需要优先级排序? 现实系统里,任务永远不会一个一个排队来。 同一时间可能有用户请求、接口告警、
- 1. 为什么 Agent 需要优先级排序
- 现实系统里,任务永远不会一个一个排队来
- 同一时间可能有用户请求、接口告警、