Skip to content

Agent 的运行模式

一、概述

"Agent(智能体)"并非单一形态,而是一条从"确定式编排"到"自主式决策"的谱系。同样是"LLM + 工具",运行模式不同,系统的可控性、成本、延迟、可预测性差异巨大。

理解运行模式的关键,是先看清它们的共性底座,再按"谁来决定下一步做什么"来区分。

基础构建块:增强型 LLM(Augmented LLM)

无论哪种模式,底层都是同一个单元:LLM + 工具调用(Tool)+ 记忆(Memory)+ 检索(RAG)

  • 工具:查天气、读文件、调 API……
  • 记忆:保存对话/任务状态
  • 检索:从知识库取资料

模式的不同,本质是**"控制流由谁掌控"**:

  • 工作流(Workflow):控制流由开发者预定义的代码决定(LLM 只在某些节点做判断)。
  • 智能体(Agent):控制流由 LLM 自身动态决定(下一步调哪个工具、循环几次,模型说了算)。

二、多种运行模式拆解

(一)工作流模式(Workflow,确定性编排)

LLM 和工具被写死的代码路径串起来,流程可预测、易调试,适合步骤明确的任务。

1. Prompt 链(Prompt Chaining)

把一个任务拆成顺序子任务,上一步输出作为下一步输入。

任务 → [LLM 步骤1] → 中间结果 → [LLM 步骤2] → ... → 最终输出
  • 适用:有明确先后依赖的多阶段处理(如 先提取 → 再翻译 → 再总结)。
  • 优点:简单、可控;可在中间加校验/人工卡点。

2. 路由(Routing)

LLM 先分类/判断输入,再分流到不同下游处理分支。

输入 → [LLM 分类] → 分支A / 分支B / 分支C
  • 适用:请求类型多样且处理方式不同(如 售后/技术/账单 分派不同专家提示)。
  • 优点:针对性强,避免用一套提示处理所有事。

3. 并行化(Parallelization)

把任务同时发给多个 LLM 调用,再聚合结果。

  • 分片并行:同一任务拆成多份并发处理(提速)。
  • 投票/评审并行:同一任务多次独立执行,用投票或汇总提高质量。
输入 → ┬→ [LLM 副本1] ┐
       ├→ [LLM 副本2] ┼→ 聚合
       └→ [LLM 副本3] ┘
  • 适用:无依赖的子任务、需要多角度评审(如 安全/质量/合规三路并行检查)。

4. 编排者-工作者(Orchestrator-Workers)

一个编排者 LLM 动态拆解任务,把子任务分发给多个工作者 LLM,再汇总。

   [编排者 LLM] 拆解任务
      ├→ 工作者A(写代码)
      ├→ 工作者B(查资料)
      └→ 工作者C(测试)
         ↓ 汇总
      [编排者 合成结果]
  • 适用:无法预先知道子任务划分的复杂任务(如 一个需求拆成多模块开发)。

5. 评估者-优化者(Evaluator-Optimizer)

一个 LLM 生成,另一个 LLM 评估反馈,循环迭代直到达标。

[生成者] → 产物 → [评估者 给反馈] → 回到生成者改进 → ... → 通过
  • 适用:有清晰评判标准、可迭代优化的任务(如 代码优化、文案润色)。

(二)智能体模式(Agent,动态自主)

LLM 自行决定控制流:根据观察结果决定下一步调什么工具、是否继续循环,直到任务完成。最典型的是 ReAct 范式。

6. ReAct(推理 + 行动)

模型交替进行思考(Thought)→ 行动(Action/调工具)→ 观察(Observation),循环直至给出答案。

Thought: 我需要先查天气
Action: call WeatherTool("北京")
Observation: 晴, 25℃
Thought: 信息够了,可以回答
Answer: 北京今天晴...
  • 适用:需多步工具调用、路径不固定的开放式任务。
  • 优点:灵活、能处理意外;缺点:可能循环过多、成本/延迟不可控。

7. Plan-and-Execute(规划后执行)

先由 LLM 一次性规划出完整步骤,再逐步执行(执行中可微调)。

规划者 LLM: [步骤1][步骤2][步骤3]  →  执行者依次完成(可调用工具)
  • 与 ReAct 区别:ReAct 是"走一步看一步",Plan-and-Execute 是"先画全局地图再走"。
  • 适用:步骤可预估、希望减少无效探索的任务;常配合子 Agent 执行。

8. Reflection(反思 / 自省)

生成后让模型自我批评/复盘,基于反思改进产物,可多轮。

生成初稿 → 反思(哪里不对) → 修订 → 再反思 → 终稿
  • 可视为 Evaluator-Optimizer 的"自我版"(同一个模型既生成又评估)。
  • 适用:写作、方案设计等需要打磨质量的场景。

9. 多智能体协作(Multi-Agent)

多个角色不同的 Agent 互相通信、分工或辩论,共同完成目标。

[产品经理 Agent] ⇄ [工程师 Agent] ⇄ [测试 Agent]
       通过共享消息总线协作
  • 形态:分工协作、对抗辩论(如 红队/蓝队)、评审委员会。
  • 适用:复杂项目、需要多角度碰撞(如 自动软件开发团队)。

10. 人机协同(Human-in-the-Loop, HITL)

在关键节点暂停等待人类确认/输入,再继续。

Agent 执行 → 遇到高风险操作 → 请求人工批准 → 人工确认 → 继续
  • 不是独立模式,而是叠加在上述任意模式上的安全护栏
  • 适用:涉及资金、删除、外发等不可逆/高风险动作。

三、运行模式对比表

模式控制流自主性可预测性成本/延迟适用场景
Prompt 链代码固定顺序多阶段线性任务
路由代码分支请求分类型处理
并行化代码并发中(并发)无依赖子任务/多评审
编排者-工作者编排者动态拆中高复杂不可预拆分任务
评估者-优化者代码循环中高可迭代优化任务
ReActLLM 动态高(易失控)开放式多步任务
Plan-and-ExecuteLLM 规划+执行步骤可预估的复杂任务
ReflectionLLM 自省循环中高需打磨质量的生成
多智能体多 LLM 协商大型协作项目
人机协同(HITL)叠加式可控取决于人高风险操作

维度说明:自主性越高越灵活但越难预测;可预测性越高越易调试与保障;二者通常此消彼长。


四、选型建议

  1. 能用工作流就别用 Agent:Anthropic 的经典建议——多数场景用确定性工作流即可,简单、便宜、可控;只有当任务路径无法预先写死时才上自主 Agent。
  2. 从简单到复杂演进
    • 步骤固定 → Prompt 链 / 路由
    • 需多视角 → 并行化
    • 子任务未知 → 编排者-工作者
    • 需打磨 → 评估者-优化者 / Reflection
    • 真正开放多步 → ReAct / 多智能体
  3. 永远保留护栏:无论哪种模式,涉及高风险动作都叠加 Human-in-the-Loop工具权限最小化
  4. 可观测性优先:自主模式必须记录每步的 Thought/Action/Observation,否则出了问题无法排查。

记忆口诀:工作流是"代码定路线",Agent 是"模型自己走";越自主越灵活也越难控,能确定性编排就别上自主。


五、Agent Skill(智能体技能)

1. 什么是 Agent Skill

Agent Skill(智能体技能) 是为 Agent 预置的、封装好的专用能力包:把某个领域的知识、标准操作流程(SOP)、可调用的工具/脚本打包在一起,让 Agent 在该领域像"受过培训的专家"一样工作。

  • 类比:Agent 是通才员工,Skill 是上岗培训手册 + 专用工具箱
  • 与"运行模式"的关系:运行模式解决"怎么干活(控制流)",Skill 解决"按什么套路干(领域专长)"。二者正交——任何运行模式(ReAct、Plan-and-Execute…)都能加载任意 Skill。

2. 为什么需要 Skill

痛点Skill 的解法
每次都要在 Prompt 里重复写领域规范,Prompt 越来越长规范固化进 Skill,用时才注入,省 Token
不同任务质量参差不齐,依赖临场发挥Skill 提供标准化 SOP,输出更稳更可复现
专家经验难以复用一次封装,多人/多 Agent 共享
复杂任务易漏步骤Skill 显式列出检查清单/步骤

3. Skill 通常包含什么

  • 领域知识:术语、约定、最佳实践(如某框架的编码规范)。
  • SOP / 步骤清单:标准操作流程(先做什么、后做什么、注意什么)。
  • 工具与脚本:可执行的命令、脚本、或绑定的 MCP 工具。
  • 触发条件:什么意图下该激活此 Skill(关键词、任务类型)。
  • 输出模板:期望的产物格式(如报告结构、提交信息格式)。

4. Skill 与 Tool / MCP 的区别

概念粒度角色
Tool(工具)原子能力"手"——查天气、读文件等单个动作
MCP协议统一连接 Tool 的"接口标准"(USB-C)
Agent Skill编排好的工作流"专家套路"——把多个 Tool + 知识 + SOP 组合成一套打法

一句话:Tool 是积木,Skill 是用积木搭好的"成品模型";MCP 是积木的通用接口。

5. 触发与加载机制

  • 自动触发:Agent 识别用户意图匹配某 Skill 时,自动将其指令注入 Context(进入系统/用户提示),指导后续行为。
  • 显式调用:用户或编排者直接指定"使用 XX 技能"。
  • 按需卸载:任务完成后 Skill 指令退出上下文,避免长期占用窗口、干扰其他任务。
  • 关键点:Skill 本质是动态注入的上下文 + 可调用资源,不改变模型本身,也不改变运行模式。

6. Skill 如何与运行模式结合

ReAct 为例,加载"代码审查 Skill"后循环变为:

Thought: 用户要我审这段代码,先加载代码审查 Skill 的清单
Action: 按 SOP 步骤1——检查空值/异常处理
Observation: 发现第 12 行未处理 null
Thought: 继续步骤2——检查并发安全
...
Answer: 附修复建议的审查报告(按 Skill 模板输出)

即:运行模式提供"循环引擎",Skill 提供"领域驾驶手册"。

7. 常见 Skill 示例

  • 代码审查 Skill:按清单检查空指针、并发、安全、命名,输出结构化报告。
  • 架构图绘制 Skill:调用 drawio/Mermaid 工具,按规范生成图示。
  • 周报生成 Skill:聚合 Git 提交/任务系统数据,套模板生成周报。
  • SQL 优化 Skill:结合执行计划分析,给出索引/改写建议。

8. 最佳实践

  1. 单一职责:一个 Skill 解决一类明确任务,避免大而全。
  2. SOP 可验证:步骤尽量可机器检查,而非仅靠模型"自觉"。
  3. 与 Tool/MCP 解耦:Skill 调用底层 Tool,但不把 Tool 实现细节写死。
  4. 控制注入体积:只注入当前任务需要的 Skill,保护 Context Window。
  5. 可版本化:Skill 当作代码管理,便于迭代与回滚。

记忆口诀:Tool 是手,MCP 是接口,Skill 是专家套路;运行模式管"怎么走",Skill 管"按啥走"。

最近更新