Appearance
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 链 | 代码固定顺序 | 低 | 高 | 低 | 多阶段线性任务 |
| 路由 | 代码分支 | 低 | 高 | 低 | 请求分类型处理 |
| 并行化 | 代码并发 | 低 | 高 | 中(并发) | 无依赖子任务/多评审 |
| 编排者-工作者 | 编排者动态拆 | 中 | 中 | 中高 | 复杂不可预拆分任务 |
| 评估者-优化者 | 代码循环 | 中 | 中 | 中高 | 可迭代优化任务 |
| ReAct | LLM 动态 | 高 | 低 | 高(易失控) | 开放式多步任务 |
| Plan-and-Execute | LLM 规划+执行 | 高 | 中 | 中 | 步骤可预估的复杂任务 |
| Reflection | LLM 自省循环 | 高 | 中 | 中高 | 需打磨质量的生成 |
| 多智能体 | 多 LLM 协商 | 高 | 低 | 高 | 大型协作项目 |
| 人机协同(HITL) | 叠加式 | 可控 | 高 | 取决于人 | 高风险操作 |
维度说明:自主性越高越灵活但越难预测;可预测性越高越易调试与保障;二者通常此消彼长。
四、选型建议
- 能用工作流就别用 Agent:Anthropic 的经典建议——多数场景用确定性工作流即可,简单、便宜、可控;只有当任务路径无法预先写死时才上自主 Agent。
- 从简单到复杂演进:
- 步骤固定 → Prompt 链 / 路由
- 需多视角 → 并行化
- 子任务未知 → 编排者-工作者
- 需打磨 → 评估者-优化者 / Reflection
- 真正开放多步 → ReAct / 多智能体
- 永远保留护栏:无论哪种模式,涉及高风险动作都叠加 Human-in-the-Loop 与工具权限最小化。
- 可观测性优先:自主模式必须记录每步的 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. 最佳实践
- 单一职责:一个 Skill 解决一类明确任务,避免大而全。
- SOP 可验证:步骤尽量可机器检查,而非仅靠模型"自觉"。
- 与 Tool/MCP 解耦:Skill 调用底层 Tool,但不把 Tool 实现细节写死。
- 控制注入体积:只注入当前任务需要的 Skill,保护 Context Window。
- 可版本化:Skill 当作代码管理,便于迭代与回滚。
记忆口诀:Tool 是手,MCP 是接口,Skill 是专家套路;运行模式管"怎么走",Skill 管"按啥走"。