7 种智能体(Agent)设计模式深度解析

0 阅读47分钟

7 种智能体(Agent)设计模式深度解析

从思维链到多智能体协作,理解这些认知框架,就理解了 Agent 世界的"思维模式库"。

这些模式并非互斥,实际开发中常常混搭使用。理解它们,能让我们在框架选型(LangChain、LangChain4j、LlamaIndex、Dify、Spring AI Alibaba 等)和架构设计时想得更透彻。

请添加图片描述


全景概览

mindmap
  root((Agent 设计模式))
    CoT 思维链
      一步步写推理过程
      Google Research 2022
    Self-Ask 自问自答
      拆大问题为小问题
      Microsoft Research 2022
    ReAct 推理+行动
      思考与工具调用交替
      Princeton & Google 2022
    Plan-and-Execute 计划与执行
      先规划再逐步执行
      LangChain 社区 2023
    Tree of Thoughts 树状思维
      多分支探索择优
      Princeton & DeepMind 2023
    Reflexion 反思迭代
      犯错后自我纠错
      2023
    Role-playing 角色扮演
      多智能体分工协作
      AutoGPT / ChatDev / CAMEL

七种模式的核心差异可以用一张表快速感知:

模式一句话总结核心能力典型场景
CoT一步步写过程线性推理数学计算、逻辑推理
Self-Ask拆成小问题问题分解多跳事实检索
ReAct既思考也动手推理+工具调用实时信息查询、API 调用
Plan-and-Execute先计划再执行任务规划多步骤长任务
ToT树状多分支探索搜索+评估解谜、复杂规划
Reflexion自我反思迭代自我纠错代码生成、流程执行
Role-playing多人协作分工多智能体协作软件开发、跨职能协同

一、Chain of Thought(思维链,CoT)

提出背景

Google Research 在 2022 年发表论文《Chain-of-Thought Prompting Elicits Reasoning in Large Language Models》,首次系统性地提出:通过引导大语言模型在给出最终答案之前,将推理过程一步步展示出来,可以显著提升模型在复杂推理任务上的表现。

核心思想

传统 prompting 方式下,模型被要求直接给出答案——"一口气报出结果"。这在简单问题上没有问题,但面对需要多步推理的任务(数学计算、逻辑推导、因果分析),直接给答案往往导致"跳步"和错误。

CoT 的核心洞察是:推理过程本身是一种"思维脚手架"。当模型被要求把中间推理步骤显式写出来时,每一步的输出都会作为下一步的上下文输入,相当于让模型在"草稿纸"上演算,而不是心算。这种"显式化"带来三个好处:

  1. 降低单步推理负担:模型不需要在一个 forward pass 中完成全部推理,而是将复杂推理拆成多个简单步骤,每步只需做一小段推理。
  2. 提供可追溯的推理链:如果最终答案出错,可以回溯到具体哪一步出了问题,便于调试和改进。
  3. 激发模型的潜在推理能力:大型模型在预训练阶段已经学到了大量推理知识,CoT 提供了一种"激活"机制,让这些能力得以释放。

CoT 有两种主要变体:Zero-shot CoT(直接在 prompt 末尾加上"Let's think step by step")和 Few-shot CoT(在 prompt 中给出带推理过程的示例)。前者简单粗暴,后者效果更稳定。

流程图

flowchart LR
    A[用户提问] --> B[模型开始推理]
    B --> C[步骤1: 理解问题<br/>提取已知条件]
    C --> D[步骤2: 设定变量<br/>建立关系]
    D --> E[步骤3: 逐步计算<br/>推导中间结果]
    E --> F[步骤4: 验证结果<br/>得出最终答案]
    F --> G[输出答案 + 推理过程]

    style A fill:#e1f5fe,stroke:#0288d1
    style G fill:#c8e6c9,stroke:#388e3c
    style C fill:#fff9c4,stroke:#f9a825
    style D fill:#fff9c4,stroke:#f9a825
    style E fill:#fff9c4,stroke:#f9a825
    style F fill:#fff9c4,stroke:#f9a825

场景示例

问题:小明网购了一个 3.8 公斤的包裹,快递公司首重 1 公斤内收费 10 元,续重每公斤 3 元,不足 1 公斤按 1 公斤计算。请问小明需要付多少快递费?

CoT 推理过程

第一步:确认包裹重量 → 3.8 公斤
第二步:计算计费重量 → 不足 1 公斤按 1 公斤算 → 4 公斤
第三步:分离首重和续重 → 首重 1 公斤 = 10 元
第四步:计算续重重量 → 4 - 1 = 3 公斤
第五步:计算续重费用 → 3 × 3 = 9 元
第六步:加总费用 → 10 + 9 = 19 元

答案:小明需要付 19 元快递费。

每一步推理都被显式写出。如果模型直接报答案"19 元",你无法判断它是真的会算还是猜的;但有了推理链,你能看到它在"不足 1 公斤按 1 公斤算"这一步做了正确的向上取整,思路完全可追溯。

适用业务场景

  • 数学计算与数值推理:财务报表分析、投资收益计算、风险评估模型中涉及多步运算的场景。模型需要先提取参数、再建立公式、最后求解,CoT 让每一步都可审计。
  • 逻辑推理与决策分析:风控规则引擎、合规审查流程中,需要根据多条规则逐步推导结论的场景。比如"如果用户满足条件 A 且不满足条件 B,则触发规则 C"。
  • 逐步分析类问题:医疗辅助诊断中根据症状逐步排除疾病、法律推理中根据法条逐步推导结论、技术故障排查中根据现象逐步定位根因。
  • 教育与培训:AI 辅导系统中,不仅给出答案,还展示解题过程,帮助学生理解推理路径。

适用系统与集成方案

适配的系统类型

  • 智能报表与财务分析系统:报表不只是展示数字,而是展示"这些数字怎么来的"。用户点击任何一个指标,都能看到从原始凭证到最终报表的完整推理链。
  • 风控决策引擎:每一笔贷款审批、每一次反欺诈判定,系统都绑定一条推理链,审计人员可以逐条回溯"为什么拒绝这笔申请"。
  • AI 辅导与在线教育平台:学生做错题不只是看到"正确答案是 C",而是跟着系统的推理步骤,理解"这道题应该怎么一步步推出答案"。
  • 医疗辅助诊断系统:输入症状后,系统不只给出"可能是 XX 病",还展示"从症状 → 鉴别排除 → 最可能诊断"的完整推导。

系统集成方式

flowchart LR
    A[原始数据] --> B[CoT 推理引擎]
    B --> C[推理链存储]
    B --> D[结论输出]
    C --> E[审计 / 追溯接口]
    D --> F[前端展示: 结论 + 推理过程]

    style B fill:#fff9c4,stroke:#f9a825
    style C fill:#f3e5f5,stroke:#7b1fa2

集成要点

  1. 嵌入决策流程,而非独立模块:CoT 不是单独的"推理服务",而是嵌入在报表查询、风控审批、诊断分析的每一个决策节点上。用户请求一次分析 → 系统返回的不只是结论,还有结构化字段 reasoning_chain
  2. 推理链必须结构化存储:将推理步骤存为 [{step: 1, thought: "...", result: "..."}, ...] 格式,前端可展开/折叠每一步,审计时可逐条回溯。
  3. 与现有规则引擎共存:CoT 不替代现有规则引擎,而是互补——规则引擎负责快速硬判定(如"金额超限直接拒绝"),CoT 负责模糊推理(如"这个交易模式看起来可疑,解释一下为什么")。

二、Self-Ask(自问自答)

提出背景

Microsoft Research 在 2022 年的研究工作《Measuring and Narrowing the Compositionality Gap in Language Models》中提出了 Self-Ask 方法(论文标题为 Self-Ask with Search)。研究者发现,当问题需要组合多个事实才能回答时(即"组合性问题"),模型的表现会急剧下降——即使模型知道每个单独的事实,也无法正确组合它们。

核心思想

Self-Ask 解决的是**组合性鸿沟(Compositionality Gap)**问题。所谓组合性鸿沟,是指模型能够正确回答每个子问题,但当这些子问题组合成一个大问题时,模型的正确率远低于各子问题正确率的乘积。

Self-Ask 的策略是:让模型学会"反问自己"。面对一个复杂问题,模型不是试图一步到位地回答,而是先判断"要回答这个问题,我需要先知道什么?",然后把这个大问题拆解成一系列后续问题(follow-up questions),逐个回答后再组合成最终答案。

与 CoT 的关键区别在于:CoT 是线性的推理链——每一步都是上一步的自然延伸;Self-Ask 则是问题分解——把一个需要多跳推理的问题拆成多个独立的子问题,每个子问题可以独立查询和回答。更关键的是,Self-Ask 通常会配合外部检索(如搜索引擎)使用:每提出一个 follow-up question,就去检索答案,然后再基于检索结果提出下一个问题。

这种模式特别适合事实链路长的问题——答案需要串联多个事实,而每个事实可能不在模型的训练数据中。

流程图

flowchart TD
    A[用户提出复杂问题] --> B{是否需要<br/>分解?}
    B -->|是| C[生成后续问题1]
    C --> D[检索/回答后续问题1]
    D --> E{是否还需要<br/>更多信息?}
    E -->|是| F[生成后续问题2]
    F --> G[检索/回答后续问题2]
    G --> H{是否还需要<br/>更多信息?}
    E -->|否| I[组合所有子答案]
    H -->|否| I
    I --> J[输出最终答案]

    style A fill:#e1f5fe,stroke:#0288d1
    style J fill:#c8e6c9,stroke:#388e3c
    style C fill:#fff3e0,stroke:#ef6c00
    style F fill:#fff3e0,stroke:#ef6c00
    style D fill:#f3e5f5,stroke:#7b1fa2
    style G fill:#f3e5f5,stroke:#7b1fa2

场景示例

问题:埃隆·马斯克创办的第一家公司的市值现在是多少?

Self-Ask 过程

问:埃隆·马斯克创办的第一家公司是什么?
  → 检索结果:1996 年,马斯克与弟弟金巴尔·马斯克共同创办了 Zip2,
     一家为报纸提供在线城市指南和商业目录的公司。

追问:Zip2 公司后来怎么样了?现在还上市吗?
  → 检索结果:1999 年,康柏(Compaq)以约 3.07 亿美元收购了 Zip2,
     之后被整合进康柏的 AltaVista 业务中,目前已不是独立公司。

追问(调整方向):既然已经被收购了,那它被收购时的价值是多少?
  → 检索结果:Zip2 被康柏以 3.07 亿美元收购,其中马斯克获得约 2200 万美元。

组合答案:马斯克的第一家公司 Zip2 目前已不存在独立上市,
           1999 年被康柏以约 3.07 亿美元收购。

这个例子展示了 Self-Ask 的灵活性——当第一个追问发现"Zip2 已经不是独立公司"后,模型没有死板地继续追问"市值",而是动态调整了追问方向,去查"被收购时的价值"。这正是 Self-Ask 相比固定流程的优势:它能根据每一步的检索结果灵活生成下一步追问,而非硬编码的查询流水线。

适用业务场景

  • 多跳知识问答:企业知识库中,用户的问题常常需要串联多个文档的信息。比如"我们公司华东区去年Q4营收最高的产品线是什么?它的利润率是多少?"需要先查营收数据,再定位产品线,最后查利润率。
  • 事实链路长的信息检索:竞品分析中需要"竞品 A 的母公司是谁 → 母公司的最新财报怎么说 → 财报中提到的战略方向是什么"这样的多跳查询。
  • 合规与尽调:背景调查、尽职调查中,需要串联工商信息、司法信息、关联关系等多源数据,Self-Ask 可以自动拆解查询路径。
  • 客服与智能问答:用户提问"我的订单什么时候到?"需要先查订单号 → 查物流状态 → 查预计送达时间,Self-Ask 能自动完成这个拆解。

适用系统与集成方案

适配的系统类型

  • 企业智能客服系统:用户问"我的订单什么时候到?"→ Self-Ask 自动拆解为"查订单号 → 查物流 → 算预计送达"。不再只是关键词匹配式的 FAQ 应答,而是真正理解用户的复合查询需求。
  • 企业知识库问答平台:知识分散在多个文档库、Wiki、规章制度中,Self-Ask 将复杂问题拆成多个子问题,分别检索不同知识源后合成答案,解决"一个问题的答案藏在三个文档里"的困境。
  • 合规与尽调系统:输入一个企业名 → 自动拆解为"工商信息 → 司法风险 → 关联关系 → 舆情"四个子查询,并行调用天眼查、裁判文书、企查查等接口,最终汇总为尽调摘要。
  • 竞品情报分析平台:输入"竞品 X 的最新动态"→ 拆解为"产品更新 → 融资动态 → 人事变动 → 市场活动",按维度检索和汇总。

系统集成方式

flowchart TD
    A[用户提问] --> B[Self-Ask 问题分解器]
    B --> C1[子问题 1: 查订单]
    B --> C2[子问题 2: 查物流]
    B --> C3[子问题 3: 预计时间]
    C1 --> D1[订单系统 API]
    C2 --> D2[物流查询 API]
    C3 --> D3[时效计算引擎]
    D1 --> E[答案合成器]
    D2 --> E
    D3 --> E
    E --> F[最终回答]

    style B fill:#fff3e0,stroke:#ef6c00
    style E fill:#f3e5f5,stroke:#7b1fa2
    style F fill:#c8e6c9,stroke:#388e3c

集成要点

  1. 子问题与数据源映射:在系统中维护一张"问题类型 → 数据源"的映射表。Self-Ask 分解出的每个子问题带上类型标签,调度器根据类型将子问题路由到对应的业务 API 或搜索引擎。
  2. 答案合成不是拼积木:合成器不是把子答案简单拼在一起,而是做"去重、冲突消解、信息补全"。比如子问题 A 说"Zip2 市值为 0",子问题 B 说"Zip2 已被收购",合成器需要输出"Zip2 已不存在独立市值,被收购时估值 3.07 亿美元"。
  3. 渐进式渲染提升体验:前端展示时不必等所有子问题都回答完。每个子问题有了答案就实时推送——用户看到的是"正在查你的订单号... ✅ 找到了 → 正在查物流... ✅ 在路上了 → 预计明天下午 3 点送达",体验比"转圈 5 秒然后出结果"好得多。

三、ReAct(推理 + 行动)

提出背景

Princeton 大学与 Google Research 在 2022 年联合发表论文《ReAct: Synergizing Reasoning and Acting in Language Models》,提出了 ReAct 框架。这是 Agent 领域最具影响力的论文之一,至今仍是大多数 Agent 框架的底层范式。

核心思想

在 ReAct 之前,CoT 和 Self-Ask 主要解决"怎么想"的问题,但它们有一个共同的局限:模型只能基于自身参数中存储的知识进行推理,无法与外部世界交互。如果模型不知道某个事实,或者事实已经发生变化(比如实时天气、最新新闻),纯推理模式就无能为力。

ReAct 的核心创新在于:让模型在推理(Reasoning)和行动(Acting)之间交替进行。具体来说,模型在每一步都会做两件事:

  • Thought(思考):模型推理当前状态,决定下一步应该做什么。比如"用户问杭州昨天的天气,我不知道这个信息,需要调用天气 API 查询"。
  • Action(行动):模型执行一个具体动作,比如调用搜索引擎、查询数据库、调用 API。行动的结果作为新的观察(Observation)反馈给模型。
  • Observation(观察):模型接收行动的返回结果,基于这个新信息进行下一轮思考。

这个 Thought → Action → Observation 的循环可以反复进行,直到模型认为已经收集了足够的信息来回答问题。

ReAct 比 CoT 和 Self-Ask 更全能的根本原因在于:它不仅是一个推理模式,更内建了与外部世界交互的闭环。CoT 只能"想",Self-Ask 虽然能"查"但流程相对固定,而 ReAct 可以根据每次行动的反馈动态调整后续策略——如果搜索结果不理想,它可以换一个关键词重新搜索;如果 API 返回错误,它可以分析错误并尝试修复。

正是这种"思考-行动-观察"的闭环,使 ReAct 成为当前主流 Agent 框架(LangChain、LangChain4j、LlamaIndex、Dify、Spring AI Alibaba 等)的默认执行范式。

流程图

flowchart TD
    A[用户输入问题] --> B[Thought: 分析问题<br/>判断需要什么信息]
    B --> C{是否已有<br/>足够信息?}
    C -->|是| D[生成最终答案]
    C -->|否| E[Action: 选择并调用工具<br/>搜索/查询API/读数据库]
    E --> F[Observation: 获取工具返回结果]
    F --> B

    style A fill:#e1f5fe,stroke:#0288d1
    style D fill:#c8e6c9,stroke:#388e3c
    style B fill:#fff9c4,stroke:#f9a825
    style E fill:#ffcdd2,stroke:#c62828
    style F fill:#f3e5f5,stroke:#7b1fa2

场景示例

问题:帮我查一下现在北京的空气质量,如果不适合户外活动的话,帮我推荐几个室内好去处。

ReAct 执行过程

Thought: 用户想知道北京当前的空气质量。我需要调用天气/空气质量 API
         获取实时数据,网上搜不到"现在"的数据。

Action: 调用空气质量查询工具
        → 参数: city=北京

Observation: 北京当前 AQI 172,PM2.5 125μg/m³,属于"中度污染"。
             建议减少户外活动,敏感人群避免外出。

Thought: AQI 172 中度污染,确实不适合户外活动。需要给用户推荐室内去处。
         但我不知道北京具体有什么好的室内场所,需要搜索一下。

Action: 搜索"北京室内游玩推荐 商圈 博物馆 商场"
        → 调用搜索引擎

Observation: 搜索结果显示——
            1. 三里屯太古里(购物+餐饮)
            2. 中国国家博物馆(免费预约参观)
            3. 798 艺术区室内展馆(当代艺术展览)
            4. 合生汇(购物中心+室内卡丁车)
            5. 王府井 APM(购物+电影院)

Thought: 现在有了足够信息。结合空气质量数据(AQI 172 中度污染)
         和室内去处推荐,可以给用户一个综合回复了。

Final Answer: 北京当前空气质量为中度污染(AQI 172,PM2.5 125μg/m³),
              确实不太适合户外活动。这里推荐几个室内好去处:
              ① 中国国家博物馆——免费但需提前预约,地铁直达
              ② 798 艺术区室内展馆——正在举办多个当代艺术展
              ③ 三里屯太古里/王府井 APM——逛吃加看电影一条龙
              ④ 合生汇——有室内卡丁车,适合想活动一下的朋友
              出门记得戴口罩哦!

这个例子展示了 ReAct 的核心价值:模型不止于"思考"——它主动调用工具获取真实的实时数据,根据工具返回结果动态调整后续行动(空气质量不好 → 改推室内),整个过程是一个完整的"感知-决策-行动"闭环。

适用业务场景

  • 实时信息查询与决策:任何需要最新数据的场景——股票行情查询、天气查询、新闻摘要、航班状态查询。模型"知道"自己不知道实时信息,主动调用 API 获取。
  • 多工具编排与 API 调用:企业内部的智能助手需要调用多个系统 API(CRM、ERP、OA),ReAct 让模型根据任务需要自主选择和组合工具调用顺序。
  • 数据分析与报表生成:模型先思考"需要哪些数据",调用数据库查询工具获取数据,再思考"如何分析",调用分析工具或编写代码处理,最后生成报表。
  • 运维故障排查:Agent 接到告警后,先分析告警信息,调用监控 API 查看指标,再根据异常指标调用日志查询工具,定位根因后给出修复建议。
  • 智能客服与技术支持:用户描述问题后,Agent 先理解问题,查询知识库获取解决方案,如果需要还可以调用工单系统、查看用户订单状态等。

适用系统与集成方案

适配的系统类型

  • 企业统一智能助手:打通企业内部的 CRM、ERP、OA、邮件、日历等系统。员工说"帮我查一下陈总的合同审批到哪了,顺便约他明天下午开会"——ReAct 自动判断需要调合同系统 → 查日历 → 发会议邀请,一次对话完成跨系统操作。
  • 智能运维平台(AIOps):系统告警触发 Agent → Thought: "CPU 飙升 85%,需要排查" → Action: 调用 Prometheus 查指标 → Observation: "服务 A 的 QPS 也翻了 3 倍" → Action: 查服务 A 的日志 → 定位到慢 SQL → 给出修复建议并自动创建工单。
  • 数据分析与 BI 平台:用户用自然语言问"上个月华东区毛利率为什么降了 3 个点?"→ ReAct 自动写 SQL → 查数据 → 分析趋势 → 关联影响因素 → 输出分析报告。用户不需要打开 SQL 编辑器。
  • 智能客服工单系统:用户报修后,Agent 不只给标准回复,而是自动查设备型号、查故障历史、查库存备件,给出"工程师带 XX 型号备件 + 预计 2 小时内到场"的完整方案。

系统集成方式

flowchart TD
    A[用户输入] --> B[ReAct 循环引擎]
    B --> C{Thought: 需要什么?}
    C --> D[工具注册中心 / API 网关]
    D --> E1[CRM 系统]
    D --> E2[ERP 系统]
    D --> E3[OA 审批]
    D --> E4[监控系统]
    D --> E5[数据库查询]
    E1 & E2 & E3 & E4 & E5 --> F[Observation: 结果汇总]
    F --> C
    F --> G[最终回复]

    style B fill:#ffcdd2,stroke:#c62828
    style D fill:#fff9c4,stroke:#f9a825
    style G fill:#c8e6c9,stroke:#388e3c

集成要点

  1. 工具注册中心是核心枢纽:ReAct 不直接调用各业务系统 API,而是通过统一的工具注册中心。每个工具声明"名称、描述、参数 schema、调用地址",ReAct 引擎根据 Thought 自动匹配合适的工具。这正是 LangChain4j 的 @Tool 和 Spring AI 的 @Tool 注解背后的设计逻辑。
  2. 权限边界必须前置:生产环境中,ReAct Agent 调用工具必须经过权限网关。在工具注册中心为每个工具标注所需权限级别,Agent 执行 Action 前由网关拦截校验——不能让 AI 随意调用所有 API。
  3. 可观测性是底线:每一轮 Thought → Action → Observation 都记录到日志系统(时间戳、耗时、工具名、参数、返回摘要、Token 消耗)。出问题时能快速回溯"Agent 在哪一步做了错误判断",而不是对着一个最终结果猜原因。

四、Plan-and-Execute(计划与执行)

提出背景

Plan-and-Execute 模式出现在 2023 年前后的 Agent 应用开发框架实践中,主要源自 LangChain 社区的工程实践。它并非某一篇学术论文的产物,而是对 ReAct 模式在复杂长任务场景下局限性的工程改进。

核心思想

ReAct 模式在简单任务上表现出色,但面对复杂的多步骤任务时存在一个显著问题:模型在每一步都重新推理"下一步该做什么",缺乏全局规划。这导致两个后果——一是容易在中间步骤"跑偏",偏离原始目标;二是反复推理带来大量 token 消耗和延迟。

Plan-and-Execute 的解法是把任务拆成两个明确阶段:

第一阶段——Planning(计划):模型先通览整个任务,生成一个完整的步骤计划。这个计划是一系列有序的子任务列表,每个子任务都是具体、可执行的。比如"写一篇新能源车的市场调研报告"会被拆成"收集销量数据 → 分析政策趋势 → 总结消费者反馈 → 撰写结论"这样的步骤序列。

第二阶段——Execution(执行):按照计划逐条执行每个子任务。每个子任务的执行可以采用任何合适的策略——可以是简单的 LLM 调用,也可以是 ReAct 循环,还可以是调用外部工具。关键在于,执行阶段不需要反复推理"接下来做什么",因为计划已经确定。

这种分离带来的好处是显而易见的:计划阶段可以专注于"全局最优"的任务分解,执行阶段可以专注于"局部最优"的子任务完成。同时,如果某个子任务执行失败,只需要重新执行该子任务,而不需要推翻整个计划。

进阶版本还支持动态重规划(Re-planning):在执行过程中如果发现计划不合理(比如某个子任务无法完成,或者执行结果改变了后续前提),可以回到计划阶段进行调整。

流程图

flowchart TD
    A[用户下达复杂任务] --> B[Planning 阶段<br/>生成完整计划]
    B --> C[计划: 子任务1]
    B --> D[计划: 子任务2]
    B --> E[计划: 子任务3]
    B --> F[计划: 子任务N]

    C --> G[执行子任务1]
    G --> H{执行成功?}
    H -->|是| D
    H -->|否| I[重试/调整]

    D --> J[执行子任务2]
    J --> K{执行成功?}
    K -->|是| E
    K -->|否| L[重试/调整]

    E --> M[执行子任务3]
    M --> N[...继续执行]

    N --> O[所有子任务完成]
    O --> P[整合结果输出]

    Q{需要重规划?} -.->|是| B

    style A fill:#e1f5fe,stroke:#0288d1
    style B fill:#fff9c4,stroke:#f9a825
    style P fill:#c8e6c9,stroke:#388e3c
    style O fill:#c8e6c9,stroke:#388e3c

场景示例

任务:帮我策划一场 30 人的户外生日派对,预算 3000 元。

Planning 阶段

计划生成:
1. 根据预算和人数,确定合适的场地类型和候选方案
2. 制定餐饮方案(自助烧烤 or 外卖简餐 or 冷餐摆台)
3. 策划活动流程(游戏环节 + 歌曲 + 切蛋糕)
4. 列出物资采购清单(装饰、餐具、饮料、蛋糕)
5. 制定时间安排表(从下午开始到晚上结束)
6. 生成最终方案文档,附带预算明细

Execution 阶段

执行步骤 1:搜索"北京 30人户外派对场地"
           → 对比公园草坪(免费)、露营营地(人均30元)、民宿庭院(包场1500元)
           → 选择:露营营地(900元 / 30人)+ 自带帐篷区,性价比最高

执行步骤 2:制定餐饮方案
           → 对比三种方案后选择"自助烧烤":食材批发约600元 + 饮料200元

执行步骤 3:策划活动流程
           → 14:00-14:30 签到合影 → 14:30-16:00 团队游戏 → 16:00-17:30 烧烤
           → 17:30-18:00 唱歌切蛋糕 → 18:00-19:00 自由活动拍照

执行步骤 4:物资清单
           → 装饰(气球+横幅+照片墙)150元、一次性餐具120元、
             蛋糕定制300元、饮料200元、零食150元、小礼品200元

执行步骤 5:预算汇总
           → 场地900 + 食材600 + 饮料200 + 装饰150 + 餐具120 +
             蛋糕300 + 零食150 + 小礼品200 + 应急备用预算280 = 总计2900元
             ✓ 未超出3000元预算

执行步骤 6:生成最终方案文档(包含场地地址、采购链接、时间表、预算明细)

(如果步骤1中露营营地订满 → 切换候选方案,重新算预算,其他步骤不受影响)

Plan-and-Execute 在这里的优势很明显:先用 5 秒生成全局计划,用户一眼就看清"整个派对怎么搞";然后再逐条执行细节,每步独立验证——如果露营营地满了,换一个方案就行,不会推翻整个策划。

适用业务场景

  • 长流程内容生成:市场调研报告、行业分析报告、技术方案文档、产品 PRD 文档。这些任务步骤多、耗时长,需要先规划结构再逐段填充。
  • 数据处理流水线:ETL 任务、数据清洗与分析流水线。先规划数据处理步骤(抽取→清洗→转换→加载→分析),再逐步执行,每步可独立验证。
  • 自动化运维流程:系统部署、灰度发布、故障恢复等运维场景。先制定操作计划,再逐步执行,每步执行后检查状态,确保安全。
  • 项目管理与任务分解:把大型项目自动拆解为可执行的子任务列表,分配给不同的执行者或自动化流程。
  • 多步骤研究与调研:学术研究中的文献综述、竞品分析中的多维对比、投资尽调中的多维度核查,都需要先规划调研框架再逐项深入。

适用系统与集成方案

适配的系统类型

  • 自动化部署与发布平台:用户提交"把用户中心服务发布到生产环境"→ Plan Agent 生成"环境检查 → 灰度发布 10% → 监控 5 分钟 → 全量发布 → 回归测试 → 通知"六步计划 → Execute Agent 逐步执行,每步独立验证。失败了只重试失败那一步,不用推翻整个流程。
  • AI 文档生成系统:用户说"写一份 Q2 季度技术复盘报告"→ Plan Agent 生成大纲(业务目标回顾 → 技术成果 → 问题与教训 → 下季度规划)→ 用户确认或调整 → Execute Agent 逐段填充内容,每段产出可独立审核。
  • ETL 数据处理流水线:数据工程师配置"从 MySQL 抽取订单数据 → 清洗去重 → 转换字段格式 → 加载到 ClickHouse → 跑数据质量检查"→ Plan 生成 DAG(有向无环图),Execute 按依赖关系执行,上一步失败自动阻断下游。
  • 多步骤自动化测试平台:测试场景"用户注册 → 登录 → 下单 → 支付 → 查看订单"→ Plan 拆为 5 个测试步骤 → Execute 按顺序跑,每步失败时自动截图保存上下文,方便定位。

系统集成方式

flowchart TD
    A[用户任务输入] --> B[Plan Agent]
    B --> C[步骤计划<br/>可人工审核调整]
    C --> D[Execute Agent]
    D --> E1[步骤 1: ReAct 执行]
    E1 --> E2[步骤 2: ReAct 执行]
    E2 --> E3[步骤 3: ReAct 执行]
    E3 --> F{需要重规划?}
    F -->|是| B
    F -->|否| G[结果汇总输出]

    subgraph 步骤状态追踪
        H[(任务状态存储<br/>Redis / DB)]
    end

    E1 -.-> H
    E2 -.-> H
    E3 -.-> H

    style B fill:#fff9c4,stroke:#f9a825
    style D fill:#ffcdd2,stroke:#c62828
    style G fill:#c8e6c9,stroke:#388e3c

集成要点

  1. 计划必须可审核,不能是黑箱:Plan Agent 生成计划后,必须给用户(或自动化审批规则)一个确认/调整的机会,通过后才进入 Execute。这是企业环境的红线——不能让 AI 自主决定"怎么改生产环境"。
  2. 步骤状态必须持久化:长任务可能执行几十分钟甚至几小时,必须用 Redis 或数据库记录每步状态(pending → running → success → failed),支持断点续传。运维平台上常见"执行到第 4 步时容器重启了,重启后从第 4 步继续"的场景。
  3. 动态重规划是灵魂:如果步骤 3 执行失败,不应该从头重来。应该触发 Re-plan:"步骤 3 因为 XX 原因失败了,请根据新情况重新规划剩余步骤"。这是 Plan-and-Execute 相比固定脚本的核心优势。

五、Tree of Thoughts(ToT,树状思维)

提出背景

Princeton 大学和 Google DeepMind 在 2023 年联合发表论文《Tree of Thoughts: Deliberate Problem Solving with Large Language Models》。论文灵感来源于认知科学中人类"系统2思维"(System 2 thinking)的理论——人类在解决复杂问题时,会探索多条思路,评估各种可能性,必要时回溯重来,而不是一条路走到底。

核心思想

CoT 是线性推理——一条链走到底。这在简单问题上够用,但面对真正复杂的问题(比如解谜、博弈、创意规划),单线推理的局限性很明显:如果某一步走错了方向,整条链就全错了,而且没有回头路

ToT 的核心思想是:不是单线思维,而是生成多条思路分支,像树一样展开。具体来说:

  1. 思维分解(Thought Decomposition):把问题求解过程分解为一系列中间"思维步骤"(thought),每个 thought 是一个有意义的问题解决中间状态。
  2. 思维生成(Thought Generation):在每个节点,生成多个候选的下一步 thought(比如 3-5 个),形成树的分支。
  3. 状态评估(State Evaluation):对每个分支的当前状态进行评估——这个方向是否有希望?评估可以由模型自身完成("这个思路看起来合理/不太行"),也可以通过外部反馈完成。
  4. 搜索算法(Search Algorithm):使用树搜索算法(BFS 广度优先、DFS 深度优先、beam search 等)在思维树中探索,根据评估结果剪枝,最终找到最优路径。

ToT 与 CoT 的关系可以类比为:CoT 是"走一条路",ToT 是"看地图选最优路线"。ToT 的代价是计算成本更高(需要多次 LLM 调用),但在真正需要"深思熟虑"的场景下,这个代价是值得的。

流程图

flowchart TD
    A[问题输入] --> B[初始状态]

    B --> C1[思路 A]
    B --> C2[思路 B]
    B --> C3[思路 C]

    C1 --> D1[思路 A-1]
    C1 --> D2[思路 A-2]
    C2 --> D3[思路 B-1]
    C2 --> D4[思路 B-2]
    C3 --> D5[思路 C-1]

    D1 --> E1{评估: 有希望?}
    D2 --> E2{评估: 有希望?}
    D3 --> E3{评估: 有希望?}
    D4 --> E4{评估: 有希望?}
    D5 --> E5{评估: 有希望?}

    E1 -->|否| X1[剪枝 ✂]
    E2 -->|是| F1[继续展开]
    E3 -->|是| F2[继续展开]
    E4 -->|否| X2[剪枝 ✂]
    E5 -->|否| X3[剪枝 ✂]

    F1 --> G1[...继续搜索]
    F2 --> G2[...继续搜索]

    G1 --> H[找到最优解]
    G2 --> H

    style A fill:#e1f5fe,stroke:#0288d1
    style H fill:#c8e6c9,stroke:#388e3c
    style X1 fill:#ffcdd2,stroke:#c62828
    style X2 fill:#ffcdd2,stroke:#c62828
    style X3 fill:#ffcdd2,stroke:#c62828
    style B fill:#fff9c4,stroke:#f9a825

场景示例

问题:从北京去成都玩 4 天,预算 2500 元,怎么安排行程又省钱又好玩?

ToT 过程

初始状态:北京→成都,43晚,预算2500元

第1层思维生成(出行方式):
  思路 A:高铁往返(二等座约 780×2=1560 元,单程约 7.5 小时)
  思路 B:飞机往返(提前订特价票约 600×2=1200 元,单程约 3 小时)
  思路 C:硬卧火车(约 350×2=700 元,单程约 23 小时)

评估(综合考虑预算和时间):
  思路 A → 交通占预算 62%,剩余 940 元用于住宿餐饮 → ❌ 太紧
  思路 B → 交通占预算 48%,剩余 1300 元,时间也最省 → ✅ 最佳
  思路 C → 交通占预算 28%,但往返近 46 小时在路上 → ❌ 玩的时间太少

保留思路 B,继续展开 ↓

第2层思维生成(住宿 + 行程):
  思路 B-1:住青旅(50 元/晚 = 150 元),景点全走经典线
           (宽窄巷子+锦里+大熊猫基地+都江堰)

  思路 B-2:住经济型酒店(150 元/晚 = 450 元),
           重美食体验(火锅+串串+小吃打卡+川剧变脸)

  思路 B-3:住民宿(100 元/晚 = 300 元),
           自然+人文混搭(青城山+大熊猫基地+川博+火锅)

评估(综合预算、体验丰富度):
  思路 B-1 → 酒店太差,影响体验 → ❌
  思路 B-2 → 总花费 1200+450+650(吃喝+门票)= 2300 元,体验好 → ✅
  思路 B-3 → 只有吃火锅单调 → ⚠️ 可优化

保留 B-2,继续展开 ↓

第3层思维生成(美食路线细化):
  B-2-1:Day1 太古里+锦里小吃 → Day2 大熊猫基地+晚餐火锅
         → Day3 宽窄巷子+串串+川剧 → Day4 人民公园+采耳+返程

  B-2-2:Day1 落地休整+川博 → Day2 青城山一日游
         → Day3 大熊猫基地+建设路小吃 → Day4 宽窄巷子+返程

评估(行程节奏、体力消耗):
  B-2-1 → 节奏轻松,体验层次丰富,不累 → ✅ 最佳!

最终方案选定 B-2-1:
  交通 1200 + 住宿 450 + 吃喝 450 + 门票 200 + 其他 200 = 总计 2500 元
  行程充实不赶路,美食打卡全覆盖,预算刚好卡住 ✓

这里的关键是:ToT 不是只规划一条路然后执行,而是同时展开多条分支,通过"评估"这个关卡及时砍掉不靠谱的方向(硬卧太费时间、青旅体验太差),把算力集中在最有希望的分支上。就好像有个军师帮你同时盘算了 9 种方案,最后挑出最优解。

适用业务场景

  • 复杂规划与决策:战略规划、项目方案设计、资源分配优化。这些问题往往有多条可能的路径,需要评估各路径的可行性和收益,选出最优方案。ToT 可以系统性地探索多种策略组合。
  • 解谜与约束满足问题:排班调度、路径规划、资源分配等约束优化问题。这些问题有明确的约束条件,ToT 可以通过评估约束满足情况来剪枝。
  • 创意生成与方案探索:产品设计中的头脑风暴、营销方案的多维探索、技术架构的多方案对比。ToT 可以生成多种创意方向,评估后选择最优的深入展开。
  • 博弈与对抗策略:游戏 AI、谈判策略、竞品应对策略。需要在多个可能的对手反应分支中搜索最优应对方案。
  • 代码生成与调试:面对复杂编程问题,生成多种实现方案,评估各方案的复杂度、性能、可维护性,选择最优实现。调试时也可以尝试多条推理路径来定位 bug。

适用系统与集成方案

适配的系统类型

  • 智能排班调度系统:输入约束条件(人员可用性、技能匹配、工时法规、业务峰谷),ToT 同时探索多种排班方案,通过评估函数(合规性 × 效率 × 员工满意度)剪枝,最终输出最优排班表,并附上"为什么没选另外两种方案"的说明。
  • 物流路径规划系统:输入"100 个配送点、5 辆车、时间窗口约束",ToT 同时探索多种路径组合,评估总里程、时效性、车辆负载均衡,选出最优调度方案。
  • 技术架构选型决策系统:输入业务需求,ToT 同时生成"单体架构方案"、"微服务方案"、"Serverless 方案"三个分支,从成本、可维护性、扩展性、团队能力多维度评估,推荐最优方案并解释取舍逻辑。
  • AI 辅助编程工具:面对"实现一个高并发秒杀系统",ToT 同时生成多种架构思路(Redis 预减库存 + MQ 异步下单、数据库行级锁、纯 Redis Lua 脚本),评估并发容量、数据一致性、实现复杂度后选择最优路径并展开编码。

系统集成方式

flowchart TD
    A[约束 / 需求输入] --> B[ToT 搜索引擎]
    B --> C[第 1 层: 生成 N 个候选分支]
    C --> D[评估器: 对每个分支打分]
    D --> E{剪枝: 保留 Top-K}
    E --> F[第 2 层: 对保留分支继续展开]
    F --> D
    E -->|达到终止条件| G[最优方案输出]

    subgraph 评估维度配置
        H[成本权重]
        I[效率权重]
        J[风险权重]
        K[合规权重]
    end

    D -.-> H & I & J & K

    style B fill:#fff9c4,stroke:#f9a825
    style D fill:#f3e5f5,stroke:#7b1fa2
    style G fill:#c8e6c9,stroke:#388e3c

集成要点

  1. 评估函数是 ToT 的灵魂:ToT 的好坏 90% 取决于评估函数的准确度。在实际系统中,评估函数应该是"规则引擎 + LLM 自评"的混合体——硬性约束(如工时不超过 40 小时/周)用规则引擎硬剪枝,软性指标(如方案美感、用户体验)用 LLM 评分。
  2. 控制搜索成本是刚需:每多一层分支,LLM 调用量指数增长。实际系统必须配置"最大探索宽度 K"(每层保留几个分支)和"最大探索深度 D"(最多展开几层)。典型业务配置:K=3、D=5,一共 15 次 LLM 调用,成本可控。
  3. 结果必须可解释:用户需要看到的不只是最终方案,还有"另外两个方案为什么被淘汰"——ToT 需要输出完整的剪枝原因("方案 B 虽然成本最低,但物流超时率达 15%,不符合 SLA 要求")。

六、Reflexion / Iterative Refinement(反思与迭代优化)

提出背景

2023 年论文《Reflexion: Language Agents with Verbal Reinforcement Learning》提出了 Reflexion 框架。这篇论文的核心贡献是提出了一种"语言强化学习"(Verbal Reinforcement Learning)的概念——不通过梯度更新模型参数,而是通过自然语言形式的自我反思来改进模型行为。

核心思想

传统 Agent 的问题是:犯了错不知道为什么错,下次还会犯同样的错。即使是强大的 LLM,在复杂任务中也会犯错——代码有 bug、推理有漏洞、回答有偏差。如果 Agent 只是简单地"重试",没有总结失败原因,那么重试的结果很可能还是错的。

Reflexion 的核心思想是赋予 Agent 自我纠错的能力,关键在于"反思"这一步:

  1. 执行(Act):Agent 尝试完成任务,产生一个输出或行动。
  2. 评估(Evaluate):通过外部反馈(如编译器报错、测试用例结果、用户反馈)或自我评估,判断输出是否正确。
  3. 反思(Reflect):如果输出有误,Agent 不只是知道"错了",而是用自然语言总结"为什么错了"——"函数参数类型搞混了"、"边界条件没考虑到"、"搜索关键词太宽泛导致结果不相关"。
  4. 重试(Retry):带着反思总结重新尝试,这次有了前次失败的教训,成功率会显著提升。

这个 Act → Evaluate → Reflect → Retry 的循环可以反复进行,直到任务成功或达到最大重试次数。每一次反思都作为"语言记忆"累积下来,指导后续尝试。

与传统的强化学习(通过梯度更新参数来学习)不同,Reflexion 是通过自然语言反馈来改进——模型不变,但上下文中多了"上次失败的经验教训"。这种方式不需要重新训练模型,只需要在 prompt 中加入反思记录即可,工程上非常轻量。

流程图

flowchart TD
    A[接收任务] --> B[第1次尝试]
    B --> C[生成输出]
    C --> D{评估: 是否正确?}
    D -->|是| E[任务完成 ✓]
    D -->|否| F[反思: 分析失败原因]
    F --> G[记录经验教训]
    G --> H{重试次数<br/>是否超限?}
    H -->|否| I[第2次尝试<br/>带着反思经验]
    I --> C
    H -->|是| J[任务失败<br/>转人工处理]

    subgraph 反思记忆区
        K[第1次失败教训:<br/>参数类型搞混了]
        L[第2次失败教训:<br/>边界条件遗漏]
        M[累积的经验...]
    end

    G -.-> K
    K -.-> I

    style A fill:#e1f5fe,stroke:#0288d1
    style E fill:#c8e6c9,stroke:#388e3c
    style J fill:#ffcdd2,stroke:#c62828
    style F fill:#fff9c4,stroke:#f9a825
    style G fill:#fff9c4,stroke:#f9a825

场景示例

任务:帮我一封回复,客人说快递到的蛋糕盒子压坏了,要求退款。我们是手工蛋糕店,每个蛋糕都有配送保险。

Reflexion 过程

=== 第1次尝试 ===
生成的回复:
  "您好,非常抱歉给您带来不便。根据我们的配送保险条款,
   蛋糕在运输过程中损坏的情况,我们会全额退款。请您提供
   订单号和蛋糕的损坏照片,我们核实后立即处理。感谢您的理解。"

评估(客户视角):❌ 回复太机械、像模板——客人吃到的是情绪(生日的期待落空了),
               但回复里没有任何共情,冷冰冰地走流程。

=== 反思 ===
分析失败原因:只陈述了"理赔流程",完全没有回应客人的情绪。
客人买蛋糕不是为了被"流程处理",是为了体面地过生日。
教训:先共情 → 再承认失误 → 再给补偿 → 最后给承诺。

=== 第2次尝试(带着反思经验)===
生成的回复:
  "看到这个画面真的太心疼了!蛋糕是我们花了好几个小时亲手做的,
   寄出去的时候可是完完整整的——快递路上摔了一下,把您的惊喜
   都摔没了,这个确实是我们做得不够好。

   今年的生日蛋糕我们全额退款,钱会在 24 小时内原路退回。
   另外,下次您来订蛋糕,我们直接给您打 5 折,而且这次一定
   要求快递当面签收、开箱验货,不能再让这种事情发生了。

   希望没有太破坏您今天的心情,生日快乐呀 🎂"

评估:✅ 先共情("心疼")→ 归因但不推诿(快递问题但我们来赔)
     → 补偿超出预期(退款+下次五折)→ 流程改进承诺 → 祝福收尾
     有温度、有担当、有行动。

任务完成!

Reflexion 的价值在这里体现得非常直观——第 1 次和第 2 次的差距本质不是模型能力的问题,而是有了"上次太像机器客服了"这条反思经验后,模型知道自己问题在哪,下一次能定向改进。这种"语言记忆"的成本极低——不需要重新训练模型,只需要在 prompt 上下文里加上一行反思总结。

适用业务场景

  • 代码生成与自动修复:AI 编程助手生成代码后自动运行测试,如果报错则分析错误信息并修正。Cursor、Copilot 等 AI 编程工具的"自动修复"功能本质就是 Reflexion。在企业内部,可用于 CI/CD 流水线中的自动修复。
  • 文档写作与内容打磨:AI 写作后通过自评或他评发现不足(逻辑不连贯、论据不充分、语言不流畅),反思后修改优化。适用于技术文档、营销文案、报告的自动生成与迭代。
  • 数据分析与结果验证:Agent 完成数据分析后,检查结果是否合理(数据是否异常、结论是否站得住脚),如果发现问题则反思数据质量或分析方法,重新分析。
  • 流程执行与异常恢复:自动化流程执行中遇到异常,Agent 分析异常原因,调整策略后重试。比简单的"重试 3 次"智能得多,因为每次重试都带着对上次失败的理解。
  • 对话系统与客服:Agent 回答用户问题后,如果用户表示不满意或追问,Agent 反思"是不是我理解错了用户意图",调整理解后重新回答。

适用系统与集成方案

适配的系统类型

  • CI/CD 自动修复流水线:代码提交 → 自动构建 → 运行测试 → 测试失败?→ Reflexion Agent 分析报错原因 → 生成修复补丁 → 自动提交修复代码 → 重新构建。整个过程开发者只需要在 MR 里看到"自动修复了 3 个测试问题,请确认"。
  • AI 写作与内容优化平台:用户说"这篇文案不太满意,太官方了"→ Reflexion 不是简单地"重新写一遍",而是分析"哪里太官方"(用词?句式?语气?),带着具体改进方向定向优化。每一轮修改都有明确的改进锚点,而不是随机重写。
  • 自动化测试生成平台:Agent 为一段代码生成单元测试 → 跑测试 → 发现覆盖率只有 65% → 反思"哪些分支没覆盖到"→ 补充边界条件和异常路径的测试用例 → 再跑 → 覆盖率达到 90%。
  • 智能客服质检系统:客服 Agent 回复工单后 → 质检 Agent 评估回复质量 → 不合格 → 反思"具体哪里有问题"(态度不够好?没解决根本问题?给了错误信息?)→ 修正后重新回复,避免"换个说法重说一遍"的敷衍。

系统集成方式

flowchart TD
    A[任务输入] --> B[执行器]
    B --> C[输出结果]
    C --> D{评估器判断}
    D -->|通过| E[任务完成]
    D -->|不通过| F[Reflexion 反思引擎]
    F --> G[生成反思教训]
    G --> H[(教训存储<br/>向量库 / 缓存)]
    H --> I[带反思重试]
    I --> B

    style F fill:#fff9c4,stroke:#f9a825
    style H fill:#f3e5f5,stroke:#7b1fa2
    style E fill:#c8e6c9,stroke:#388e3c

集成要点

  1. 没有好的评估器,Reflexion 就是在瞎反思:Reflexion 的有效性完全取决于评估器质量。不同场景需要不同评估器:代码场景用测试用例结果;写作场景用 LLM 自评 + 人工打分;运维场景用监控指标和 SLA。先打磨评估器,再谈 Reflexion。
  2. 教训必须可积累、可复用:不要把反思只存在单次对话的上下文里。把历史教训存入向量数据库,后续类似任务可以检索相关教训。"上次写 SQL 没加索引导致慢查询"这条教训,一个月后生成新 SQL 时仍能被检索到并避免。
  3. 设定硬性停止条件:避免无限反思循环。设置"最大反思次数"(通常 3~5 次就够)和"反思质量下降阈值"——如果连续两次反思内容高度重复,说明到了能力天花板,停止并转人工处理。

七、Role-playing Agents(角色扮演 / 多智能体协作)

提出背景

角色扮演式智能体的概念源自 AutoGPT、ChatDev、CAMEL 等社区项目。这些项目的共同特点是:不再使用单一 Agent 完成所有工作,而是引入多个具有不同角色和职责的 Agent,通过对话协作来完成复杂任务。CAMEL(Communicative Agents Mind Exploration)论文首次系统性地研究了多智能体角色扮演的通信机制;ChatDev 将其应用于软件开发流程;AutoGPT 则展示了自主多步骤执行的雏形。

核心思想

单一 Agent 再强大,也有认知边界——它难以同时扮演产品经理、程序员、测试工程师、设计师等多种角色,因为每种角色有不同的思维模式、关注点和专业语言。

Role-playing Agents 的核心思想是:把任务拆分给不同角色的 Agent,每个 Agent 都有专属职责,通过对话协作完成任务。具体来说:

  1. 角色定义:为每个 Agent 分配一个明确的角色(Persona),包括它的职责、专业领域、行为准则和输出格式。比如"你是一个资深 Java 后端工程师,专注于系统架构设计,你的输出必须是技术方案文档"。
  2. 任务分配:将复杂任务分解为各角色负责的子任务。每个 Agent 只负责自己擅长的部分。
  3. 对话协作:Agent 之间通过结构化对话进行协作。一个 Agent 的输出成为另一个 Agent 的输入,形成协作链条。比如产品经理 Agent 输出需求文档 → 程序员 Agent 根据需求写代码 → 测试 Agent 根据需求和代码写测试用例 → 代码审查 Agent 审查代码质量。
  4. 反馈循环:下游 Agent 可以对上游 Agent 的输出提出反馈。测试 Agent 发现需求不清晰时,可以"追问"产品经理 Agent;代码审查 Agent 发现设计问题时,可以"建议"程序员 Agent 修改。

这种模式的核心价值在于专业分工视角多样性。每个 Agent 在自己的角色框架内"思考",产生更专业、更聚焦的输出;不同角色之间的碰撞和校验,也比单一 Agent 自我检查更容易发现问题。

流程图

flowchart TD
    A[用户下达复杂任务] --> B[产品经理 Agent]
    B -->|需求文档| C[架构师 Agent]
    C -->|技术方案| D[程序员 Agent]
    D -->|代码实现| E[测试 Agent]
    E -->|测试用例 + 测试结果| F{是否通过?}
    F -->|否| G[代码审查 Agent]
    G -->|修改建议| D
    F -->|是| H[交付完成]

    E -.->|需求疑问| B
    G -.->|架构建议| C

    subgraph 多智能体协作团队
        B
        C
        D
        E
        G
    end

    style A fill:#e1f5fe,stroke:#0288d1
    style H fill:#c8e6c9,stroke:#388e3c
    style B fill:#fff9c4,stroke:#f9a825
    style C fill:#fff9c4,stroke:#f9a825
    style D fill:#fff9c4,stroke:#f9a825
    style E fill:#fff9c4,stroke:#f9a825
    style G fill:#fff9c4,stroke:#f9a825

场景示例

任务:为公司的新智能手环产品策划一场线上发布会

多智能体协作过程

【品牌策划 Agent】
  输出发布会定位方案:
  - 主题:"你的第一块健康管家"——走亲民科技路线,不讲参数,讲生活
  - 调性:温暖、可靠、像朋友的关心
  - 目标人群:25-35 岁城市白领,关注睡眠和运动但不想太专业
  - 核心故事线:一个普通上班族的健康 24 小时

      ↓ 传递策划方案

【内容文案 Agent】
  根据定位输出文案和脚本:
  - 开场视频脚本:凌晨 6 点闹钟响 → 手环记录睡眠质量 ⭐⭐⭐⭐
    通勤路上久坐提醒 → 午休血氧监测 → 下班跑步心率区间 → 睡觉呼吸检测
  - 产品介绍页文案:5 大健康功能,3 句讲清楚,不堆参数
  - 结尾 call to action:"今天下单,前 1000 名送定制表带"

      ↓ 传递文案脚本

【视觉设计 Agent】
  根据文案输出视觉方案:
  - 主色调:暖橙 + 深蓝(温暖 × 科技感)
  - 主 KV 设计稿:手环特写 + "看得见的好睡眠"文案
  - 产品页排版:每屏只讲一个功能,大留白,大字情感文案
  - 倒计时海报 3 张(发布会前 3 天/1 天/当天)
  → 提出疑问:"24 小时故事线能不能多给一个周末版本?
     工作日和周末的节奏差别很大,两个版本更打动人"

      ↓ 反馈给内容文案 Agent

【内容文案 Agent】
  收到设计师建议后补充:
  - 增加"周六版本"故事线:睡到自然醒 → 晨跑推荐路线 → 朋友聚餐卡路里统计
  - 继续保留"工作日版本"让目标用户二选一,A/B 测试

      ↓ 更新后的文案给各个 Agent

【数据分析 Agent】
  根据历史发布会数据提供建议:
  - 建议发布时间:周四晚 8 点(过去 8 场发布会中转化率最高时段)
  - 预告周期:7 天(倒计时太长流失关注,太短蓄水不足)
  - 定价策略:首发价 299,对比同类产品 349-399,有价格冲击力

      ↓ 反馈给品牌策划和内容文案

【品牌策划 Agent】
  综合所有意见,输出最终《发布会执行手册》:
  包含主题、时间线、文案脚本、视觉素材清单、投放渠道、数据监测指标

【交付完成】

这个场景展示了多智能体协作的精华——不是让一个大模型"想完所有这些",而是让擅长品牌的人想 slogan、擅长写字的人写文案、擅长做图的人出视觉、擅长数据的人给策略。而且设计师可以对文案提出改进建议("多加一个周末版本"),数据 Agent 可以纠正发布时间——这种跨角色的碰撞和反馈,单一 Agent 很难做到。

适用业务场景

  • 软件开发全流程:从需求分析到设计、开发、测试、代码审查的完整软件生命周期。ChatDev 等项目已经证明多智能体可以完成一个简单软件项目的全流程。企业内部可用于辅助开发流程,提升各环节效率。
  • 内容创作团队:模拟编辑部协作——策划 Agent 定选题、调研 Agent 收集素材、写作 Agent 撰写初稿、编辑 Agent 审校润色、SEO Agent 优化关键词。适用于媒体运营、技术博客、营销内容批量生产。
  • 投资研究与决策:宏观分析师 Agent 研究经济趋势、行业分析师 Agent 分析赛道、财务分析师 Agent 评估财报、风控 Agent 评估风险,最后由投资决策 Agent 综合各方意见给出建议。
  • 跨职能项目协同:大型项目中涉及产品、技术、运营、法务、财务多个职能的协同。每个职能由专门的 Agent 负责,模拟真实的项目协作流程。
  • 教育与培训模拟:模拟案例教学——教师 Agent 提出问题、学生 Agent 尝试回答、点评 Agent 给出反馈。也可以模拟商务谈判、面试等场景,由不同角色 Agent 扮演不同立场。

适用系统与集成方案

适配的系统类型

  • 软件开发协作平台(ChatDev 模式):产品经理 Agent 写 PRD → 架构师 Agent 出技术方案 → 程序员 Agent 写代码 → 测试 Agent 跑测试 → 审查 Agent 审代码。整个软件开发流水线由多 Agent 协作完成,人类开发者只需要在关键节点审核和确认。
  • 内容生产流水线(自媒体矩阵):选题 Agent 抓热点 → 调研 Agent 收集素材 → 写作 Agent 生成初稿 → 编辑 Agent 润色 → SEO Agent 优化标题和关键词 → 发布 Agent 定时推送到各平台。每天自动产出经过多角色打磨的稿件。
  • 投资研究决策系统:宏观分析 Agent 研究经济周期 → 行业分析 Agent 评估赛道景气度 → 财务分析 Agent 拆解目标公司财报 → 风控 Agent 评估下行风险 → 决策 Agent 综合各方意见给出投资建议,附带分歧点和置信度。
  • 企业跨部门协同平台:大型项目需要产品、技术、运营、法务、财务多方协同。每个部门用专属 Agent 代表,法务 Agent 审查合规风险 → 财务 Agent 算预算 → 产品 Agent 调整方案——模拟真实跨部门协作的链条。

系统集成方式

flowchart TD
    A[任务入口] --> B[任务分配器<br/>Orchestrator]
    B --> C1[Agent 1: 产品经理<br/>Prompt + 工具集]
    B --> C2[Agent 2: 架构师<br/>Prompt + 工具集]
    B --> C3[Agent 3: 开发<br/>Prompt + 工具集]
    B --> C4[Agent 4: 测试<br/>Prompt + 工具集]

    C1 --> D[消息总线 / 事件驱动]
    C2 --> D
    C3 --> D
    C4 --> D

    D --> E[协作编排引擎]
    E --> F{流程控制}
    F -->|触发下一步| C1 & C2 & C3 & C4
    F -->|流程结束| G[交付物组装]

    style B fill:#fff9c4,stroke:#f9a825
    style D fill:#f3e5f5,stroke:#7b1fa2
    style G fill:#c8e6c9,stroke:#388e3c

集成要点

  1. 角色定义是门槛,写好 Prompt 才算开始:每个 Agent 的 Prompt 需要包含四个核心要素——"角色定位、职责范围、输出格式、协作规则"。"你是资深产品经理"是定位,"只输出 PRD 文档(Markdown 格式)"是输出格式,"不写代码,但可以验收开发交付物"是协作规则。少了任何一项,Agent 就会越界。
  2. 协作流程需要状态机兜底:多 Agent 协作不是"大家随便聊",而是有清晰的状态流转。实现方式:用编排引擎(Orchestrator)管理状态机——"产品经理输出 → 自动触发架构师 → 架构师输出 → 自动触发开发 → 开发输出 → 触发测试 → 测试失败 → 回退到开发"。没有状态机,多 Agent 就是一群没指挥的散兵。
  3. Agent 间传递的是交付物,不是聊天记录:用文件或数据库记录做中间存储——产品经理输出的 PRD 存为一个文档记录,架构师读取该记录后产出技术方案文档。不要把整个对话历史堆在 prompt 上下文里,否则 Token 消耗很快失控。
  4. 人机协作是落地红线:不要试图让多 Agent 全自动跑完整条流水线。在关键节点设置人工审核卡点——"产品经理 Agent 的 PRD,需要人类产品经理确认后才进入架构师环节"。这是企业级多 Agent 系统在生产环境中稳定运行的核心原则。

模式对比与混合使用

七种模式并非互斥,实际应用中常常组合使用。以下是常见的组合策略:

flowchart LR
    subgraph 简单推理
        A1[CoT]
    end

    subgraph 信息检索
        B1[Self-Ask] --> B2[+ 搜索引擎]
    end

    subgraph 工具调用
        C1[ReAct] --> C2[CoT 作为 Thought 引擎]
    end

    subgraph 复杂任务
        D1[Plan-and-Execute] --> D2[每个子任务用 ReAct]
        D2 --> D3[失败时用 Reflexion]
    end

    subgraph 深度探索
        E1[ToT] --> E2[每个分支用 CoT]
    end

    subgraph 团队协作
        F1[Role-playing] --> F2[每个角色用 ReAct]
        F2 --> F3[角色间用 Reflexion 互审]
    end

    style A1 fill:#c8e6c9,stroke:#388e3c
    style B1 fill:#c8e6c9,stroke:#388e3c
    style C1 fill:#c8e6c9,stroke:#388e3c
    style D1 fill:#c8e6c9,stroke:#388e3c
    style E1 fill:#c8e6c9,stroke:#388e3c
    style F1 fill:#c8e6c9,stroke:#388e3c

选型决策参考

你的场景推荐模式理由
数学计算、逻辑推理CoT线性推理足够,简单高效
多跳事实查询Self-Ask自动拆解问题,配合检索
需要调用工具/APIReAct推理+行动闭环,动态决策
多步骤长任务Plan-and-Execute先规划全局,再逐步执行
解谜/复杂规划ToT多分支探索,评估择优
需要自我纠错Reflexion反思失败原因,迭代改进
跨职能复杂项目Role-playing专业分工,多视角协作
都需要?混合使用Plan-and-Execute 做骨架,ReAct 做执行,Reflexion 做兜底,Role-playing 做分工

框架支持现状

这些设计模式已经被主流 Agent 开发框架广泛内置:

flowchart TD
    subgraph Agent 开发框架
        L1[LangChain / LangChain4j]
        L2[LlamaIndex]
        L3[Dify]
        L4[Spring AI Alibaba]
        L5[Google ADK]
    end

    subgraph 内置模式支持
        M1[ReAct - 基础执行范式]
        M2[Plan-and-Execute - 任务规划]
        M3[Reflexion - 重试与纠错]
        M4[Role-playing - 多智能体]
        M5[CoT - 推理增强]
    end

    L1 --> M1
    L1 --> M2
    L1 --> M3
    L1 --> M4
    L2 --> M1
    L2 --> M5
    L3 --> M1
    L3 --> M2
    L4 --> M1
    L4 --> M4
    L5 --> M1
    L5 --> M4

    style M1 fill:#c8e6c9,stroke:#388e3c
    style M2 fill:#fff9c4,stroke:#f9a825
    style M3 fill:#fff9c4,stroke:#f9a825
    style M4 fill:#fff9c4,stroke:#f9a825
    style M5 fill:#e1f5fe,stroke:#0288d1
  • ReAct 已成为几乎所有框架的基础执行范式,是 Agent 的"操作系统"。
  • Plan-and-Execute 在 LangChain 中有专门实现(Plan-and-Execute Agent)。
  • Reflexion 的思想融入了各框架的重试机制和错误处理逻辑中。
  • Role-playing / Multi-Agent 在 LangGraph、Spring AI Alibaba 的多智能体模块中有直接支持。
  • CoT 通常作为 prompt 工程的一部分,不需要框架层面的特殊支持。

理解这些底层模式,能帮助开发者在框架选型时做出更准确的判断——不是看框架"支持多少功能",而是看它"如何实现了这些认知模式",以及哪种实现方式最适合你的业务场景。


总结一句话:CoT 一步步写过程,Self-Ask 拆成小问题,ReAct 既思考也动手,Plan-Execute 先计划再执行,ToT 树状多分支探索,Reflexion 自我反思迭代,Role-playing 多人协作分工。它们构成了 Agent 世界的思维模式库,混搭使用,威力最大。