dalaoyang技术手记

Plan-and-Execute 是什么:把目标拆成可调整的步骤

先形成多步计划,再执行、检查与重规划,可以让长任务的覆盖范围更清楚。计划是一份待验证的工作安排,不是成功承诺;遇到新事实时,它应该能够改变。

Agent 入门 · 阅读路线

先带走这三个判断

  1. Planner 拆解目标,Executor 完成当前步骤,Replanner 根据结果调整剩余任务。
  2. 计划中的每一步要有输入、依赖和完成证据,列表变短不等于目标完成。
  3. 子任务可以使用 ReAct;有依赖的步骤需要等前置结果,不能为了快而一起执行。
从第一个问题开始
文章目录

把“整理资料”变成一份工作安排

如果目标是“比较 ReAct、Plan-and-Execute 与 Harness,整理一份新手阅读路线”,只找三篇文章还不够。助手需要定义比较维度、查找各主题资料、核对概念关系,最后组织路线。先把这些任务写出来,能避免搜了很多资料却忘了原始目标。

这就是 Plan-and-Execute 的基本思路。LangChain 在 Plan-and-Execute Agents 中给出的设计把规划与执行分开,并在执行后允许重新规划或返回结果。本文的资料案例是自建的通用示意,不代表该文中的产品实现或效果数据。名称相同的框架在模型选择、状态保存和重规划时机上也可能不同。

三种角色,不一定是三个模型

Plan-and-Execute:执行回执驱动剩余计划;规划、执行与重规划是职责划分;完成检查必须回到原始目标。
规划、执行与重规划是职责划分;完成检查必须回到原始目标。放大图表

Planner根据目标和约束提出任务;Executor完成当前任务并交回事实;Replanner检查已做工作与剩余要求,决定继续、调整或停止。这些角色可以使用同一模型,也可以组合模型与确定程序,不必开三个独立聊天窗口。

资料路线的初始计划可以是:确定概念维度;读取三个主题的权威材料;填入比较表;检查路线是否适合新手。执行器若发现 Harness 缺少入门材料,上层应补一个“用通用例子解释运行设施”的任务,而不是把缺项隐藏在最终表里。

怎样写出能执行的步骤

“研究 Agent”过于宽泛,“读取原论文摘要并记录 ReAct 解决的问题”就更容易检查。一个任务至少需要目的、输入范围、产物与完成条件。若下一步要比较两份定义,它依赖前一步取得的来源与摘录,不能只依赖“阅读完成”这句状态文字。

计划也应记录约束:只读公开资料、每个观点保留来源、不要把方法描述成成功保证。完成条件可以是“比较表的每一项都得到材料或明确的自建分析支持”。程序可检查字段齐全,内容是否准确仍需要来源核对。可执行不意味着所有判断都能自动化。

重规划处理的是变化,不是重复

来源失效后的重规划:保留已验证工作;保留有效产物,替换失效依赖,再检查剩余范围;不必从头重做。
保留有效产物,替换失效依赖,再检查剩余范围;不必从头重做。放大图表

假设“读取 Plan-and-Execute 教程”这一步遇到旧地址重定向,新页面只保留通用介绍。此时应说明来源变化,寻找官方新文档或示例,检查是否仍覆盖原定问题。已经核对的 ReAct 概念可以保留,不必把所有任务清空重新执行。

重规划可能是替换来源、拆细任务、补足参数、缩小范围或请求澄清。它不应偷偷改变目标,也不应该把工具不可用解释成概念不存在。若约束无法满足,就留下具体缺口。为了让接续工作理解变化,计划版本、已完成产物与调整原因应分开记录。

依赖决定顺序,并发需要证据

读取 ReAct 与 Harness 的独立公开材料可以并行;比较二者关系必须等材料返回。一个步骤如果使用上一步提取的版本号,执行前就要检查版本号实际存在且可信。计划列表的排列顺序可以表达部分依赖,复杂任务更适合显式记录依赖关系。

若执行器本身也是 Agent,它可以在子任务里选择多个读取动作。上层只接收“完成了”会丢掉关键证据,最好接收来源、结果摘要、未确认事项与实际动作。对于写入任务,计划不能代替用户授权;工具副作用和外部幂等性也不会因任务拆解而自动得到保证。

为什么不保证更便宜、更成功

分离规划可能减少每一步都调用大模型的开销,也可能因为计划冗长、反复重规划和重复读取而更慢。短任务的规划成本甚至会超过执行成本。选择较小的执行模型,也可能增加错误和复核次数。具体收益应在你的任务、数据和模型组合上测量。

错误计划会给后续步骤带来错误方向;遗漏验收要求的计划,可能被一路顺利执行却仍未完成目标。完成检查应读取原始要求与实际产物,而不是只看剩余计划是否为空。如果发现计划遗漏,应补任务或报告缺口,而不是在一个空数组上宣布成功。

保存状态,让工作能够接续

长任务至少需要保存目标、约束、当前计划、执行回执、产物位置和未解决事项。聊天历史是一种上下文,但不适合成为唯一任务账本。LangGraph 官方持久化文档区分线程内的 checkpoint 与跨线程的 store;保存位置、持久性和恢复语义应按实际应用选择。

恢复时先核对事实有没有变化:来源还在吗,产物是否存在,用户是否改了要求?保存“第二步完成”并不能证明文件仍然可用。对外部写入,恢复还要检查动作结果,防止把已经成功但回执丢失的动作再做一次。状态能帮助接续,也需要更新与核实。

动手练习:修订一份脆弱计划

原计划是“搜三篇资料 → 写比较表 → 宣布完成”。现在得到两篇正文,第三篇地址失效,用户还要求保留来源和适用场景。你会怎样改写剩余计划?只修改需要变化的部分,并为最终检查列出两项证据。

展开参考计划

保留已验证的两篇;补查第三主题的有效来源;从三份材料中整理核心概念、适用场景和原文地址;检查用户要求是否全部得到覆盖。若第三主题仍缺资料,应明确标注缺口。验收看实际表格和来源依据,而不是计划是否划掉了三行。

参考资料与阅读边界

以上案例为用于解释概念的构造场景;图中结构属于通用示意,不代表某个产品的线上架构或验收结论。资料核对日期为 2026 年 10 月 7 日,框架接口会演进,具体实现请以所用版本的官方文档为准。

记录可验证的工具事实与简短决策摘要,不展示模型隐藏推理;方法名称不构成效果或成功保证。

计划记录要做什么,回执证明做了什么,重规划处理新事实。

读完,留一句在书桌上

回书桌看看

仅保存在当前浏览器。

图表

窄屏可在图内横向滑动查看细节。