react - ReActAgent 启用规划机制(Plan-ReAct)
2026年1月26日 上午9:41:43
在复杂的 AI 任务中,如果直接让智能体进行推理(Reasoning),它可能会因为任务目标过大而陷入“逻辑混乱”或执行路径偏移。为了解决这一问题,Solon AI 为 ReActAgent 引入了 规划(Planning) 能力。
通过启用规划,智能体在正式进入 Reason -> Act 循环之前,会先根据用户指令生成一份全局的执行计划。
1、为什么需要规划?
普通的 ReAct 模式是“走一步看一步”,而规划模式则是“谋定而后动”。
- 分解复杂性:将大任务拆解为若干个有序的子任务(Steps)。
- 进度感知:智能体在推理每一轮时,都能通过 ReActTrace 知道自己当前处于计划的哪个阶段。
- 抗干扰性:即便中间某个工具调用出现了偏差,全局计划能像导航仪一样纠正智能体的逻辑走向。
2、如何启用规划?
启用规划非常简单,只需要在构建 ReActAgent 时通过 enablePlanning(true) 进行配置。
示例代码:
ReActAgent agent = ReActAgent.of(chatModel)
.name("researcher")
.description("高级研究助手")
// 关键:开启规划能力
.enablePlanning(true)
// 可选:自定义规划指令(告诉 AI 应该如何制定计划)
.planInstruction(trace -> "请将任务分解为详细的步骤,并按顺序执行。")
.defaultToolAdd(new SearchTools())
.build();
// 发起调用
ReActResponse resp = agent.prompt("调查 Solon 框架在 2025 年的技术趋势并写一份报告").call();
3、规划数据的流转与可见性
一旦启用了规划,ReActTrace 内部会发生以下变化,这些信息在推理阶段会自动注入到 System Prompt 中:
| 属性/方法 | 描述 | 作用 |
|---|---|---|
getPlans() | 获取当前的计划列表 | 让开发者可以监控 Agent 的初始意图。 |
getFormattedPlans() | 格式化的计划文本 | 将计划列表转换为 Markdown 数字列表注入提示词。 |
getPlanProgress() | 当前进度描述 | 告诉 LLM:“你现在正在处理 5 个步骤中的第 2 步”。 |
4、最佳实践建议
强逻辑任务必开:涉及 3 个以上步骤的任务(如:多表查询后汇总计算再发送邮件)建议启用规划。
配合模型选型:规划对模型的逻辑能力要求较高,建议使用 GPT-4o、Claude 3.5 Sonnet 或 DeepSeek-V3 等具备强规划能力的模型。
自定义指令:如果发现模型生成的计划过于笼统,可以通过 .planInstruction() 显式约束计划的粒度。
监控进度:你可以通过 ReActResponse.getTrace().getPlans() 在 UI 界面上展示 Agent 的工作清单,极大提升用户体验。