2081 字
约 6 分钟
2
让 AI 学会"先写计划再干活":Agent 的规划执行(Planning)设计

让 AI 学会"先写计划再干活":Agent 的规划执行(Planning)设计思路

AutoAgent 是"边干边改",FlowAgent 是"先定计划再照着打"。两种思路,对应两种任务。

一、同一个需求,两种干法

你让 AI 做一件事:

"生成一篇技术文章,发布到 CSDN,然后微信公众号通知我。"

AutoAgent 的干法(上一篇的主角):

分析员:拆任务、定策略 → 执行员:生成文章 → 质检员:写得行不行?不行重来
→ 再分析 → 再执行 → 质检通过 → 总结

FlowAgent 的干法(本篇主角):

先盘工具:我手上有 CSDN发帖、微信通知、搜索 → 能干嘛、参数是啥
再写计划:第1步生成文章,第2步发CSDN,第3步发微信通知
拆成清单:{1: 生成文章, 2: 发布CSDN, 3: 微信通知}
照着干:一步一步执行,干完收工

一个像边走边想边修正的探路者,一个像先画作战图再照着打的指挥官。没有谁更好,只有谁更适合。

二、市面上的 Agent,其实就 4 种设计

在聊正文前,先看一张全景图——所有 Agent 执行链路,本质是这 4 类:

# 类型 怎么工作 典型场景
1 固定 N 个步骤 写死流程,一步步走 检索资料、发帖、通知
2 顺序循环调用 配一串客户端按序执行 简单、动作已分好的任务
3 智能动态决策 动态规划→执行→观察→判断完成→出结果 大多数市面上的 Agent
4 规划分析决策 先盘工具能力→规划步骤→拆清单→依次执行 流程明确的多步骤任务

前 3 种大家比较熟,尤其是第 3 种(AutoAgent 那种)。第 4 种就是我们这篇的主角——它有点类似 manus 的工作方式:先想清楚,再动手

三、规划执行:四步流水线

这套设计把"干活"拆成 4 个清晰的阶段:

用户一句话
   │
   ▼
① 工具能力分析(只看不动手)
   模型盘一下手里有哪些牌:MCP 工具清单、各自功能、参数要求
   │
   ▼
② 规划执行步骤(结合诉求定计划)
   模型产出:"第1步:…;第2步:…;第3步:…",明确每步用哪个工具
   │
   ▼
③ 解析规划步骤(文字 → 可执行清单)
   程序用正则把规划的 Markdown 拆成 Map:{第1步: 描述, 第2步: 描述, ...}
   │
   ▼
④ 按顺序依次执行
   执行器挨个执行每个步骤,调对应工具,干完收工
   │
   ▼
完成 ✅

① 工具能力分析:先搞清楚手里有什么牌

这是整套设计最特别的一步——只分析,不执行。模型先看一遍可用 MCP 工具:搜索、CSDN 发帖、微信通知……每个工具能干嘛、要什么参数、匹配度多高。

为什么要这一步?因为模型自己背不出"这个环境里到底有什么工具"。工具是动态配置的,只有先"盘一遍",后面的规划才不是瞎规划。这一步的输出,就是规划的依据。

② 规划执行步骤:写作战计划

拿着工具分析结果 + 用户需求,规划模型产出计划。注意这里有一个非常实用的防呆——工具白名单

请根据以下规则重新生成规划:
1. 只使用验证报告中列出的有效工具
2. 工具名称必须完全匹配(区分大小写)
3. 每个步骤明确指定使用的MCP工具
4. 避免使用不存在或无效的工具

一句话:模型只能在白名单里挑工具,名字一个字不能错。 把"模型瞎编一个不存在的工具"这条路堵死。

③ 解析规划步骤:把文字变成清单

规划是模型输出的 Markdown 文本,这一步不靠模型,而是程序用正则硬解析:

Pattern stepPattern = Pattern.compile("### (第\\d+步:[^\\n]+)([\\s\\S]*?)(?=### 第\\d+步:|$)");

把"第1步/第2步/第3步"从文本里抠出来,存成有序 Map。让程序按约定格式解析,而不是让模型解析自己输出的格式——稳定、可控。

④ 按顺序执行:照着清单干活

执行器拿到步骤清单,挨个执行,每步都调用对应工具:

第1步:调模型生成文章内容
第2步:调 CSDN 工具 publish_article(title, content, tags)
第3步:调 微信 工具 send_message(message, recipient)

每步独立,失败不影响其他步(配合重试机制更稳)。

四、工程上是怎么搭出来的

这套设计的代码结构其实很简洁——三个角色 + 一个共享模型

角色 人设 职责
mcpToolsChatClient MCP 工具管理专家 分析有哪些工具、怎么用(对应①)
planningChatClient 任务规划助手 拆解任务、写执行计划(对应②)
executorChatClient 任务执行助手 照计划调工具干活(对应④)

三个角色共享同一个 chatModel(工具挂在这上面),但各自有独立的 system prompt(人设)、独立的记忆窗口、还能各自挂 RAG 知识库增强。再加一个工程细节:每步执行失败重试 3 次executeWithRetry)。

五、AutoAgent vs FlowAgent:怎么选

这是读完两篇博客后最该想清楚的问题:

维度 AutoAgent(动态循环) FlowAgent(规划执行)
节奏 走一步看一步,质检不过就回炉 先定全盘计划,再照着执行
质量保障 独立质检员反复打磨 靠清晰的步骤拆分 + 白名单
成本 高(多轮循环 = 多次推理) 相对可控(一遍走完)
适合 目标模糊、结果要打磨的任务 流程明确、步骤固定的任务
例子 "检索资料并制定学习计划" "生成文章→发CSDN→微信通知"

选型心法:任务流程能预先列清楚的,用规划执行;任务结果"好不好"需要反复试的,用动态循环。复杂场景甚至可以把两者组合——规划执行打底,动态循环兜底。

六、别忽略的边界

作为学习沉淀,同样要泼冷水:

  • 规划≠执行:计划是文字,执行是真实 tool_call,两者之间是松耦合的——规划里写了"用 CSDN",执行器实际可能调别的或不调。生产级实现需要在执行器校验 tool_call 名称与规划是否一致。
  • 工具清单可能写死:有的实现里"白名单"是硬编码的,不是动态从 MCP server 拉的。真正动态的工具发现才能配得上"先盘工具"的初衷。
  • 步骤解析依赖格式约定:正则解析依赖模型按约定格式输出,模型不守规矩就解析失败(虽然代码里加了兜底匹配)。

七、总结

三句话收尾:

  1. Agent 不止一种玩法:动态循环(AutoAgent)和规划执行(FlowAgent)是两条主流路线,前者重质量、后者重流程。
  2. 规划执行的精髓:先盘工具(只看不动手)→ 再写计划(白名单约束)→ 硬解析成清单(不靠模型解析)→ 照着执行。每一步都尽量把"模型的自由发挥"压缩到最小。
  3. 选择比实现更重要:流程清楚的任务先规划后执行,结果难定义的任务走循环打磨——知道什么时候用哪种,才是真正的 Agent 设计能力。
让 AI 学会"先写计划再干活":Agent 的规划执行(Planning)设计
http://clxhxhhr.top/posts/622/
作者
clxstart
发布于
2026-09-15
许可协议
CC BY-NC-SA 4.0
评论
0 条
还没有评论,先写一条吧。