Agent 中 Planner 是什么?——基于 Spring AI Alibaba 的工程化解析
🧭 Planner 如何做到“先生成计划,再执行”?——Spring AI Alibaba 工程化拆解
Planner 能实现“先规划再执行”,本质上不是模型突然具备了执行控制能力,而是在工程架构上人为拆出了两段 LLM 调用 + 一条受控执行链路:规划阶段(Planning Phase)与执行阶段(Execution Phase),两者通过结构化输出和框架调度解耦。
📌 一、问题背景:为什么必须“先计划再执行”
如果没有 Planner,LLM 往往是“边想边做”,即一步推理一步调用工具,典型问题包括:
- 工具调用顺序混乱
- RAG 与 Tool 混合不可控
- 复杂任务无法拆解
- 失败后无法全局重试
没有 Planner = 没有“执行蓝图”,Agent 只能做局部决策,而无法做全局规划。
🚀 二、核心机制:Planner 的“双阶段模型”
在 Spring AI Alibaba 中,Planner 实际被拆成两个强约束阶段:
🧠 1. Planning Phase(只思考,不执行)
- LLM 只负责理解任务
- 生成结构化 Plan(JSON / DSL)
- 禁止 Tool 调用
- 禁止外部 IO
这一阶段的关键是:通过 Prompt + Schema 强制模型只能输出“计划”,不能执行动作。
比如:计划生成是GPT4,执行可以是其他小模型
---⚙️ 2. Execution Phase(只执行,不再规划)
- 框架解析 Plan
- 逐步执行 Step
- 调用 Tool / RAG / Service
- 收集结果
这一阶段完全由 Spring AI Alibaba Runtime 控制,LLM 不再自由发挥。
💡 三、关键技术:如何“强制分离规划与执行”
Planner 能成立的核心不是“聪明”,而是三种工程约束:
1️⃣ Structured Output(结构化输出约束)
- JSON Schema / DSL 限定输出格式
- 禁止自由文本
- 强制字段:steps、tools、dependencies
2️⃣ Prompt Isolation(提示词隔离)
- Planner Prompt 与 Execution Prompt 完全分离
- Planner:只能“设计方案”
- Executor:只能“执行步骤”
3️⃣ Runtime Control(运行时控制权下沉)
- Spring AI Alibaba 控制执行循环
- LLM 无法决定是否执行 Tool
- 执行顺序由框架决定
🔁 四、完整执行流程(Spring AI Alibaba)
注意:Planner 和 Executor 之间存在“硬边界”,中间通过结构化 Plan 进行解耦。
📊 五、为什么这种方式有效(本质原理)
- LLM 擅长生成结构,不擅长长期控制
- 规划与执行混合会导致路径漂移
- 拆分后可以做可观测与可回放
Planner = “生成执行蓝图的模型调用”
Executor = “严格按照蓝图执行的运行时系统”
🔥 六、实际工程案例
例如“分析用户订单异常”:
- Planner 输出:
- Step1:查询订单
- Step2:查询规则库
- Step3:调用分析模型
Executor 按顺序执行,而不是边执行边决定下一步。
🎯 七、面试常见问题
- Planner 为什么要和 Executor 解耦?
- 如何保证 Planner 输出可执行?
- Planner 是否可以动态修改 Plan?
- Spring AI Alibaba 如何实现 Plan 校验?
- ReAct 和 Planner-Executor 有什么区别?
📌 八、总结
Planner 能实现“先规划再执行”的核心原因,并不是模型能力提升,而是工程上通过“结构化输出 + Prompt隔离 + Runtime控制”强制拆分为 Planning Phase 和 Execution Phase。Spring AI Alibaba 在其中扮演的是执行控制器角色,它负责确保 LLM 只能生成计划,而真正的执行完全由框架与 Tool Runtime 完成,从而实现可控、可回放、可优化的 Agent 系统。
相关文章
-
Agent 架构核心:Planner / Executor / Replanner 全景解析
Agent 架构核心:Planner / Executor / Replanner 全景解析
NEW个对象 2026-06-20
-
工具链问题为何难以直接定位?
工具链问题为何难以直接定位?
NEW个对象 2026-06-19
-
:使用spring alibaba ai实现完整的链路日志结构?
使用spring alibaba ai实现完整的链路日志结构
NEW个对象 2026-06-19