发布时间:2026-07-11
标签:AI Agent|LLM|Multi-Agent|Workflow|架构设计|工程实践


系列导航

上一篇:AI Agent 工程实践(07):AI Agent 为什么需要 Skills,而不是 Prompt?
下一篇:AI Agent 工程实践(09):AI Engineering OS v2——系统如何持续演化
本文是 [AI Agent 工程实践] 系列的第 08 篇。


去年我做第一个"正经" Agent 项目,一上来就画了 5 个 Agent:Planner、Researcher、Coder、Reviewer、Reporter。

架构图很漂亮,我发朋友圈都有人点赞。

然后我花了两周调它们之间的通信、状态同步、错误传播——最后发现,这些活儿一个 Agent 加个 Workflow 半天就能干完。

那 5 个 Agent 里,有 4 个的全部工作就是"把消息传给下一个"。

我踩的这个坑,太多人正在踩:一上来就上 Multi-Agent,以为 Agent 越多越强。 其实 80% 的项目,单 Agent 就够了。


本文你将学到

✓ 为什么"一上来就 Multi-Agent"是最常见的过度工程
✓ Single Agent → Workflow → Multi-Agent 的演进阈值在哪
✓ Planner / Executor / Reviewer 什么时候值得真正拆开
✓ 拆 Multi-Agent 的隐藏成本:通信、状态、调试

适合阅读

✓ 打算做多 Agent 系统、但不确定"要不要拆"的人
✓ 用 LangGraph / AutoGen / CrewAI 搭多智能体的开发者
✓ 想避开"为架构而架构"这个坑的人


目录

[TOC]


问题背景

Multi-Agent 是这两年最被高估的概念。教程、demo、开源项目,张口就是"多智能体协作",好像单 Agent 是上个时代的东西。

于是新人(包括去年的我)形成一个错觉:Agent 越多 = 系统越强。

真做起来才发现,拆多 Agent 引入了一堆单 Agent 根本没有的问题:

通信开销。 Agent 之间要传消息、对齐格式,光设计"谁跟谁说话"就够喝一壶。

状态同步。 每个 Agent 有自己的上下文,一个改了状态,其它怎么知道?很容易各说各话。

调试地狱。 出错时,是 Planner 规划错了?Executor 执行错了?还是消息在传递中丢了?责任链一长,根因难定位。

成本翻倍。 5 个 Agent = 5 份上下文、5 次 LLM 调用,token 和延迟成倍涨。

一句话:Multi-Agent 不是免费的架构升级,它是有沉重代价的分布式系统。 大多数时候,你付了分布式的代价,却没享受到分布式的收益。


错误尝试

第一次:一上来就 5 个 Agent

第一个项目,我照着"最佳实践"画了 Planner/Researcher/Coder/Reviewer/Reporter 五件套。

结果:两周耗在 Agent 间通信和状态同步上,真正的业务逻辑没写多少。最后复盘发现,4 个 Agent 的实际工作就是"把上一个的输出转给下一个"——这不是协作,这是击鼓传花。

第二次:全塞进一个 Agent 的巨型 Prompt

矫枉过正,我把 5 个 Agent 的活儿全塞进一个 Agent 的超长 prompt:"你要先规划,再研究,再写代码,再审查……"

结果:又回到第 02 篇和第 07 篇的老问题——prompt 爆炸、步骤互相干扰、模型在长流程里丢步骤。把多步流程压进一个 prompt,不是单 Agent,是没有编排的混乱。

两次尝试指向同一个教训:单 Agent 和多 Agent 之间,缺了中间那一档——Workflow。大多数"需要多 Agent"的场景,其实只需要"单 Agent + Workflow"。


关键观察

我把做过的十几个 Agent 项目按"实际需要的架构"归了类:

项目复杂度 实际需要 占比
单一任务(问答、生成、审查) Single Agent ~50%
多步但线性(规划→执行→检查) Single Agent + Workflow ~30%
多步且需并行/异构专精 才真正需要 Multi-Agent ~20%
pie title 项目实际需要的架构分布
    "Single Agent 就够" : 50
    "Single + Workflow" : 30
    "真需要 Multi-Agent" : 20

80% 的项目不需要 Multi-Agent。

一上来拆多 Agent,不是把系统做强了,是把复杂度提前透支了。

定位真正原因

问题不在"该不该用 Multi-Agent",而在没有一个清晰的升级阈值——大家凭"感觉高级"来选架构,而不是凭"任务是否真的需要"。

正确思路是把架构选择变成一条渐进升级链,每一档都有明确的触发条件:

Single Agent →(步骤变多)→ Workflow →(需要并行/异构专精)→ Multi-Agent

默认从最简单的开始,只有当前档位真扛不住了,才升级到下一档。 这和第 02 篇"不要在不需要分层的地方强行分层"、第 07 篇"一次性任务就别抽 Skill"是同一条原则:先满足需求,再谈架构升级。


最终方案:三档演进 + 拆分阈值

第一档:Single Agent(默认起点)

什么时候用:任务是单一的,或多步但简单到一个上下文能装下。

问答、代码生成、单文件审查——绝大多数任务属于这档。别被"单"字骗了,配好 Rule 和 Skill 的单 Agent,能力远超想象。这是默认档,没有明确理由不要离开它。

第二档:Single Agent + Workflow(多步但线性)

升级信号:任务有明确的多步骤,且步骤之间有依赖(先规划才能执行,先执行才能检查)。

这时候不用拆 Agent——同一个 Agent,按 Workflow 编排多步就行。Workflow 负责"步骤顺序和状态传递",Agent 负责"每步执行"。

# workflow/code-task.yaml — 单 Agent 跑多步
agent: claude-code
steps:
  - name: plan
    skill: task-planning
  - name: execute
    skill: code-generation
  - name: review
    skill: code-review        # 同一个 Agent,换 skill 跑不同步骤

这一档能覆盖大多数"看起来需要多 Agent"的场景。 90% 想拆 Agent 的冲动,停在这里就够了。

第三档:Multi-Agent(真正需要才拆)

升级信号(满足其一才考虑)

  1. 需要并行——多个子任务能同时跑(如同时研究 3 个技术方案),单 Agent 串行太慢
  2. 异构专精——不同步骤需要完全不同的模型/工具/上下文(如一个用代码模型、一个用检索模型),塞一个 Agent 里互相干扰
  3. 独立上下文——步骤之间上下文必须隔离(如审查者不该看到规划者的"思路",以保持独立判断)

这三条,才是拆 Multi-Agent 的真正理由。 只是"步骤多"不算——那是 Workflow 的活。

Planner / Executor / Reviewer:什么时候值得拆

这是最经典的三角色。但它们不是"必须三个 Agent",多数时候是一个 Agent 的三个阶段(Workflow)。真正值得拆成独立 Agent 的判据:

角色 值得拆成独立 Agent 的条件 否则
Planner 规划需要独立探索、试错、长上下文,会污染执行 当作 Workflow 的第一步
Executor 需要专门的工具/模型,或要并行多个 当作执行步骤
Reviewer 必须独立上下文——不看执行者思路才能客观 当作检查步骤

其中 Reviewer 是最有理由独立的——因为"独立判断"本身要求上下文隔离,这正好命中第三条拆分信号。而 Planner 和 Executor,多数时候留在同一个 Agent 里更省心。

实际收益

指标 一上来 5 Agent 按阈值渐进
开发周期 长(耗在通信/同步) 短(先跑通再升级)
调试难度 高(责任链长) 低(单点定位)
Token/延迟成本 高(N 份上下文) 低(按需拆)
架构合理性 常过度 匹配真实需求

为主观估算,非严格 A/B Test,但反映了"渐进升级"对避免过度工程的作用。


架构图 / 流程图

三档架构的升级路径

关键点:每一档都是"上一档扛不住了"才升级。默认停在 Single Agent,遇到多步升 Workflow,只有命中并行/异构/隔离才拆 Multi-Agent。

Planner-Executor-Reviewer 的两种形态

图片多样性:用了 Mermaid 的 pie / flowchart(含 subgraph)两种;发文时可再补一张 ProcessOn/draw.io 版的决策树,提升 CSDN 图片多样性得分。


代码或配置示例

同一个任务,三档写法对比

第一档 Single Agent——直接干:

result = agent.run(task)   # 就这么简单

第二档 Single + Workflow——多步但一个 Agent:

def run_workflow(task, agent):
    plan = agent.run(task, skill="planning")      # 步骤 1
    code = agent.run(plan, skill="coding")        # 步骤 2
    review = agent.run(code, skill="review")       # 步骤 3
    return review                                  # 线性传递,无跨 Agent 通信

第三档 Multi-Agent——仅当需要隔离/并行:

def run_multi_agent(task):
    plan = planner.run(task)                       # 独立 Agent
    # 并行执行多个子任务(这才是拆的理由)
    results = parallel([executor.run(sub) for sub in plan.subtasks])
    # Reviewer 独立上下文,不看 executor 的中间思路
    return reviewer.run(results, context="isolated")

对比很明显:从第一档到第三档,代码复杂度是跳级上升的。 没有并行/隔离的真实需求,第三档的复杂度就是纯亏。

架构选择判定(伪代码)

def choose_architecture(task) -> str:
    """按真实需求选架构,不凭'感觉高级'"""
    if task.is_single_step or task.fits_one_context:
        return "single_agent"                     # 默认档
    if task.is_linear_multi_step:
        return "single_agent_workflow"            # 多步但线性
    if task.needs_parallel or task.needs_isolation or task.needs_heterogeneous:
        return "multi_agent"                      # 才真正拆
    return "single_agent_workflow"                # 拿不准 → 保守选中间档

最后一行是关键:拿不准时选保守档。 和第 05 篇 Fallback"没把握就加载最少"一个哲学——宁可欠配,不可过度。


设计权衡

候选方案 优点 缺点 为什么不选(作为默认)
一上来 Multi-Agent 架构"高级"、可并行 通信/状态/调试成本高,多数是过度工程 80% 项目用不上,代价白付
全塞一个巨型 Prompt 无需编排 prompt 爆炸、丢步骤 不是单 Agent,是无编排的混乱
三档渐进(默认单 Agent) 匹配真实需求、成本可控 需判断升级时机 选择理由:唯一避免过度工程又留足扩展空间的路径

Multi-Agent 不是错的,过早用才是错的。 当你真的遇到并行、异构、上下文隔离的需求,该拆就拆——那时它是解药。判断标准就一句:不是"能不能拆",而是"拆了到底解决什么单 Agent 解决不了的问题"。 答不上来,就别拆。


总结

✅ 80% 的项目不需要 Multi-Agent——一上来就拆是最常见的过度工程。
✅ 架构是三档渐进:Single Agent(默认)→ Workflow(多步线性)→ Multi-Agent(并行/异构/隔离),每档扛不住才升级。
✅ 大多数"想拆多 Agent"的冲动,用"单 Agent + Workflow"就能满足。
✅ Planner/Executor/Reviewer 多数是一个 Agent 的三个阶段;只有 Reviewer 因"需独立上下文"最有理由拆成独立 Agent。
✅ 拆的唯一理由是"解决单 Agent 解决不了的问题"(并行/异构/隔离),答不上来就别拆。


参考资料

  • Anthropic — Building Effective Agents → "从简单开始、按需增加复杂度",本文渐进升级思想的直接来源
  • LangGraph 官方文档 — Multi-Agent Patterns → Multi-Agent 编排的工程实现与适用场景参考
  • AutoGen / CrewAI 文档 → 多智能体协作框架,理解"拆分成本"的实践对照
  • 第 02 篇:为什么 Rules 要分层 → "不要在不需要的地方强行分层",与本文反过度工程同源
  • 第 07 篇:Skills vs Prompt → Workflow 编排 Skill 的定义,本文第二档的概念基础

系列导航

上一篇:AI Agent 工程实践(07):AI Agent 为什么需要 Skills,而不是 Prompt?
下一篇:AI Agent 工程实践(09):AI Engineering OS v2——系统如何持续演化
本文是 [AI Agent 工程实践] 系列的第 08 篇。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐