第11章:Agent 核心架构拆解——四个缺一不可的组件
系列导读:本章深入 Agent 的内部结构。如果你准备亲手实现一个 Agent,这就是你要看的「系统说明书"。
一、Agent架构全景:四个核心组件
一个完整的 Agent 系统由以下四个核心组件构成,任何一个掉链子,系统都跑不好:
| |
二、组件1:LLM 核心
LLM 是整个 Agent 的「大脑」。
- 所有输入(用户指令、工具返回结果、记忆内容)最终都经过 LLM 来理解和决策
- LLM 负责判断:下一步该做什么?继续思考?调用工具?还是输出最终答案?
System Prompt 的关键作用
System Prompt 就是给 Agent 的「岗位说明书」,定义了:
| |
System Prompt 写得好不好,直接决定 Agent 的行为模式。它是工程质量最不可控的变量之一。
三、组件2:规划模块(Planning)
规划模块解决的是:怎么把一个大目标拆成可执行的步骤?
为什么需要规划?
想象你让 Agent 完成:“帮我分析我们公司 Q2 的销售数据,找出增长最快的产品线,并给出下季度的推广建议。”
这个任务拆下去至少包含:
- 加载并描述销售数据(analyze_csv)
- 按产品线分组计算增长率
- 找出增长最快的产品线
- 搜索该产品的市场信息
- 结合数据和市场信息生成建议
没有规划模块,LLM 一次调用只能做一件事,可能会重复、遗漏或顺序错乱。
两种规划策略
| 策略 | 实现方式 | 特点 |
|---|---|---|
| 静态规划 | 预先定义步骤序列(工作流) | 确定性高,灵活性差 |
| 动态规划 | 让 LLM 每一步自己决定方向和工具 | 灵活性强,可控性差 |
| 混合规划 | 大方向固定,具体操作让 LLM 决定 | 推荐方案 |
| |
四、组件3:工具系统(Tool System)
工具系统是 Agent 与外部世界交互的「四肢」。
工具不是越多越好。过多的工具会让 LLM 的选择困难增加(context 装不下、选错概率上升)。
工具定义的关键要素
| |
description 是核心门槛——模型基于 description 决定用不用这个工具。写好 description 的技巧:
- 明确什么场景用
- 明确什么场景不用
- 给出使用示例
- 说明参数要求
工具的返回值设计
工具返回的结果也需要精心格式化:
| |
五、组件4:记忆系统(Memory)
记忆系统解决的是:Agent 怎么记得之前做过什么?
记忆分四个层次:
| 层次 | 内容 | 存储位置 | 生命周期 |
|---|---|---|---|
| 感知记忆 | 当前输入的原始内容 | 内存 | 即时 |
| 短期记忆 | 当前对话/任务的历史 | Context window | 当前任务 |
| 长期记忆 | 跨会话的知识和经验 | 向量数据库/结构化存储 | 持续 |
| 实体记忆 | 提取的结构化事实 | 图数据库/KV 存储 | 持续 |
为什么记忆系统这么重要?
没有记忆的 Agent:
- 你在上一步确认了技术方案,下一步它就不记得了
- 它不知道你的偏好(代码风格、输出格式)
- 它无法在多个任务之间保持连贯性
有记忆的 Agent:
- 记住你们的约定和达成的共识 → 持续协作质量提升
- 记住任务的历史决策 → 避免重复讨论、减少沟通成本
- 跨任务积累对你的了解 → 越来越懂你
六、四个组件的协同
| |
七、本章小结
- Agent 四大组件:LLM(大脑)、规划(怎么拆任务)、工具(怎么做)、记忆(记得什么)
- LLM 的 System Prompt 定义了 Agent 的"人格"和"行为边界"
- 规划模块是连接目标和执行的桥梁,静态保守、动态灵活
- 工具系统的 description 质量直接决定调用准确率
- 记忆系统让 Agent 有"持续感",不是每次都从零开始
思考题
- 如果你设计一个 Agent,工具数量限制在 5 个以内,你怎么选择?优先级怎么排?
- 短期记忆(存在 context 里)会随着对话变长而被截断。长任务中如何设计记忆的"生命值"决策?