先有计划
大约 2 分钟
先有计划
Plan-and-Solve 解决 ReAct 的什么问题?
ReAct 边走边看,缺少一份事先说清的任务分解,复杂题容易漏步骤或重复步骤。Plan-and-Solve 先让模型把问题拆成计划,再按步骤执行。规划看的是整题,执行看的是当前一步。
它适合步骤之间有依赖、漏一步答案就错的任务,例如多跳计算、要先取数再比较的问题。它不适合环境每秒都在变、计划写完就已经过时的场合。
规划和执行怎么拆?
分成两个角色,提示也分开。
- 规划器只产出步骤列表,不假装已经拿到工具结果。
- 执行器每次只看原始问题、完整计划、已经完成的步骤和结果、当前这一步。它执行完把结果写回历史,不擅自改写整个计划,除非运行时允许它提出修订。
拆开的好处是规划提示不会被工具的返回格式污染,执行提示也不会每次重新发明任务分解。
计划为什么不能死跟?
计划是假设,不是脚本。执行中会遇到空结果、新约束和计划本身拆错。死跟会把第一步的错误执行到底。
允许改计划,但要改得看得见:哪一步失败、新计划替换了哪几步、已经完成的结果哪些还有效。静默重写会让轨迹对不上,评估和复盘都无法进行。
进度记在模型里还是记在外面?
记在外面。模型只在这一次调用里看见「计划 + 历史步骤 + 当前步」。完整进度由运行时保存,因为窗口会满,进程也会重启。
最小状态是:原始目标、当前计划、已完成步骤和结果、下一步下标。只把这些送进下一次执行。把整段推理原文都留在提示里,是在用窗口当数据库。