架构设计模式
概述
智能体架构设计模式是经过实践验证的架构组织方案。从经典的感知-规划-执行(Sense-Plan-Act)到 Brooks 的包容架构,再到现代 LLM 智能体的编排模式,本文梳理智能体架构设计的关键模式及其适用场景。
1. 经典架构模式
1.1 感知-规划-执行 (Sense-Plan-Act, SPA)
最早也最直觉的智能体架构模式:
graph LR
S[感知<br/>Sense] --> P[规划<br/>Plan]
P --> A[执行<br/>Act]
A --> ENV[环境]
ENV --> S
特点:
- 顺序执行:先完整感知,再完整规划,最后执行
- 假设世界在规划期间不变(静态环境假设)
- 代表:Shakey 机器人、STRIPS 规划器
优点:架构清晰、易于实现
缺点: - 规划时间长,无法实时响应 - 静态环境假设在现实中经常不成立 - 感知、规划、执行之间缺乏反馈
1.2 包容架构 (Subsumption Architecture)
Rodney Brooks (1986) 提出的行为主义架构,彻底摒弃了内部表征:
┌──────────────────────────────────┐
│ Layer 3: 探索行为 (Explore) │ ← 高层行为
├──────────────────────────────────┤
│ Layer 2: 漫游行为 (Wander) │
├──────────────────────────────────┤
│ Layer 1: 避障行为 (Avoid) │
├──────────────────────────────────┤
│ Layer 0: 移动行为 (Move) │ ← 低层行为
└──────────────────────────────────┘
↑ 传感器输入 ↓ 执行器输出
核心原则:
- 层叠抑制:高层行为可以抑制(subsume)低层行为的输出
- 无中央控制:每一层独立运行,无需中央规划器
- 世界是最好的模型:不需要内部世界模型
优点:实时响应、鲁棒性强、适合动态环境
缺点:难以实现复杂目标导向行为、可扩展性差
1.3 分层架构 (Layered Architecture)
结合 SPA 和包容架构的优点:
graph TD
subgraph 三层架构
L3[慎思层<br/>Deliberative Layer<br/>长期规划、目标推理]
L2[序列层<br/>Sequencing Layer<br/>短期计划、协调]
L1[反应层<br/>Reactive Layer<br/>即时响应、紧急行为]
end
ENV[环境] --> L1
ENV --> L2
ENV --> L3
L3 --> L2
L2 --> L1
L1 --> ENV
代表架构:
| 架构 | 层数 | 特点 |
|---|---|---|
| InteRRaP | 3层 | 合作规划层 + 局部规划层 + 行为层 |
| TouringMachines | 3层 | 建模层 + 规划层 + 反应层 + 控制框架 |
| ATLANTIS | 3层 | 顾问层 + 规划层 + 反应层 |
1.4 黑板架构 (Blackboard Architecture)
多个知识源通过共享数据结构(黑板)协作:
graph LR
subgraph 知识源
KS1[知识源 1<br/>语音识别]
KS2[知识源 2<br/>语法分析]
KS3[知识源 3<br/>语义理解]
KS4[知识源 4<br/>上下文推理]
end
BB[黑板<br/>共享数据结构]
CTRL[控制器<br/>调度器]
KS1 <--> BB
KS2 <--> BB
KS3 <--> BB
KS4 <--> BB
CTRL --> BB
特点:
- 各知识源独立运行,通过黑板通信
- 控制器决定哪个知识源在何时运行
- 适合需要多种专业知识协作的问题
- 代表:Hearsay-II 语音理解系统
2. 现代 LLM 智能体架构模式
2.1 增强 LLM (Augmented LLM)
最简单的模式:LLM + 检索/工具,无自主循环。
graph LR
U[用户] --> LLM[LLM]
LLM --> |需要检索| RAG[检索系统]
RAG --> LLM
LLM --> |需要工具| TOOL[工具]
TOOL --> LLM
LLM --> R[回复]
适用场景:简单问答、单步工具调用
示例:带搜索的聊天机器人
2.2 ReAct 循环 (ReAct Loop)
思考-行动-观察的迭代循环:
graph TD
START[任务] --> THINK[Thought<br/>思考当前情况]
THINK --> ACT[Action<br/>选择并执行动作]
ACT --> OBS[Observation<br/>观察执行结果]
OBS --> CHECK{任务完成?}
CHECK -->|否| THINK
CHECK -->|是| END[最终答案]
适用场景:需要多步推理和工具使用的任务
关键设计决策:
- 思考的格式(自由文本 vs 结构化)
- 动作空间的定义
- 终止条件
- 最大迭代次数
2.3 计划-执行 (Plan-and-Execute)
先制定完整计划,再逐步执行:
graph TD
TASK[任务] --> PLAN[规划器 LLM<br/>生成步骤列表]
PLAN --> S1[步骤 1]
S1 --> EXEC1[执行器 LLM<br/>执行步骤 1]
EXEC1 --> S2[步骤 2]
S2 --> EXEC2[执行器 LLM<br/>执行步骤 2]
EXEC2 --> S3[步骤 N]
S3 --> EXECN[执行器 LLM<br/>执行步骤 N]
EXECN --> CHECK{需要重规划?}
CHECK -->|是| PLAN
CHECK -->|否| DONE[完成]
适用场景:复杂任务需要明确的步骤分解
优势: - 使用小模型做执行、大模型做规划,节省成本 - 步骤可见,便于调试和监控 - 支持动态重规划
2.4 路由器 (Router)
根据输入分发到不同的处理流:
graph TD
INPUT[用户输入] --> ROUTER[路由器 LLM<br/>分类判断]
ROUTER -->|代码问题| CODE[代码助手]
ROUTER -->|数据分析| DATA[数据分析师]
ROUTER -->|文档写作| WRITE[写作助手]
ROUTER -->|简单问答| QA[直接回答]
适用场景:多类型输入需要不同处理策略
2.5 编排者-工作者 (Orchestrator-Worker)
中心编排者动态分配任务给专门的工作者:
graph TD
TASK[复杂任务] --> ORCH[编排者 LLM<br/>分解 + 分配 + 汇总]
ORCH --> W1[工作者 1<br/>子任务 A]
ORCH --> W2[工作者 2<br/>子任务 B]
ORCH --> W3[工作者 3<br/>子任务 C]
W1 --> ORCH
W2 --> ORCH
W3 --> ORCH
ORCH --> RESULT[汇总结果]
适用场景:复杂任务需要多种能力协同
与多智能体的区别:编排者是固定的控制中心,工作者无自主决策能力。
2.6 评估-优化 (Evaluator-Optimizer)
生成者和评估者交替工作:
graph TD
TASK[任务] --> GEN[生成器 LLM<br/>生成初始方案]
GEN --> EVAL[评估器 LLM<br/>评估并反馈]
EVAL --> CHECK{达到标准?}
CHECK -->|否| REFINE[优化器 LLM<br/>根据反馈改进]
REFINE --> EVAL
CHECK -->|是| DONE[输出最终方案]
适用场景:有明确质量标准的生成任务(代码、文案、翻译等)
3. 架构模式对比与选型
3.1 复杂度 vs 能力矩阵
| 模式 | 实现复杂度 | 任务复杂度 | LLM 调用次数 | 延迟 | 可控性 |
|---|---|---|---|---|---|
| 增强 LLM | 低 | 低 | 1 | 低 | 高 |
| ReAct 循环 | 中 | 中 | 3-10 | 中 | 中 |
| 计划-执行 | 中 | 中-高 | 5-20 | 中-高 | 高 |
| 路由器 | 低 | 多类型 | 2+ | 低 | 高 |
| 编排-工作者 | 高 | 高 | 10-50 | 高 | 中 |
| 评估-优化 | 中 | 质量敏感 | 3-10 | 中 | 高 |
| 自主循环 | 高 | 开放式 | 10-100+ | 高 | 低 |
3.2 选型决策树
graph TD
START[你的任务] --> Q1{单步可完成?}
Q1 -->|是| AUG[增强 LLM]
Q1 -->|否| Q2{步骤可预定义?}
Q2 -->|是| PE[计划-执行]
Q2 -->|否| Q3{需要多种能力?}
Q3 -->|是| Q4{子任务独立?}
Q4 -->|是| OW[编排-工作者]
Q4 -->|否| REACT[ReAct 循环]
Q3 -->|否| Q5{需要高质量输出?}
Q5 -->|是| EO[评估-优化]
Q5 -->|否| REACT
4. 设计原则
4.1 Anthropic 的设计原则
基于《Building Effective Agents》总结:
- 保持简单:能用简单模式解决的不用复杂模式
- 优先确定性:能用代码逻辑实现的不用 LLM 判断
- 显式状态管理:让智能体的状态可观测、可调试
- 优雅失败:设计好的错误处理和回退机制
- 人类兜底:关键决策点让人类确认
4.2 工程实践原则
| 原则 | 描述 |
|---|---|
| 最小权限 | 工具和动作只给必要的权限 |
| 幂等操作 | 同一操作多次执行应产生相同结果 |
| 可观测性 | 每一步都有日志和追踪 |
| 超时机制 | 为每个操作设置合理的超时 |
| 成本控制 | 限制最大 LLM 调用次数和 Token 消耗 |
| 渐进式自主 | 从低自主度开始,逐步放开 |
5. 架构演进趋势
graph LR
A[单体 LLM<br/>2022] --> B[ReAct 循环<br/>2023初]
B --> C[Plan-Execute<br/>2023中]
C --> D[多智能体编排<br/>2023末]
D --> E[自适应架构<br/>2024-2025]
E --> F[自主进化架构<br/>未来]
趋势观察:
- 从固定到自适应:架构不再是预定义的,而是根据任务动态调整
- 从单模型到多模型:不同任务使用不同规模/能力的模型
- 从无状态到有状态:越来越重视记忆和状态管理
- 从单智能体到多智能体:复杂任务分解给多个专门的智能体
- 从同步到异步:支持长时间运行的后台任务
参考文献
- Brooks, R.A. (1986). A Robust Layered Control System For a Mobile Robot. IEEE JRA, 2(1), 14-23.
- Müller, J.P. (1996). The Design of Intelligent Agents. LNCS 1177. Springer.
- Nii, H.P. (1986). Blackboard Systems. AI Magazine, 7(2), 38-53.
- Anthropic. (2024). Building Effective Agents. anthropic.com.
- Yao, S. et al. (2022). ReAct: Synergizing Reasoning and Acting in Language Models. ICLR 2023.
- Wang, L. et al. (2024). A Survey on Large Language Model based Autonomous Agents. Frontiers of Computer Science.