Plan-Then-Execute Pattern
Nikola Balic (@nibzard)· emerging
问题
如果工具输出能够改变后续动作的选择,那么注入的指令可能会将Agent引向恶意操作步骤。
方案
将推理拆分为两个阶段:
- 计划阶段 —— LLM在接触任何不可信数据之前,生成一个固定的工具调用序列。
- 执行阶段 —— 控制器执行这个完全固定的序列。工具输出可调整参数,但无法更改要运行的工具。
plan = LLM.make_plan(prompt) # 固定的调用列表
for call in plan:
result = tools.run(call)
stash(result) # 输出与规划器隔离
如何使用
非常适用于邮件和日历机器人、SQL助手、代码评审助手等场景——即动作集已知但参数存在变化的各类任务。
Claude Code 规划模式
Claude Code 借助「规划模式」实现该范式,此模式会将Agent切换至仅规划状态:
- 用户切换至规划模式:明确发起规划请求(例如在Claude Code CLI中按下shift+tab)
- Agent生成详细规划:制定分步执行方案但不实际执行
- 人工审核与确认:可在执行前调整规划方案
- 执行阶段:Agent严格遵循已确认的规划方案开展执行
成效:
- 先对齐执行思路,可将复杂任务的成功率提升2-3倍
- 避免因错误假设造成的无效工作
- 可依托人类专业知识引导Agent执行
动态边界: 需要启动规划的任务阈值会随模型迭代发生变化:
“这一边界会随每一代模型产生惊人的变化。新一代模型的智能程度更高,因此需要用到规划模式的任务边界会有所拓展。过去必须规划才能完成的任务,现在无需规划即可处理。”——Boris Cherny(Anthropic)
这意味着,对于曾经需要规划的简单任务,使用能力更强的模型(如Sonnet 4.5与Opus 4.1)如今可通过one-shot方式完成。
权衡
- 优点:控制流完整性强;灵活性适中。
- 缺点:输出内容仍可能被污染(例如,生成恶意邮件正文)。
参考文献
关键词:
聚焦大模型的“先规划后执行(Plan-Then-Execute)”策略,涵盖该策略对任务成功率的提升效果、其适用边界随模型迭代的演变,相关内容来自学术研究及Anthropic团队成员的播客分享。
\n\n
直译:
- Beurer-Kellner等人,第3.1节(2) 先规划后执行(Plan-Then-Execute)。
- 鲍里斯·切尔尼(Anthropic公司):“规划模式……你必须了解它的局限性以及可能陷入循环的场景。如果先就规划达成共识,规划模式能轻松将成功率提升2-3倍。”
- 鲍里斯·切尔尼:“(规划模式的适用)边界会随每个模型而变化……新一代模型更智能,因此需要使用规划模式的场景范围被扩大了。”
- 《AI & I播客:如何像开发者那样使用Claude Code》 链接:https://every.to/podcast/transcript-how-to-use-claude-code-like-the-people-who-built-it
来源摘要
正在获取来源并生成中文摘要…