智能体面试准备(四十五):智能体规划与决策前沿——从 HTN 到 LLM 神经规划

📅 2026/8/22 9:39:08
智能体面试准备(四十五):智能体规划与决策前沿——从 HTN 到 LLM 神经规划
智能体面试准备四十五智能体规划与决策前沿——从 HTN 到 LLM 神经规划引言智能体系列里B17 讲过 HTN层次任务网络这种经典符号规划B22 讲过长时任务的断点续跑B34 讲过编排与流程引擎执行侧。本文补上规划与决策这条在 LLM 时代重新变热的主线当规划器本身变成大模型规划从人工写好的层次算法演化为模型在上下文里现想现推并涌现出反思、前瞻、搜索等新能力。为什么面试爱考因为规划是 Agent 智能的分水岭只会反应式执行ReAct 走到哪算哪的 Agent 在长程、多约束任务上必然翻车而带规划的 Agent 能先想清步骤、预估后果、遇错回退。华为等厂商考察 Agent 岗常从你怎么做任务规划长任务怎么不跑偏怎么让 Agent 自己纠错切入。一、规划的层次从反应到深思按想得多不多Agent 的规划能力可排成光谱规划能力光谱深思程度递增 反应式 Reflex ── 单步 ReAct ── Plan-and-Execute ── 反思式规划 ── 搜索式规划(ToT/MCTS) ── 世界模型前瞻 │ │ │ │ │ │ 无前瞻 走一步看一步 先列计划再执行 执行中自我修订 在计划空间搜索最优 内部模拟后果范式规划时机前瞻纠错成本代表ReAct每步无弱低ReActPlan-and-Execute任务前中中中Plan-and-Solve反思式执行中中强中Reflexion搜索式生成时高强高Tree-of-Thought世界模型生成前高强高内部模拟经典符号规划PDDL/HTN见 B17的优势是可证明、可解释但依赖人工定义状态空间和算子LLM 规划的优势是不需要显式建模能处理模糊自然语言目标但不可证明、会幻觉、需靠执行反馈兜底。二、LLM 作为规划器最直接的方式把目标丢给 LLM让它直接吐出一份步骤计划plan-as-text再交给执行器一步步跑。这叫 Plan-and-Execute比纯 ReAct 更稳因为先有全局骨架再填充动作。Plan-and-Execute 循环 目标(自然语言) │ ├─ Planner(LLM): 生成 Step1..StepN 计划 ├─ Executor: 逐步执行每步调用工具/环境 ├─ Observer: 收集每步结果 └─ (可选) Replanner: 若偏离重新规划defplan_and_execute(goal,llm,tools,max_steps10):planllm.generate(f把目标拆成有序步骤:\n{goal})forstepinparse_steps(plan):obsexecute(step,tools)# 执行单步ifobs.failed:planllm.generate(f原计划失败:{obs.err}\n重规划:\n{goal})continuereturnsummarize(goal)进阶一步是世界模型/内部模拟做前瞻在真正行动前让模型在内部推演几步如果这么做会发生什么筛掉明显会失败的路径。这与 A44 生成式世界模型一脉相承——用 latent 模拟代替真实环境试错省下昂贵的交互成本。代码侧常见做法是让 LLM 先输出预期观察再与实际观察比对差异大就说明规划有漏洞。三、反思式规划与自我修正纯计划最大的问题是计划赶不上变化。反思式规划在每次执行后插入一个反思环节把观察结果尤其失败喂回模型让它修订后续计划或总结教训。反思式规划(Reflexion 式) 执行步骤 ──- 观察 │ ├─ 成功 ──- 继续下一步 └─ 失败/偏差 ──- 反思(LLM 写 verbal 记忆: 哪里错了、为何错) │ 修订计划 ──- 重新执行更进一步是搜索式规划Tree-of-Thought / MCTS 式不一次定死计划而是展开多个候选分支对每支做短期推演评估选最优者深入。这在一步错满盘皆输的高代价任务上尤其有用如写代码、做数学、定策略。deftot_search(goal,llm,expand3,depth3):rootNode(goal)for_inrange(depth):forleafinroot.leaves():candsllm.generate(f从{leaf}继续的{expand}个下一步).split(\n)forcincands:leaf.add_child(c)# 自底向上评估让 LLM 给每节点打分剪掉低分fornodeinroot.all_nodes():node.scorellm.score(node.state)rootmax(root.children,keylambdan:n.score)returnroot.state面试常问反思和重规划的区别。反思是事后总结教训并写入记忆影响后续决策偏积累重规划是当前计划走不通直接换一条偏即时修正。成熟 Agent 两者都要反思沉淀长期经验呼应 B33 自我改进重规划处理当下偏离。四、分层与抽象子目标与技能库长程任务的关键不是想得细而是想得对层次。人类做复杂任务会先定里程碑子目标再填充动作Agent 同理。子目标作为中间里程碑把写一份行业报告拆成检索-读-提炼-成文-校验每完成一个就确认状态。技能/工具抽象Option 思想把常用动作组合封装成可复用技能规划时在技能空间而非原子动作空间搜索大幅降低分支爆炸。与 B17 HTN 的关系HTN 的层次是人工写死的高层任务若干子任务模板LLM 规划能学出层次——根据目标动态决定拆多细、何时调用哪个技能。两者可结合用 HTN 框定骨架用 LLM 填细节。分层规划 总体目标 ├─ 子目标1(里程碑) ── 技能A 技能B ├─ 子目标2(里程碑) ── 技能C └─ 子目标3(里程碑) ── 反思/回退点五、长程任务与不确定性下的决策真实任务常是部分可观测的你不全知道环境状态这要用 POMDP 视角Agent 维护一个信念对世界的估计每步行动后根据观察更新信念再决策。这就和 B22 断点续跑状态机checkpoint、B27 人机协作不确定时交人天然衔接。classBeliefAgent:def__init__(self):self.belief{}# 对世界状态的估计defstep(self,obs,llm,tools):self.belief.update(obs)# 用新观察更新信念ifself.belief.uncertain0.7:returnHAND_TO_HUMAN# 太不确定交人(B27)actionllm.decide(self.belief)returnexecute(action,tools)不确定性管理有三招显式维护信念并量化不确定不确定时降级交人/保守动作用多步前瞻第二节估计动作后果。长程任务还要防目标漂移——用子目标里程碑做锚点每步检查是否还在朝最终目标走。六、评测与常见陷阱规划类 Agent 的评测不只是最终对不对还要看计划可行性每步能否执行、可执行性工具/接口是否匹配、成本步数/ token/重试次数、鲁棒性遇错能否恢复。维度怎么测常见失败可行性静态检查每步依赖引用不存在的工具/参数成功率端到端任务通过率长程漂移、提前终止效率平均步数/token过度规划、反复重规划纠错注入故障看恢复死循环重规划常见陷阱要主动说过度规划小事大做、浪费 token、规划幻觉写出根本执行不了的步骤、重规划死循环越改越错、忽视环境反馈只信自己想的不信观察。对策正是前文几节用执行反馈兜底、限制重规划次数、用信念量化不确定、用子目标锚定。七、规划与执行的对齐计划如何真正落地会规划不算完计划能不能落到工具调用上才是真问题。常见断裂有三处计划用了不存在的工具或参数可行性缺口、计划对环境状态和 B34 编排引擎的接口对不上对接缺口、执行中途发现计划前提不成立却还在硬走漂移缺口。补可行性缺口靠执行器先验规划时不只看目标也把可用工具清单、参数 schema、当前环境状态一并喂给 Planner让它生成的步骤天然可执行。这其实就是 Function CallingA42的训练目标——让模型懂得什么工具能调、怎么填参。成熟系统把规划器和执行器解耦规划器产出结构化计划JSON 状的任务图执行器负责真正调工具并把观察回灌二者通过明确接口通信便于分别迭代与测试。补对接缺口靠编排引擎B34把计划里的每个节点映射成编排图里的节点状态机或 DAG节点完成事件触发下一节点。规划器不需要知道执行细节编排引擎不需要懂规划语义各司其职。长时任务B22的断点续跑在这里至关重要计划可能跑几小时中途进程崩了要从 checkpoint 恢复而非重来这就要求计划节点本身可序列化、可重入。补漂移缺口靠信念与锚点第五节每执行一步用观察更新信念和计划预期比对偏差超阈值就触发重规划而非硬走。子目标里程碑就是锚点——每完成一个就确认我还在朝最终目标走避免越跑越偏。和本文呼应规划不是一次成型而是计划-执行-观察-修订的持续闭环。八、收口规划能力的成熟度模型把本文和系列串起来B17 是经典 HTN 规划人工层次B22 是长时任务的断点续跑持久化B34 是编排引擎执行落地B40 是自主智能体前沿未来形态本文是 LLM 时代的规划与决策主线。它们构成一个能力梯度。面试讲到 Agent 规划建议用成熟度框架组织答案L1 反应式ReAct走一步看一步、L2 计划式先规划后执行、L3 反思式执行中自我修订、L4 搜索式在计划空间搜索最优、L5 前瞻式用世界模型在内部模拟后果。再点出每级的成本与适用场景以及和工程B22/B34的衔接。最后落一句规划的本质是在不确定中做序列决策好 Agent 不是不犯错而是犯错后能靠执行反馈和低成本的重规划快速找回正轨。这正是 B33 自我改进与 B39 可靠性工程共同支撑的东西。九、收口补充规划 Agent 的工程易错点与进阶考点最后把规划类 Agent 最常踩的坑和面试官最爱追的点收一遍。第一个易错点是把反思和重规划混为一谈。前文已区分反思是事后总结教训写进记忆、影响长期决策重规划是当前路走不通直接换一条。成熟 Agent 两者都要且反思沉淀进经验库呼应 B33 自我改进。第二个易错点是规划与执行脱节。计划写得漂亮但落不到工具调用上是最常见的翻车要么用了不存在的工具或参数可行性缺口要么和环境状态对不上对接缺口要么中途前提不成立还在硬走漂移缺口。补法是规划器吃执行器先验工具清单加 schema 加环境状态产结构化计划再由编排引擎B34映射到状态机或 DAG 执行长时任务靠 B22 断点续跑保命。第三个易错点是过度规划。小事大做、反复重规划会浪费大量 token 且拖慢要给重规划设步数上限和差异阈值避免死循环。进阶考点有两个方向其一是搜索式规划ToT/MCTS的评估可靠性——用 LLM 给节点打分不完全可信要有更客观的剪枝如小模型验证、规则检查其二是规划与执行的解耦架构便于分别迭代、测试与回放。把这三错讲清你的规划答题就立住了。收尾一句话规划的本质是在不确定中做序列决策。好 Agent 不是不犯错而是犯错后能靠执行反馈和低成本重规划快速找回正轨——这正是 B33 自我改进与 B39 可靠性工程共同支撑的东西。十、实战选型清单与面试深化把前面结论落成可执行的规划成熟度表面试时直接甩出来最加分。L1 反应式ReAct走一步看一步成本最低、长任务易漂L2 计划式先规划后执行骨架稳、遇偏离可重规划L3 反思式执行中写记忆自我修订适合会出错的任务L4 搜索式ToT/MCTS 在计划空间搜索最优适合一步错满盘皆输的高代价任务L5 前瞻式用世界模型在内部模拟后果适合试错极贵的场景。选哪级看任务代价与容错不是越高越好——L4/L5 的 token 与延迟开销很大小事用 L1/L2 就够了。再补几个面试高频深化点。其一是搜索式规划的评估可靠性用 LLM 给节点打分不完全可信要有更客观的剪枝比如小模型快速验证、规则检查、或把候选丢进沙箱跑一步看结果。其二是规划器与执行器解耦规划器产结构化计划JSON 状任务图执行器真调工具并回灌观察二者通过明确接口通信便于分别迭代、测试与回放也方便接 B34 编排引擎做状态机或 DAG 映射。其三是过度规划的坑小事大做、反复重规划会浪费大量 token 且拖慢要给重规划设步数上限和差异阈值避免死循环。和系列呼应收束B17 是经典 HTN人工层次B22 是长时任务断点续跑持久化保命B33 是自我改进反思沉淀经验库B34 是编排引擎计划落地B39 是可靠性出错恢复B40 是自主前沿未来形态本文是 LLM 时代规划主线。它们构成从能反应到能自主规划的能力梯度。常见陷阱有三个把反思和重规划混为一谈反思沉淀长期、重规划解决当下、规划与执行脱节用执行器先验补可行性、忽视不确定性管理用信念量化不确定、超阈值交人 B27。最后收一句规划的本质是在不确定中做序列决策好 Agent 不是不犯错而是犯错后能靠执行反馈和低成本重规划快速找回正轨。十一、把规划讲成体系面试时最怕把规划讲成 ReAct 一个词。更好的讲法是按前瞻程度排成熟度本文第十节 L1-L5再点出每级的成本与适用场景最后落到规划本质是在不确定中做序列决策。这框架一定HTN、Plan-and-Execute、Reflexion、ToT 都不是孤立名词而是成熟度梯度上的具体点L1 反应式对应纯 ReActL2 计划式对应 Plan-and-SolveL3 反思式对应 ReflexionL4 搜索式对应 Tree-of-ThoughtL5 前瞻式对应用世界模型内部模拟。能按任务代价选级别比背出每个算法名更值钱。收束视角规划在系列里的位置网——B17 经典 HTN人工编的层次、B22 长时任务断点续跑持久化保命、B33 自我改进反思沉淀经验库、B34 编排引擎计划落地执行、B39 可靠性工程出错恢复、B40 自主智能体前沿未来形态、本文是 LLM 时代规划与决策主线。七篇拼成Agent 从能反应、到能计划、到能自主规划的能力图。面试时你能随手指出任意一篇在图里的位置并把计划-执行-观察-修订这个持续闭环讲顺面试官就认定你真懂 Agent 规划而非只会调个 LangGraph 流程图。最后落一句好 Agent 不是不犯错而是犯错后能用最低成本找回正轨——规划、反思、重规划、可靠性全是围绕这件事转理解这一点规划题就再也难不倒你。十二、规划与评估闭环别只看终态最后一个常被忽略的点规划类 Agent 的评估不能只看最终对不对还要看过程质量。一个任务即使最终跑通如果中间重规划了十几次、token 烧了一堆、还差点死循环那也不是好规划。所以评测要同时盯成功率、步数、token 成本、纠错恢复率四项并设重规划次数上限作为护栏。这也反过来指导设计把计划可行性和重规划上限写进系统约束比事后抱怨模型乱想更管用。记住规划能力不是模型单方面的本事而是模型规划加执行反馈加护栏三者合起来的工程结果——这正呼应 B39 可靠性工程里出错不可怕、怕的是无界出错的态度。十三、一句话收尾规划是 Agent 的脑子执行反馈是手脚护栏是安全带。三者齐备Agent 才敢接长程复杂任务缺了任何一块长任务必翻车。面试被问你的 Agent 怎么不跑偏就甩这三件套加计划-执行-观察-修订闭环稳。再补一句规划能力从来不是模型单方面的聪明而是模型规划、执行反馈、护栏三者合起来的工程结果这正呼应 B39 可靠性工程出错不可怕、怕的是无界出错的态度也呼应 B33 自我改进把每次失败变成经验。面试速答问反应式 ReAct 和 Plan-and-Execute 区别答ReAct 走一步看一步、无全局前瞻易在长任务跑偏Plan-and-Execute 先列全局计划再执行骨架更稳遇偏离可重规划。后者适合长程多约束任务。问反思式规划和重规划区别答反思是事后总结教训写入记忆、影响长期决策重规划是当前路走不通直接换一条。成熟 Agent 两者结合反思沉淀经验重规划处理当下偏离。问LLM 规划和经典 HTN 规划怎么取舍答HTN 可证明、可解释但需人工定义状态/算子LLM 规划免建模、能处理模糊目标但会幻觉、不可证明。常结合HTN 框骨架LLM 填细节。问搜索式规划ToT/MCTS适合什么场景答一步错满盘皆输、试错成本高的任务写代码、数学、策略。展开多分支并评估择优避免一次定死计划带来的灾难。问怎么让 Agent 在不确定时别乱来答用 POMDP 视角维护信念并量化不确定性超过阈值就降级交人/B27、保守动作用多步前瞻估计后果。问世界模型前瞻A44对规划有什么用答在 latent 空间模拟若这么做会怎样筛掉明显失败路径省下昂贵真实交互相当于规划前的内部沙盘推演。问长程任务怎么防目标漂移答拆子目标里程碑做锚点每步检查是否朝最终目标前进配信念更新与重规划上限避免无限改写。问规划类 Agent 怎么评测答不只看终态对错还要计划可行性、端到端成功率、效率步数/token、鲁棒性注入故障看恢复。高频追问清单Plan-and-Execute 里计划太粗或太细分别有什么问题怎么自适应反思记忆写进哪、会不会越攒越乱、怎么遗忘ToT 评估节点用 LLM 打分可靠吗有没有更客观的剪枝子目标拆多细最优有没有自动决定粒度的方法POMDP 信念在 LLM Agent 里怎么表示向量/自然语言/概率重规划死循环怎么检测与打破步数上限、差异阈值多 Agent 时规划冲突怎么办和 B46 治理衔接规划结果如何对接编排引擎B34真正落地执行