规划是Agent能力的天花板

如果你用过各种AI Agent框架,可能会有一个共同的感受:模型不缺执行力,缺的是判断力。给它一个复杂任务,它要么头脑发热直接开始做,要么陷入循环不知道下一步怎么走。这背后的本质问题,是规划能力的缺失。规划(Planning)在Agent系统中指的是:给定一个目标,分解出可执行的子任务序列,并在执行过程中根据反馈动态调整。这听起来简单,工程实现却相当复杂。本文就来把Agent规划的核心技术和工程实践拆开讲清楚。## 规划范式的演进### Task Decomposition:最直觉的方式最早的规划方式是直接让模型把任务拆分成子任务列表:任务:写一份关于量子计算的市场报告子任务:1. 调研量子计算市场规模数据2. 分析主要玩家(IBM、Google、IonQ等)3. 整理技术发展趋势4. 撰写执行摘要5. 合并各部分内容这种方式简单有效,但有明显缺陷:静态规划无法应对执行中的意外。如果第1步找不到数据,后续步骤要怎么调整?### ReAct:把思考和行动交织ReAct(Reasoning + Acting)是目前最广泛使用的规划模式。它要求模型在每次行动前先推理,在每次得到观察后再推理:思考:用户要写量子计算报告,我需要先了解市场规模,搜索相关数据行动:search("量子计算市场规模 2026")观察:搜索结果显示市场规模预计2026年达到450亿美元...思考:有了市场规模数据,接下来需要分析主要玩家行动:search("量子计算公司 IBM Google IonQ 2026")观察:...思考:数据收集完毕,开始撰写报告行动:write_report(data=collected_data)ReAct的核心价值是实时反馈循环:每次观察都会影响下一次思考,规划不再是一次性的静态分解,而是动态演化的过程。### Plan-and-Execute:分离规划与执行对于复杂任务,单纯的ReAct有个问题:过于局部化,容易迷失在细节中而忘记整体目标。Plan-and-Execute模式将规划和执行分离:1. 规划阶段:用强模型(如GPT-4o)生成完整计划2. 执行阶段:用轻量模型(如GPT-4o-mini)逐步执行子任务3. 监控阶段:持续检查执行结果是否偏离目标pythonclass PlanAndExecuteAgent: def __init__(self, planner_model="gpt-4o", executor_model="gpt-4o-mini"): self.planner = OpenAI() self.executor = OpenAI() self.planner_model = planner_model self.executor_model = executor_model async def plan(self, objective: str, available_tools: list[str]) -> list[dict]: """生成高层次计划""" prompt = f""" 目标:{objective} 可用工具:{', '.join(available_tools)} 请生成一个详细的执行计划,每个步骤包含: - step_id: 步骤编号 - description: 步骤描述 - tool: 使用的工具 - depends_on: 依赖的前置步骤ID列表 - success_criteria: 成功标准 以JSON数组格式输出。 """ response = await self.planner.chat.completions.create( model=self.planner_model, messages=[{"role": "user", "content": prompt}], response_format={"type": "json_object"} ) return json.loads(response.choices[0].message.content)["steps"] async def execute_step(self, step: dict, context: dict) -> dict: """执行单个步骤""" result = await self.executor.chat.completions.create( model=self.executor_model, messages=[{ "role": "user", "content": f"执行步骤:{step['description']}\n上下文:{json.dumps(context, ensure_ascii=False)}" }] ) return { "step_id": step["step_id"], "result": result.choices[0].message.content, "success": True # 实际应根据success_criteria判断 } async def run(self, objective: str, tools: list[str]) -> str: plan = await self.plan(objective, tools) context = {} for step in plan: # 检查依赖是否完成 deps_satisfied = all( dep in context for dep in step.get("depends_on", []) ) if not deps_satisfied: raise RuntimeError(f"Step {step['step_id']} dependencies not met") result = await self.execute_step(step, context) context[step["step_id"]] = result["result"] return context # 返回完整执行结果## 规划的核心挑战与应对方案### 挑战1:计划不完整或遗漏步骤问题:模型生成的计划经常缺失中间步骤,导致执行失败。解决方案:引入计划验证器(Plan Validator),在执行前检查计划的完整性:pythonPLAN_VALIDATOR_PROMPT = """请审查以下执行计划,检查:1. 是否存在遗漏的必要步骤?2. 步骤顺序是否合理?3. 依赖关系是否正确标注?4. 是否有潜在的执行风险?计划:{plan}如果发现问题,请给出修正后的计划;如果计划合理,回复"计划验证通过"。"""### 挑战2:执行卡住后的恢复问题:某个子任务失败后,Agent不知道如何继续或回退。解决方案:实现显式的失败处理策略:pythonclass ResilientExecutor: async def execute_with_retry( self, step: dict, context: dict, max_retries: int = 3 ) -> dict: for attempt in range(max_retries): try: result = await self.execute_step(step, context) if result["success"]: return result # 失败后重新规划这个步骤 alternative_approach = await self.replan_step( step=step, failure_reason=result.get("error"), attempt_number=attempt + 1 ) step = alternative_approach except Exception as e: if attempt == max_retries - 1: # 最后一次尝试也失败,标记为跳过或触发人工干预 return { "step_id": step["step_id"], "result": None, "success": False, "error": str(e), "action": "skip" # 或 "human_intervention" }### 挑战3:长程规划的目标漂移问题:多步骤执行中,模型容易因为局部细节而忘记整体目标。解决方案:在每次执行前注入目标提醒(Goal Anchoring):pythonEXECUTION_TEMPLATE = """## 总体目标(始终保持在视野中){ultimate_goal}## 当前步骤{current_step}## 已完成的步骤摘要{completed_steps_summary}## 执行要求- 本步骤的输出必须服务于总体目标- 如果发现当前步骤不必要或有更好的方案,请说明- 执行结果用于后续步骤,注意保持格式一致性"""## 从ReAct到Tree-of-Thought对于需要探索多个可能路径的复杂推理任务,ReAct的线性链条不够用,Tree-of-Thought(ToT)是更强大的选择: [目标] / \ [方案A] [方案B] / \ / \ [A1] [A2] [B1] [B2] ✓ ✗ ✗ ✓ 选择路径: 目标 → 方案A → A1(最优路径)ToT的核心是同时维护多个思考分支,并对每个分支的价值进行评估,最终选择最优路径。这对于搜索、代码调试等需要探索-回退的任务特别有效。## 规划能力的评估指标如何知道你的Agent规划得好不好?几个关键指标:- 计划完整率:生成的计划是否覆盖了完成目标所需的所有必要步骤- 计划稳定性:对相似问题,计划的结构是否一致- 执行成功率:按计划执行的任务中,成功完成的比例- 重规划频率:执行过程中需要修改计划的次数(越少越好)- 目标达成率:最终是否完成了用户的原始目标好的规划不是完美的规划,而是足够灵活,能在现实的不确定性中推进目标的规划。这是2026年Agent工程师最需要深入打磨的能力之一。

Logo

小龙虾开发者社区是 CSDN 旗下专注 OpenClaw 生态的官方阵地,聚焦技能开发、插件实践与部署教程,为开发者提供可直接落地的方案、工具与交流平台,助力高效构建与落地 AI 应用

更多推荐