想象你要从上海自驾到成都。出发前,你不会只记住“往西开”三个字就上路,而是会打开地图:先规划出上海→武汉→重庆→成都的主干路线,再把每天开多远、哪里加油休息、哪个路段易堵车都安排清楚。但如果一出发就把每分钟的驾驶动作都预定死,遇到临时封路反而寸步难行。真正的老司机懂得:大方向规划到位,路上保持灵活,遇到状况随时调整。 这就是 Agent 工作流中的“任务规划”——大语言模型 Agent 面对一个复杂目标时,首先要做的不是急着动手,而是像这位老司机一样,把目标层层分解成可执行的小步骤,设计出路线图,并在执行中不断修正。本文将带你看懂任务规划的三种核心策略:思维链像“逐段查地图”、思维树像“岔路口多留备选方案”、ReAct 像“边开边看导航”,再聊聊如何平衡规划深度与执行效率,以及怎么把规划器真正部署到生产中。

岗位关联

掌握任务规划,是让 AI Agent 从“答一句是一句”升级为“靠谱的自主执行器”的关键能力——这是每个 AI 工程师搭建生产级工作流的第一课。

目录
  1. 可视化演示
  2. 任务规划概述
  3. 思维链分解
  4. 思维树搜索
  5. ReAct循环
  6. 计划修正
  7. 规划深度权衡
  8. 工程落地实践
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

展示思维链(CoT)将目标分解为子任务序列、ReAct思考-行动-观察循环推进,以及执行反馈驱动的计划修正机制,滑块调节任务复杂度。

本节配有交互动效(进入视口后自动加载,约 3KB)。

思维链分解 目标分解为连续子任务S1-Sn 每步基于前一步推导 线性逐步推理提升多步准确率

任务规划概述

老司机出发前必做一件事:看地图。他会先确认终点在哪、大方向朝哪、中间经过哪几座城市,再把路线在心里过一遍。这份“路线图”就是规划的产物——它不包含每一次踩油门的细节,但把“从哪到哪、先干什么后干什么”安排得明明白白。没有这张图,车子一上路就会在第一个路口犹豫。

Agent 的任务规划,就是让大语言模型扮演这位老司机。用户抛来一个模糊的复杂目标,比如“帮我准备一份市场分析报告”,模型不会直接开始写,而是先把这个目标拆解成“收集数据→清洗整理→分析趋势→生成图表→撰写结论”这样的步骤序列。规划是 Agent 工作流的起点,它输出的是一份结构化的任务清单,每个任务标注了做什么、依赖什么、调用什么工具。

规划的输出通常是一个有序列表,可以用下面的式子表达:

规划的价值在于:它把“一次性生成长篇答案”这种高风险动作,变成了“一段一段安全驾驶”。每一段都短小、可验证、可回退,即使中间某步出错,也只需修正局部,不必推翻重来。就像老司机只要地图在手,心里就有底——任务规划,就是 Agent 心里的那张地图。

目标→任务规划[t1,t2,…,tn]→逐步执行目标达成\displaystyle \text{目标} \xrightarrow{\text{任务规划}} [t_1, t_2, \dots, t_n] \xrightarrow{\text{逐步执行}} \text{目标达成}
这个式子说明了任务规划的本质:一个复杂目标不是一步到位的,而是被拆成 n 个有序子任务,逐个执行后汇总达成。
  1. 目标用户交给 Agent 的原始诉求,通常模糊、复杂、无法一步完成。
    目标\text{目标}
  2. 任务规划把目标拆解为子任务序列的分解动作。
    →任务规划\xrightarrow{\text{任务规划}}
  3. 步骤序列分解出的有序子任务列表,是规划的最终产物。
    [t1,t2,…,tn][t_1, t_2, \dots, t_n]
  4. 逐步执行按顺序完成每个子任务并汇总结果。
    →逐步执行目标达成\xrightarrow{\text{逐步执行}} \text{目标达成}

思维链分解

自驾去成都,老司机不会试图一眼看完两千公里,而是一段一段地看:先到武汉,再到重庆,每一段都想清楚“从哪上高速、在哪休息”。这种“一段一段想清楚”的方式,在 AI 领域叫做思维链(Chain of Thought,CoT)。它让大语言模型不再直接蹦出答案,而是先生成一串中间推理步骤。

思维链的分解策略有三条原则:一是自顶向下,先把目标粗分为几个大阶段,再对每个阶段细分,就像先定“武汉、重庆、成都”三个大站,再规划每站之间的细节;二是按依赖排序,先做前置任务,比如“查天气”要在“定行程”之前;三是每个子任务应可独立验证,就像每个路段的路况都能单独确认,避免最后才发现走错。

用一个式子来表示思维链的推理过程:

在提示工程中,思维链通常通过“让我们一步一步思考”这类提示模板触发,模型便会在回答前铺陈推理轨迹。长链能力还意味着模型能处理需要多步逻辑的难题——就像老司机把长途拆成一段段路书,每一段都开得从容,整条路自然走得稳。

q⇒t1→t2→⋯→tn⇒a\displaystyle q \Rightarrow t_1 \rightarrow t_2 \rightarrow \cdots \rightarrow t_n \Rightarrow a
其中 q 是原始问题,t₁ 到 tₙ 是模型依次生成的中间思路,a 是最终答案。箭头的含义是“上一步的结论成为下一步的输入”。
  1. 输入问题 q用户提出的原始目标,是思维链的起点。
    qq
  2. 中间思考步骤模型依次生成的每一步推理,t 代表其中一个思路。
    t1→t2→⋯→tnt_1 \rightarrow t_2 \rightarrow \cdots \rightarrow t_n
  3. 推导箭头表示前一步的输出作为后一步的输入,逻辑不断推进。
    →\rightarrow
  4. 最终答案 a串联全部中间步骤后得出的结论。
    aa

思维树搜索

单看一条路线总有风险:万一武汉方向堵车,难道原地等待?聪明的旅行博主会在每个岔路口记下几条备选路线,评估每条的路况、油费、风景,再择优前进。思维树(Tree of Thoughts,ToT)正是这种思路——它不满足于生成一条思维链,而是在每一步生成多个候选分支,像树一样展开,再对每个分支评估打分,筛选后继续深入。

在思维树中,每个中间状态 s 代表一个“已经走到这里的部分方案”。为了判断哪条分支值得继续,模型会派出 K 个评估者,对状态 s 分别打分,再取平均值作为该状态的价值:

思维树的搜索策略可以是广度优先(先看所有一层分支再深入)、深度优先(沿最有希望的分支一探到底),或束搜索(每层保留分数最高的几个分支)。代价是评估要消耗额外令牌,收益是找到最优路径的概率显著提升。就像老司机多记几条备选路线,路上遇到堵车,心里不慌。

V(s)=1K∑k=1KVk(s)\displaystyle V(s) = \frac{1}{K} \sum_{k=1}^{K} V_k(s)
V(s) 是状态 s 的综合得分,V_k(s) 是第 k 个评估者给出的独立打分。分数越高,说明这个分支越可能通向正确解。
  1. 状态 s思维树中的一个中间节点,代表当前已走到的部分推理方案。
    ss
  2. 评估者 V_k第 k 个评估者对状态 s 的独立打分,类似多位旅友各自评价一条路。
    Vk(s)V_k(s)
  3. 求和符号把 K 个评估者的分数加在一起。
    ∑k=1K\sum_{k=1}^{K}
  4. 取平均值除以 K 得到综合价值,避免单个评估者的偏见。
    1K⋅∑k=1KVk(s)\frac{1}{K} \cdot \sum_{k=1}^{K} V_k(s)

ReAct循环

地图规划得再完美,真正开车时眼睛还得盯着路。导航说“前方五百米右转”,你打方向盘;导航又说“该路段拥堵”,你重新选路——这就是“边想边做、边做边看”。ReAct 正是这个流程的 AI 版本:Reasoning(推理)与 Action(行动)交替进行,形成闭环。

在 ReAct 循环里,模型先产生一个 Thought(推理),决定下一步该做什么;然后执行 Action(行动),通常是一次工具调用,比如搜索、计算或读写文件;工具返回的结果成为 Observation(观察);模型再基于观察产生下一个 Thought。如此循环,直到得出最终 Answer(答案)。

ReAct 与纯思维链的本质区别在于:思维链只在脑子里推演,ReAct 却真实地触碰外界。老司机在高速上不只是默背路线,还要看路牌、听导航、感受车况——推理与行动互为表里,才能应对真实世界的复杂动态。

Thoughtt→Actiont→Observationt→Thoughtt+1→⋯→Answer\displaystyle \text{Thought}_t \rightarrow \text{Action}_t \rightarrow \text{Observation}_t \rightarrow \text{Thought}_{t+1} \rightarrow \cdots \rightarrow \text{Answer}
这是一个思考-行动-观察的循环:每一步行动都基于当前推理,每一步观察都修正下一步推理,直到任务完成。
  1. 推理 Thought模型“想一步”,判断当前局面和下一步该做什么。
    Thoughtt\text{Thought}_t
  2. 行动 Action执行具体动作,通常是调用一个外部工具。
    Actiont\text{Action}_t
  3. 观察 Observation接收工具返回的结果,作为新的环境信息。
    Observationt\text{Observation}_t
  4. 循环推进观察结果驱动下一个推理,形成持续闭环。
    Thoughtt+1→⋯\text{Thought}_{t+1} \rightarrow \cdots
  5. 终止答案当推理认为目标已达成,输出最终答案。
    Answer\text{Answer}

计划修正

高速上突然看到“前方施工,请绕行”的牌子,再老练的司机也不会硬闯。他会停下车,打开导航重新规划,绕一段路继续前行。计划修正机制就是 Agent 的“导航重算”:当执行偏离原计划、工具返回异常、或中间结果与预期不符时,Agent 必须有能力调整路线,而不是死磕原计划。

计划修正的第一步是偏差检测:每一步执行后,Agent 要校验结果是否合理,工具是否报错,前置条件是否满足。第二步是动态重规划:发现偏差后,丢弃失效的剩余步骤,基于当前状态重新生成后续计划。第三步是错误恢复:对偶发故障尝试重试或降级方案。这些机制共同构成 Agent 的容错设计。

用式子表示一次计划修正:

老司机不怕封路,怕的是没有备选方案。计划修正让 Agent 从“一次规划的完美主义者”变成“持续适应的实用主义者”——一次失误不代表全盘失败,只要能够检测、重规划、恢复,任务依然有大概率完成。

Plan′=Replan(Plan,Δt)\displaystyle \text{Plan}' = \text{Replan}(\text{Plan}, \Delta_t)
Plan 是原计划,Δₜ 是第 t 步观察到的偏差(错误信息或结果差异),Replan 是重规划函数,输出新的计划 Plan'。
  1. 原计划 Plan最初规划的子任务序列。
    Plan\text{Plan}
  2. 偏差 Δₜ第 t 步执行时发现的异常或偏离。
    Δt\Delta_t
  3. 重规划函数 Replan基于原计划和偏差生成新计划的机制。
    Replan(⋅)\text{Replan}(\cdot)
  4. 新计划 Plan'修正后替代原计划继续执行的步骤序列。
    Plan′\text{Plan}'

规划深度权衡

如果每次出门前,老司机都要精确规划到“第几秒踩刹车”,这趟车根本开不出去。规划并非越细越好:在空旷的高速上,记到服务区级别就够了;在闹市区,才需要更细的导航指令。规划深度与执行效率之间存在此消彼长的关系——每个规划步骤都要消耗令牌和时间,拆得太细反而拖累整体速度。

规划深度的选择首先取决于任务复杂度:简单任务(如“把 3 和 5 相加”)直接执行,无需规划;中等任务做一级拆分即可;复杂任务才需要多级分解。其次是预算控制:生产系统通常会设置最大步数和令牌上限,规划消耗也计入预算,无法无限膨胀。最后是自适应策略:先做粗粒度规划,执行中发现某一步特别复杂,再就地展开细化——就像司机先走大路,进了市区再听导航逐条街指引。

总成本可以拆成规划与执行两部分:

聪明的司机懂得“大方向写进备忘录,小路口交给导航”——规划深度不是越细越好,而是与任务复杂度匹配的折中艺术。对 AI 工程师来说,设计规划器时永远要问一句:这一步规划值得吗?

Costtotal=∑i=1n(Cplan(ti)+Cexec(ti))\displaystyle \text{Cost}_{\text{total}} = \sum_{i=1}^{n} \left( C_{\text{plan}}(t_i) + C_{\text{exec}}(t_i) \right)
总成本等于每个子任务的规划成本与执行成本之和。步骤分得越细,n 越大,规划成本越高;但步骤太粗又可能导致执行失败、反复重试,执行成本反而上升。平衡点就是最优规划深度。
  1. 总成本 Cost_total整个任务消耗的令牌、时间和调用资源的总额。
    Costtotal\text{Cost}_{\text{total}}
  2. 求和符号对所有子任务的成本逐项累加。
    ∑i=1n\sum_{i=1}^{n}
  3. 规划成本 C_plan为子任务生成步骤与安排依赖所花的开销。
    Cplan(ti)C_{\text{plan}}(t_i)
  4. 执行成本 C_exec实际执行子任务(含工具调用)所花的开销。
    Cexec(ti)C_{\text{exec}}(t_i)

工程落地实践

一个人会看地图不算本事,让整个车队都装上导航系统、统一调度、实时监控,才算真正的工程能力。任务规划从原型走向生产环境,同样要解决架构、代码、性能、监控四个层面的问题。

架构设计上,规划器应该独立成服务模块,与执行引擎解耦:规划器只负责“想”,执行引擎只负责“做”,二者通过消息队列通信。这样规划策略升级不影响执行逻辑,执行故障也不会拖垮规划器。代码实现上,规划器接收目标文本,输出结构化任务列表,每个任务包含描述、依赖和所需工具;执行引擎按依赖顺序调度,调用外部工具,回传观察结果。性能优化上,相似目标的规划结果可以缓存复用,候选分支的评估可以并行请求,大幅降低延迟。监控评估上,核心指标包括任务成功率、平均规划步数、平均耗时、重规划发生频率——就像车队的每一辆车都装了行车记录仪,数据反过来喂给系统持续改进。

用一个最朴素的指标衡量规划质量:

生产级的任务规划不是一次性的魔法,而是一个持续优化的闭环:上线→监控→发现短板→调整规划策略→再上线。就像车队每次出车都在积累路况数据,导航系统越用越聪明——这,才是任务规划真正的工程落地之道。

成功率=N成功N总任务×100%\displaystyle \text{成功率} = \frac{N_{\text{成功}}}{N_{\text{总任务}}} \times 100\%
成功率是完成目标的任务数占总任务数的比例。它是规划-执行-修正全链路质量的最终裁判。
  1. 成功任务数 N_成功完整达成用户目标的任务数量。
    N成功N_{\text{成功}}
  2. 总任务数 N_总任务系统收到的全部任务数量。
    N总任务N_{\text{总任务}}
  3. 比例转换两者相除后乘以 100% 得到百分比。
    ×100%\times 100\%

AI 应用场景

智能客服工单自动处理

阶段:任务规划 + ReAct 循环

解决的问题:传统客服需要人工逐条判断工单类型、查询知识库、拟写回复,高峰期耗时且易遗漏。AI Agent 收到工单后先规划处理路径,再按计划调用工具执行,彻底释放人力。

具体案例:某电商平台的售后 Agent 收到“退款未到账”投诉后,先规划出“查订单状态→核对支付流水→判断退款条件→生成回复文案”四步,依次调用订单查询、支付网关等工具,任一步返回异常就触发计划修正重新规划;若三次仍无法解决,自动转人工并附上完整轨迹。处理时长从人均 8 分钟降到 40 秒。

数据分析报告自动生成

阶段:思维链分解 + 工具调用

解决的问题:分析师手动完成取数、清洗、建模、绘图、撰写结论多个环节,重复且易错。Agent 把“生成季度销售报告”用思维链分解为有依赖顺序的子任务,逐个执行,保证每一步结果可校验。

具体案例:Agent 接到“分析华东区 Q3 销售额下降原因”后,分解为“拉取销售明细→清洗数据→按品类聚合→对比去年同期→生成归因结论→输出 PPT 素材”六个子任务,每步调用 SQL 引擎和可视化工具,最终在五分钟内产出一份带图表的分析报告,而分析师只需复核结论。

代码缺陷自动修复机器人

阶段:ReAct 循环 + 计划修正

解决的问题:手动修复 bug 需要反复“编译-报错-修改-重跑”,耗时且枯燥。Agent 用 ReAct 循环自动迭代:运行测试得到观察结果,定位代码并修改,再重跑验证。

具体案例:某公司的 CI 流水线接入修复机器人,测试失败时自动规划修复路径:先读取报错堆栈(观察),定位可疑代码(推理),打补丁(行动),重跑测试(新的观察)。若连续三次仍失败,机器人回滚改动并通知开发人员,避免把半成品留在主干上。

Python 演示

python59 行
"""ReAct 风格任务规划器:先拆解目标,再逐任务推理-行动-观察""" import re  class PlannerAgent:    """极简 Agent:plan -> reason -> act -> observe 的闭环"""     def __init__(self, tools):        self.tools = tools          # 工具注册表 {名称: 函数}        self.tool_names = list(tools.keys())        self.history = []           # 轨迹记录,便于回溯调试     def plan(self, goal):        """把大目标按标点拆解为子任务序列"""        parts = re.split(r"[;;,,]", goal)        return [p.strip() for p in parts if p.strip()]     def reason(self, task):        """模拟 LLM 推理:判断该子任务用哪个工具"""        for name in self.tool_names:            if name in task:                return name        return "answer"     def act(self, task, tool_name):        """执行动作:调用外部工具或直接作答"""        if tool_name == "answer":            return "直接回答:" + task        return self.tools[tool_name](task)     def run(self, goal):        """ReAct 主循环:沿规划步骤依次推理、行动、观察"""        plan = self.plan(goal)        self.history.append(("plan", plan))        results = []        for task in plan:            tool = self.reason(task)            self.history.append(("thought", "用【{}】处理「{}」".format(tool, task)))            obs = self.act(task, tool)            self.history.append(("observe", obs))            results.append(obs)        return results  def search(info):    return "搜索到:" + info[:6] + "..."  def calc(expr):    nums = re.findall(r"\d+", expr)    return "计算结果:" + str(sum(int(n) for n in nums))  if __name__ == "__main__":    agent = PlannerAgent({"搜索": search, "计算": calc})    agent.run("搜索杭州天气;计算周末花费;给出出行建议")    for kind, msg in agent.history:        print("[{}] {}".format(kind, msg))
目的:用一个 60 行的可运行示例演示任务规划与 ReAct 循环的最小闭环——目标被拆成子任务,每个子任务经“推理选工具→行动→观察”推进,完整轨迹打印出来供回溯。
  1. self.tools = tools工具注册表,把“搜索”“计算”等函数挂到名字上,Agent 按需调用,类似老司机的工具箱。
  2. parts = re.split(r"[;;,,]", goal)用正则按常见标点把大目标切分成子任务列表,相当于把长途拆成一段段路书。
  3. for name in self.tool_names:在推理阶段逐个比对任务文本,判断该调用哪个工具。
  4. self.history.append(("thought", ...))把每一步推理记入历史,形成可审计的轨迹。
  5. for task in plan:ReAct 主循环,沿规划好的步骤逐段推进,先想后做再观察。
  6. agent.run("搜索杭州天气;计算周末花费;给出出行建议")演示入口:一个复杂目标被自动拆解并依次完成。

常见误区

误区“我让 Agent 先输出一个计划,然后按这个计划一步步执行就行了,计划不用改。”

正解计划是起点不是终点。真实环境充满不确定性——工具返回异常、中间结果不符合预期、用户中途改变目标,都需要“计划修正”动态调整。就像导航规划的路线遇到封路必须重算,死守原计划只会让 Agent 卡死在第一步。

为何常见:人写周计划时习惯一次性定稿,容易把“计划”等同于“承诺”,忽略了执行环境的动态性。

误区“把任务拆得越细,Agent 执行就越不容易出错,所以步骤越多越好。”

正解每个规划步骤都消耗 token 和延迟,规划过度会拖慢执行、放大累积误差。规划深度应与任务复杂度匹配:简单任务直接执行,复杂任务才层层分解。老司机的路书只写到服务区级别,不会规划到每一次打方向盘。

为何常见:直觉上觉得“细 = 严谨”,但忽略了规划本身有成本,细到极致反而寸步难行。

误区“CoT 和 ReAct 是一回事,都是让模型一步一步推理。”

正解CoT 是“纯脑内推理”,模型在回答前生成一串中间思路,不与环境交互;ReAct 是“推理+行动+观察”的循环,模型必须调用工具、接收反馈。类比:CoT 是在脑子里默背路线,ReAct 是边开车边看导航,前者只有一个思考回路,后者是思考与行动的双向互动。

为何常见:两者都表现为“一串步骤”,表面相似,初学者很容易混为一谈。

误区“任务规划就是把目标分解成文字步骤,分解完就完成了,不需要外部工具。”

正解规划只解决了“做什么”,“怎么做”还需要工具调用。规划产出的每个子任务通常要落到具体工具(搜索、计算、代码执行)才能完成。路书规划了“去哪里加油”,但加油还得伸手递卡——规划与执行是上下游关系,缺一不可。

为何常见:很多人只看到规划的输出是文本列表,忽略了规划与执行的衔接环节。

误区“只要 Agent 某一步执行出错,就说明任务规划是失败的,整个流程要重来。”

正解生产级 Agent 都内置容错机制:重试、降级、局部重规划。一步失败不代表全盘失败,关键看能否在计划修正中恢复。好司机遇到导航没信号,还能靠路牌和常识继续走——容错设计比一次完美的规划更重要。

为何常见:把“规划”当成一次性完美产物,忽视了鲁棒性设计才是生产系统的生命线。

面试题

Q1. 任务规划在 Agent 工作流中的主要作用是?

单选题 · easy

  • A.将复杂目标分解为可执行的步骤序列← 正确答案
  • B.直接计算出最终答案并返回用户
  • C.代替所有外部工具执行的整个过程
  • D.压缩模型推理上下文的长度限制

答案:A。任务规划是 Agent 的起点,核心是把大目标拆成步骤序列(选 A)。B 是生成答案的职责,C 是工具调用的职责,D 与规划无关。就像老司机出发前看地图规划路线,而不是直接踩油门。

Q2. 思维链(CoT)的核心思想是什么?

单选题 · easy

  • A.让模型直接输出答案以节省令牌
  • B.让模型先生成中间推理步骤再得出结论← 正确答案
  • C.让模型随机探索多个不相关的分支
  • D.让模型只调用工具而不进行推理

答案:B。CoT 的核心是“一步一步想清楚”,模型在给出答案前先生成中间思路 t₁→t₂→…→tₙ(选 B)。A 是它的反面,C 是思维树的行为,D 是 ReAct 中“行动”的一部分而非 CoT 本身。

Q3. 思维树(ToT)与思维链(CoT)的关键区别在于?

单选题 · mid

  • A.ToT 不生成中间步骤而 CoT 生成
  • B.ToT 每步探索多个候选并评估筛选← 正确答案
  • C.CoT 需要调用外部工具而 ToT 不需要
  • D.ToT 与 CoT 在流程上完全等价

答案:B。ToT 在每一步生成多个候选分支,评估打分后择优深入(选 B),而 CoT 只有单一路径。A 说反了,C 中工具调用是 ReAct 的特征,D 明显错误。类比:ToT 是岔路口留多条备选路线,CoT 只按一条路线走。

Q4. ReAct 循环中的“观察(Observation)”指的是?

单选题 · easy

  • A.模型阅读用户输入的原始问题文本
  • B.模型获取工具执行结果并作为下一步依据← 正确答案
  • C.模型输出格式化后的最终答案内容
  • D.模型读取训练数据中的统计特征

答案:B。观察是工具执行后返回的结果,它成为下一轮推理的输入(选 B)。A 是任务的输入而非观察,C 是终止输出的 Answer,D 与推理无关。就像开车时看到的实时路况,反馈给司机决定下一步。

Q5. 在 ReAct 循环中,“Thought(推理)”的主要作用是?

单选题 · mid

  • A.保存对话历史供用户随时查看
  • B.决定下一步动作并解释行动理由← 正确答案
  • C.替代外部工具完成所有计算操作
  • D.压缩上下文以防止提示词超长

答案:B。Thought 是模型“想一步”的输出,它判断当前局面并决定下一步动作(选 B)。A 是历史记录的功能,C 把工具职责误派给推理,D 与推理无关。类比:推理就是司机看路况后决定“该转弯了”。

Q6. 当工具返回结果异常时,计划修正机制首先应该做什么?

单选题 · mid

  • A.立即终止整个 Agent 的流程运行
  • B.忽略异常继续执行剩余的原计划
  • C.检测偏差并触发重试或动态重规划← 正确答案
  • D.重新收集训练数据来更新模型参数

答案:C。计划修正的第一步是偏差检测,发现异常后先重试,仍失败则触发重规划(选 C)。A 过于极端,B 忽略异常会放大错误,D 是训练阶段的事。就像导航遇到封路先找绕行方案,而不是直接熄火。

Q7. 哪些情况应当触发 Agent 的计划修正?(多选)

多选题 · mid

  • A.子任务执行结果与预期出现偏差← 正确答案
  • B.工具调用过程中抛出运行异常
  • C.用户在中途改变了原始目标
  • D.模型输出的结果恰好与训练样本一致
  • E.将步骤3拆分为更小的子步骤并加大超时
  • F.无限重试步骤3直到工具恢复响应
  • G.丢弃全部任务并返回一个空答案
  • H.忽略超时错误直接执行后续步骤

答案:A。连续超时说明工具本身不稳定或单次调用过重。把步骤 3 拆细并调整超时(选 A)既减少单次调用负载,又给足时间。B 无限重试会耗尽预算,C 全盘放弃过于激进,D 忽略错误会让后续步骤建立在错误数据上。这就像堵车时不是原地死等,而是拆分路段绕行。

Q8. 生产环境中监控任务规划模块质量,常用指标包括?(多选)

多选题 · hard

  • A.任务整体成功率与平均执行耗时← 正确答案
  • B.平均规划步数与重规划发生频率← 正确答案
  • C.单次规划的令牌消耗与调用成本← 正确答案
  • D.模型参数量与训练数据的规模

答案:ABC。成功率(A)、规划步数与重规划率(B)、成本消耗(C)都是规划质量的直接观测指标。D 是模型训练阶段的属性,与线上规划质量无直接关系,就像评价导航好不好用看的是到达率和绕路次数,而不是地图册的页数。

Q9. 当 Agent 的规划预算(如最大步数)耗尽却仍未完成任务时,合理的做法是?

单选题 · mid

  • A.无限提高步数上限直到任务成功
  • B.返回部分结果并说明局限或转人工← 正确答案
  • C.丢弃所有中间结果重新开始规划
  • D.静默返回一个空答案给用户

答案:B。预算耗尽说明任务复杂度超出预期或执行反复出错。此时应返回已有部分结果、说明局限并转人工处理(选 B)。A 会无限放大成本,C 浪费已完成的中间成果,D 对用户不负责。就像导航没信号时司机凭经验先开到附近服务站,再向人问路。