Single-Agent 架构模式

4.1 何时选择 Single-Agent?

Single-Agent 不是”简单”或”不成熟”的选择,而是适合特定场景的架构决策

适用场景 特征
任务类型单一 主要处理一类任务(如客服问答)
工具数量有限 < 10 个工具
上下文需求小 不需要维护复杂的多轮状态
延迟敏感 多 Agent 会增加通信开销
快速原型 需要快速验证概念

4.2 Single-Agent 的成熟形态

白皮书强调:Single-Agent ≠ 简单

┌─────────────────────────────────────────────────────────────┐
│  成熟的 Single-Agent 架构                                    │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  ┌─────────────────────────────────────────────────────┐   │
│  │  System Prompt (精简)                                │   │
│  │  - 角色定义                                          │   │
│  │  - 核心行为准则                                      │   │
│  │  - 输出格式要求                                      │   │
│  └─────────────────────────────────────────────────────┘   │
│                          ↓                                  │
│  ┌─────────────────────────────────────────────────────┐   │
│  │  Skills 库 (按需加载)                                │   │
│  │  - Skill 1: 数据查询                                │   │
│  │  - Skill 2: 报告生成                                │   │
│  │  - Skill 3: 异常处理                                │   │
│  │  - ...                                              │   │
│  └─────────────────────────────────────────────────────┘   │
│                          ↓                                  │
│  ┌─────────────────────────────────────────────────────┐   │
│  │  Tools (MCP / 本地)                                  │   │
│  │  - Database MCP                                     │   │
│  │  - API MCP                                          │   │
│  │  - File System                                      │   │
│  └─────────────────────────────────────────────────────┘   │
│                          ↓                                  │
│  ┌─────────────────────────────────────────────────────┐   │
│  │  外部状态管理                                        │   │
│  │  - 会话状态 (数据库)                                 │   │
│  │  - 用户偏好 (KV Store)                              │   │
│  │  - 任务队列                                         │   │
│  └─────────────────────────────────────────────────────┘   │
└─────────────────────────────────────────────────────────────┘

4.3 Single-Agent 的扩展模式

当 Single-Agent 开始触及极限时,有以下扩展策略:

模式 A: Tool Routing

不增加 Agent,而是通过更智能的工具路由:

User Query
    ↓
┌──────────────────┐
│  Single Agent    │
│  + Intent Router │  ← 在工具层面做路由决策
└──────────────────┘
    ↓
┌────────┬────────┬────────┐
│ Tool A │ Tool B │ Tool C  │
└────────┴────────┴────────┘

适用场景: 任务类型相近,只是执行路径不同

模式 B: Skill-based Expansion

利用 Skills 的渐进式加载,避免上下文膨胀:

Base Context (~500 tokens)
├── Skill A 描述 (~50 tokens) [始终加载]
├── Skill B 描述 (~50 tokens) [始终加载]
├── Skill C 描述 (~50 tokens) [始终加载]
...
└── 当前激活 Skill 正文 (~2000 tokens) [按需加载]

总活跃上下文 ≈ Base + 1 Skill
而非 Base + All Skills

适用场景: 功能多样化,但每次对话只用到一小部分

模式 C: Recursive Delegation

Agent 可以将子任务委托给… 自己(递归):

主 Agent 收到复杂任务
    ↓
分解为子任务
    ↓
对每个子任务:
    创建新的上下文实例
    → 执行子任务
    → 返回结果
    → 清理子任务上下文
    ↓
合并所有子任务结果

关键: 不是创建新 Agent,而是隔离上下文

4.4 Single-Agent 的边界信号

当出现以下信号时,应该考虑多 Agent 架构:

信号 阈值 说明
工具数量 > 20 工具选择准确率下降
Skills 数量 > 30 路由准确率下降
平均上下文长度 > 50k tokens 成本和延迟问题
任务类型 > 5 种明显不同的领域 需要专业化
独立部署需求 不同模块需要独立更新 架构解耦需求