一、Agent核心架构拆解:五层架构深度解析
说实话,很多同学一上来就问我:「Agent到底长什么样?」
我的回答很简单——它就像一个人。有眼睛耳朵(感知层),有大脑(决策层),有手脚(执行层),有记忆(记忆层),还有各种工具(工具层)。
这五层缺一不可。我在做第一个企业级Agent项目时,就踩过「只有大脑没有手脚」的坑——模型推理得头头是道,结果连个API都调不通。嗯,今天我们就一层层拆开来看。
核心观点:Agent不是大模型的「套壳」,而是一个完整的工程系统。五层架构中,任何一层薄弱,整个Agent都会「瘸腿」。
1. 感知层(Perception)——Agent的「五官」
感知层负责接收外部信息。说白了,就是Agent怎么「看」和「听」这个世界。
我习惯把感知层分成三类:
- 文本感知:用户输入的自然语言、系统日志、文档内容
- 视觉感知:图片、图表、UI截图、PDF扫描件
- 结构化感知:JSON、XML、数据库记录、API返回
举个例子。我之前帮一家银行做智能客服Agent,用户发来一张转账截图问「这笔钱到账了吗?」。如果只有文本感知,Agent只能看到「图片」两个字。但加上视觉感知,它就能提取截图中的金额、时间、交易流水号——这才是真正的「看懂」。
避坑指南:我曾经犯过一个低级错误——把所有输入都丢给大模型处理。结果用户发来一个10MB的PDF,模型直接超时。后来我加了预处理层:先压缩、分块、提取关键信息,再喂给模型。感知层一定要做「降噪」和「压缩」。
2. 决策层(Reasoning/Planning)——Agent的「大脑」
这是整个架构的核心。决策层负责「想清楚怎么做」。
我个人习惯把决策层拆成两个阶段:
- 推理(Reasoning):理解当前状态,分析问题本质
- 规划(Planning):制定执行步骤,拆解任务
你想想看,一个Agent接到「帮我订一张明天去北京的机票」这个任务,它的大脑里发生了什么?
# 伪代码:决策层的思考过程
1. 推理阶段:
- 用户意图:订机票
- 关键参数:时间=明天,目的地=北京
- 隐含需求:出发地?舱位?预算?
2. 规划阶段:
Step 1: 询问用户出发城市
Step 2: 查询航班信息(调用工具层)
Step 3: 展示可选航班
Step 4: 确认订单(调用执行层)
这里有个关键点——决策层不是一次性的。我在项目中遇到过,用户中途改需求:「算了,改成后天吧」。好的决策层必须支持动态调整,而不是推倒重来。
注意:决策层最容易出现「过度规划」的问题。我曾经见过一个Agent,为了「帮我倒杯水」这个任务,规划了15个步骤,包括「检查杯子是否干净」「测量水温」……嗯,有时候简单点反而更好。
3. 执行层(Action)——Agent的「手脚」
执行层就是把决策变成现实。没有执行层,Agent就是个「空想家」。
执行层的常见形式:
| 执行类型 | 示例 | 技术实现 |
|---|---|---|
| API调用 | 发送邮件、查询天气 | HTTP请求、SDK封装 |
| 代码执行 | 数据分析、文件处理 | 沙箱环境、Python解释器 |
| UI操作 | 点击按钮、填写表单 | RPA、浏览器自动化 |
| 物理动作 | 机器人抓取、设备控制 | IoT指令、串口通信 |
执行层有个容易被忽略的问题——幂等性。说白了,就是同一个操作执行两次,结果应该一样。我曾经在做一个支付Agent时,因为没处理好幂等性,用户点了两次「确认支付」,结果扣了两笔钱……这个教训太深刻了。
4. 记忆层(Memory)——Agent的「记忆」
没有记忆的Agent,每次对话都是「初次见面」。这显然不行。
我习惯把记忆层分成三个层次:
- 短期记忆:当前对话的上下文。比如用户刚才说了什么,Agent上一步做了什么
- 长期记忆:跨会话的信息。比如用户的偏好、历史行为、知识库
- 工作记忆:正在执行的任务状态。比如「订机票」这个任务进行到哪一步了
记忆层的实现方式也很有意思:
# 记忆层的典型实现
短期记忆 → 滑动窗口(保留最近N轮对话)
长期记忆 → 向量数据库(存储关键信息,支持语义检索)
工作记忆 → 状态机(记录当前任务进度)
你想想看,如果Agent没有长期记忆,用户每次说「按老规矩来」,Agent都得问「什么老规矩?」——这体验得多糟糕。
个人经验:记忆层最容易出问题的是「记忆污染」。我曾经遇到一个Agent,把一次错误的对话记到了长期记忆里,结果后面所有对话都被带偏了。所以一定要加「记忆审核」机制——不是所有信息都值得记住。
5. 工具层(Tool Use)——Agent的「工具箱」
工具层是Agent能力的「放大器」。没有工具层,Agent只能「动嘴」;有了工具层,Agent才能「动手」。
工具层的设计原则:
- 标准化:所有工具遵循统一的接口规范(输入、输出、错误处理)
- 可发现:Agent能知道「有哪些工具可用」「每个工具是干什么的」
- 安全可控:工具调用需要权限控制,不能乱来
举个例子,工具注册的伪代码:
# 工具注册示例
tools = [
{
"name": "send_email",
"description": "发送邮件给指定用户",
"parameters": {
"to": "收件人邮箱",
"subject": "邮件主题",
"body": "邮件正文"
},
"required_permission": "email:send"
},
{
"name": "query_database",
"description": "查询数据库中的用户信息",
"parameters": {
"sql": "SQL查询语句"
},
"required_permission": "database:read"
}
]
这里要注意——工具不是越多越好。我见过一个团队给Agent注册了200多个工具,结果模型在选择工具时直接「懵了」,每次都要花好几秒才能决定用哪个。我的建议是:按场景分组,比如「办公工具组」「数据分析组」「系统管理组」,让Agent先选组,再选具体工具。
安全提醒:工具层是安全风险最高的地方。我曾经见过一个Agent因为工具权限没控制好,被用户诱导执行了「DROP TABLE」操作……嗯,从那以后,所有写操作的工具我都加了「二次确认」机制。
五层架构的协同工作
说了这么多,你可能觉得五层是各自独立的。其实不是——它们是一个有机整体。
我画了一张图来展示它们的关系:
从这张图你能看到:
- 数据从感知层流入,经过决策层处理,最后由执行层输出
- 记忆层和工具层是「基础设施」,贯穿整个流程
- 执行层的结果会反馈回感知层,形成闭环
说白了,这就是一个「感知-思考-行动-反馈」的循环。每一次循环,Agent都在不断优化自己的行为。
总结一下:五层架构不是理论空谈,而是我在多个企业级项目中验证过的实战框架。每一层都有坑,每一层都有技巧。后面我们会逐层深入,把每一层的实现细节、优化方法、避坑指南都讲透。