这一章是 第 20 章:优先级排序(Prioritization)。它讲的是:当 Agent 面前同时有很多任务、很多目标、很多可选动作,而且资源有限时,Agent 应该如何决定 先做什么、后做什么、不做什么。
这章本身不复杂,但它很重要,因为它和前面几章能串起来:
第 16 章资源感知优化:资源有限,所以要排序。 第 17 章推理技术:复杂任务要拆解,拆完后要决定顺序。 第 18 章护栏:有些任务风险高,要降级或转人工。 第 19 章评估监控:排序策略好不好,要靠指标监控。 第 20 章优先级排序:面对多个目标和动作,决定下一步最该做什么。
1. 这一章的核心问题
Agent 在真实环境里经常不是只有一个任务,而是同时面对很多任务。
比如一个项目管理 Agent 可能收到:
| |
如果没有优先级排序,它可能随便选一个做,导致真正重要的事情被拖延。
这一章开头说,在复杂动态环境中,智能体会面对大量潜在行动、目标冲突和资源有限的问题。如果没有明确的后续行动决策流程,Agent 可能效率低下、操作延迟,甚至无法实现关键目标。优先级排序就是让智能体根据任务的重要性、紧急性、依赖关系和指定标准进行排序。
所以核心是:
优先级排序(Prioritization)让 Agent 在多个候选任务中选择最值得先执行的任务。
不是所有任务都同等重要,也不是所有任务都应该马上做。
2. 优先级排序不是简单“谁先来谁先做”
很多初学者会觉得:任务来了就按顺序做不就行了?
但真实系统不行。
比如:
| |
如果按先来后到,可能先做 B,但这明显不合理。
优先级排序要综合考虑:
紧急性(Urgency):是不是马上要处理? 重要性(Importance):对核心目标影响大不大? 依赖关系(Dependency):是不是其他任务的前置条件? 资源可用性(Resource Availability):现在有没有工具、人员、数据? 成本收益(Cost-Benefit Analysis):投入和收益是否划算? 用户偏好(User Preference):用户明确更重视什么?
文档也提到,优先级排序的核心通常包括标准定义、任务评估、调度或选择逻辑,以及动态优先级调整。
所以它不是一个简单排序,而是一个决策流程。
3. 优先级排序发生在哪些层级?
这一章说,优先级排序可以发生在多个层级:总体目标排序、规划步骤排序、下一步行动选择。
这点很重要。
3.1 目标级排序
目标级排序(Goal-Level Prioritization) 是决定哪个大目标最重要。
比如一个个人助理 Agent 同时知道你要:
| |
它应该判断:明天面试最紧急、最重要,所以优先。
3.2 子任务级排序
子任务级排序(Subtask-Level Prioritization) 是任务拆解后,决定步骤顺序。
比如“准备面试”可以拆成:
| |
这里可能要先了解公司,再准备回答;先整理简历,再模拟投递场景。
3.3 行动级排序
行动级排序(Action-Level Prioritization) 是 Agent 当前下一步到底做什么。
比如现在有三个可选动作:
| |
如果信息不足,应该先搜索;如果信息已经充分,应该生成回答;如果涉及用户数据,应该先校验权限。
这和 ReAct 的流程关系很紧:
| |
4. 动态优先级调整是什么?
动态优先级调整(Dynamic Priority Adjustment) 是这章的关键点。
意思是:任务优先级不是固定的,会随着环境变化而变化。
比如一开始任务排序是:
| |
突然线上系统崩了:
| |
这就是动态调整。
文档也说,如果出现新的关键事件或截止时间临近,智能体应修改任务优先级,以保持适应性和响应能力。
这和普通自动化脚本的区别很明显。
普通脚本通常按固定流程执行:
| |
Agent 应该能根据情况调整:
| |
5. P0 / P1 / P2 是什么?
代码示例里用了 P0、P1、P2 这种优先级。
一般可以理解为:
P0(Priority 0):最高优先级,紧急且重要,必须马上处理。 P1(Priority 1):中等优先级,重要但不一定马上处理。 P2(Priority 2):低优先级,可以延后处理。
在项目管理或工程团队里,经常会用类似的分级。
比如:
| |
注意,P0 不是“第 0 个任务”,而是最高优先级等级。
6. 实际应用场景怎么理解?
文档列了多个场景,我按直观逻辑解释一下。
6.1 自动化客户支持
客户支持 Agent 收到很多工单。
有些是:
| |
有些是:
| |
前者影响大、紧急,应该优先处理。文档也提到,客户支持中可以优先处理系统故障报告,而将密码重置等常规问题延后,还可以给高价值客户更高优先级。
6.2 云计算资源调度
云资源有限,不可能所有任务都同时最高规格运行。
比如:
| |
高峰期应该优先保证核心在线服务,把低优先级批处理放到非高峰。
这就是资源感知优化 + 优先级排序。
6.3 自动驾驶
自动驾驶里优先级很明显:
| |
如果前方突然有人,制动避险必须优先于保持车道、平稳驾驶或优化能耗。
这说明有些系统里优先级甚至是安全规则。
6.4 项目管理
项目管理 Agent 要考虑:
截止日期; 依赖关系; 人员可用性; 任务重要性; 风险程度。
比如:
| |
所以不是“哪个任务看起来简单先做哪个”,而是要看依赖和影响。
6.5 网络安全
网络安全 Agent 面对大量告警。
有些告警只是低风险扫描,有些可能是正在发生的入侵。
要根据:
威胁严重性; 受影响资产重要性; 攻击是否正在进行; 是否涉及敏感数据。
来决定先处理哪个。
这就是高风险场景中的优先级排序。
7. 代码示例在做什么?
这一章的代码是一个 项目经理 Agent(Project Manager Agent)。
它用 LangChain 构建了一个简单的任务管理系统。这个 Agent 可以:
创建任务; 给任务分配优先级; 把任务分配给工作人员; 列出所有任务。
文档说,这段代码演示了如何用 LangChain 构建项目经理智能体,自动创建、排序并分配任务。
整体结构是:
| |
8. Task 类是什么?
代码里有:
| |
这表示一个任务对象有四个字段:
| |
这里用的是 Pydantic(数据校验库)。它可以让任务结构更清楚,也方便做参数校验。
这其实和第 18 章护栏也有关:结构化数据和参数校验可以减少 Agent 工具调用出错。
9. SuperSimpleTaskManager 是什么?
SuperSimpleTaskManager 是一个内存里的任务管理器。
它内部用字典保存任务:
| |
为什么用字典?
因为字典可以通过任务 ID 快速查找、更新和删除。文档也说,使用字典实现 O(1) 查找、更新和删除。
它主要有三个功能:
| |
注意,这只是演示用的内存系统。真实项目里任务应该存到数据库。
10. 工具层在做什么?
代码定义了几个工具:
| |
这些工具就是 Agent 能操作外部系统的接口。
比如:
用户说:
| |
Agent 应该调用:
| |
这就是 Agent 的工具调用流程。
这里有一个重要点:优先级不是用户必须明确写 P0。Agent 要能理解自然语言里的信号。
比如:
| |
都可能映射到 P0。
代码系统提示词里也写了,如果提到“紧急”“ASAP”“关键”,就映射为 P0。
11. Prompt 模板在约束 Agent 行为
代码里系统提示词规定了 Agent 的工作流程:
| |
这实际上是在给 Agent 一个 操作策略(Action Policy)。
它不是让 Agent 随便发挥,而是告诉它:
| |
这就是优先级排序和工具调用结合的地方。
12. 代码示例的两个模拟场景
文档里的模拟有两个场景。
场景 1:紧急任务
用户请求:
| |
Agent 应该:
| |
场景 2:普通任务
用户请求:
| |
没有明确优先级,也没有明确负责人。
系统提示词规定默认:
| |
所以 Agent 应该:
| |
这个例子很简单,但它展示了 Agent 如何从模糊自然语言里提取优先级和分配信息。
13. 这段代码有什么局限?
这章代码是教学示例,不是生产系统。它有不少局限。
13.1 优先级规则太简单
只把“紧急、ASAP、关键”映射为 P0。
真实系统要考虑更多因素:
截止日期; 业务影响; 客户等级; 依赖关系; 资源可用性; 风险程度; 任务预计耗时。
13.2 没有真正排序队列
代码只是给任务分配 P0/P1/P2,没有实现完整排序队列。
真实系统应该能:
按优先级排序; 同优先级按截止时间排序; 考虑依赖关系; 动态调整; 重新调度。
13.3 没有依赖关系
任务之间可能有依赖。
比如:
| |
代码里没有表示任务依赖。
13.4 没有资源约束
比如 Worker B 已经有很多任务,不能继续分配。 代码里没有人员负载、时间、能力匹配。
13.5 没有监控与评估
它没有检查任务是否按时完成,也没有评估排序策略是否有效。
这部分要和第 19 章结合。
14. 一个更真实的优先级评分公式
真实系统里,优先级常常不是简单规则,而是打分。
可以设计一个评分:
| |
比如:
| 任务 | 重要性 | 紧急性 | 风险 | 成本 | 优先级 |
|---|---|---|---|---|---|
| 修复支付故障 | 10 | 10 | 10 | 4 | 极高 |
| 审核营销文案 | 5 | 4 | 3 | 2 | 中 |
| 整理历史文档 | 2 | 1 | 1 | 3 | 低 |
这比简单 P0/P1/P2 更细。
在 Agent 里可以有两种做法:
规则评分:用代码计算。 LLM 评分:让模型根据 rubric 打分。
更稳的是二者结合: 代码负责硬规则,LLM 负责理解模糊语义。
15. 优先级排序和资源感知优化的区别
这两个很容易混。
资源感知优化(Resource-Aware Optimization) 关注:
| |
优先级排序(Prioritization) 关注:
| |
二者关系是:
| |
比如:
| |
16. 优先级排序和 ReAct 的关系
ReAct 是:
| |
优先级排序发生在“行动选择”那里。
比如 Agent 当前可以:
| |
它必须判断哪个最优先。
如果信息不足,优先搜索。 如果用户权限不明,优先权限校验。 如果风险高,优先转人工。 如果答案已充分,优先最终回答。
所以可以理解为:
ReAct 提供循环框架,优先级排序决定每一轮循环中最该采取的动作。
17. 优先级排序和护栏的关系
护栏告诉 Agent:
| |
优先级排序告诉 Agent:
| |
例如有三个任务:
| |
护栏会说:
| |
优先级排序会说:
| |
所以护栏和优先级排序是互补的。
18. 优先级排序和评估监控的关系
第 19 章评估监控可以用来衡量排序策略好不好。
比如你可以监控:
| |
如果 P0 任务经常被延迟,说明排序策略失败。 如果低优先级任务永远得不到处理,说明需要防止 饥饿问题(Starvation)。
19. 饥饿问题是什么?
饥饿问题(Starvation) 是优先级系统里的常见问题。
如果系统永远优先处理 P0/P1,P2 任务可能永远排不到。
比如:
| |
这在真实项目里很常见。
解决方法包括:
老化机制; 截止日期提升; 定期处理低优任务; 限制 P0 数量; 给长期任务保留固定资源。
老化机制(Aging) 是指任务等待越久,优先级逐渐上升。
比如 P2 任务等了 30 天,自动升到 P1。
这章没有展开,但如果做真实系统,这是必须考虑的。
20. 第 7 页图 1 怎么理解?
第 7 页图 1 是 优先级排序设计模式(Prioritization Design Pattern)。
图里大概是:
| |
意思是:
用户给出任务后,Agent 不是直接输出,而是先和一个优先级列表或排序机制交互,根据任务优先级决定处理顺序,然后再输出。
这张图强调:
Agent 的输出不是只由 prompt 决定,还由任务队列和优先级状态决定。
也就是说,同一个用户请求,在不同上下文下优先级可能不同。
比如用户说:
| |
平时这是普通任务。 但如果明天就要提交材料,它可能变成高优先级。
所以优先级依赖上下文。
21. 这一章在面试的位置
这一章不一定以“优先级排序”单独出现,但它和的这些主题有关:
架构选型 Agent 是 ReAct 还是 Plan-and-Execute?计划执行时就需要任务排序。
工具管理 多工具可选时,优先调用哪个工具?
工程化踩坑 成本控制、死循环、状态丢失,都和排序策略有关。
业务 AI 工程分析 业务需求拆解、AI 方案选型、效果评估,都需要判断优先级。
简历项目拷打 如果你项目里有多个任务或多个工具,面试官可能问:Agent 怎么决定下一步做什么?
所以它不是最显眼的知识点,但在解释 Agent 工作流时很有用。
22. 如果面试被问:Agent 如何决定下一步行动?
可以这样回答:
Agent 可以通过优先级排序机制决定下一步行动。首先定义排序标准,比如紧急性、重要性、依赖关系、资源可用性、成本收益和用户偏好。然后对候选任务或候选动作进行评分或分类,选择当前收益最高、风险可控、资源可用的动作执行。执行后根据环境反馈动态调整优先级。如果涉及高风险动作,还要结合护栏和人工确认。
这就把第 20 章讲清楚了。
23. 如果面试被问:怎么设计任务优先级系统?
可以这样回答:
我会先定义任务字段,包括任务描述、截止时间、重要性、紧急性、依赖任务、预计成本、负责人和风险等级。然后用规则或模型给任务打分,例如 P0/P1/P2,或者计算 priority score。调度时先处理高分任务,同时考虑依赖关系和资源可用性。系统还要支持动态重排,比如新紧急任务插入、截止时间临近、资源变化。同时要加入 aging 机制,避免低优先级任务长期饥饿。
这个回答比“按紧急程度排序”更完整。
24. 如果面试被问:优先级排序和规划有什么区别?
可以这样回答:
规划是把目标拆成任务和步骤,优先级排序是决定这些任务和步骤的执行顺序。规划解决“要做哪些事”,优先级排序解决“先做哪件事”。在复杂 Agent 中,二者通常结合使用:Planner 生成候选步骤,Prioritizer 根据紧急性、重要性、依赖关系和资源约束选择下一步。
25. 最后总结
第 20 章的核心是:
当 Agent 面对多个目标、多个任务、多个工具和有限资源时,它需要一套优先级排序机制来决定下一步最该做什么。
你需要记住这条主线:
| |
最重要的关键词是:
优先级排序(Prioritization) 紧急性(Urgency) 重要性(Importance) 依赖关系(Dependency) 资源可用性(Resource Availability) 成本收益分析(Cost-Benefit Analysis) 用户偏好(User Preference) 动态优先级调整(Dynamic Priority Adjustment) 任务调度(Task Scheduling) 行动选择(Action Selection) 饥饿问题(Starvation) 老化机制(Aging)
这一章真正的价值是:它让你理解 Agent 不是“看到任务就做”,而是要在多个可能行动中做选择。这个能力一旦和 ReAct、工具调用、资源优化、护栏、评估监控结合起来,Agent 才更像一个能在真实环境里工作的系统。

推荐阅读
上一篇:
下一篇: