AI Agent 实战(一):架构总览——多模态智能体的“大脑”与“手脚”
第一章:架构总览——多模态智能体的“大脑”与“手脚”

图 1-1:AI Agent 三层架构示意图(用户交互层 → 智能体核心层 → 工具执行层)
1.1 从 Chatbot 到 Agent:范式转移
在深入技术细节之前,我们先厘清一个核心概念:Chatbot 与 Agent 的本质区别。
| 维度 | Chatbot | Agent |
|---|---|---|
| 核心能力 | 回答问题、生成文本 | 执行任务、调用工具 |
| 输入 | 文本 | 文本、图像、语音、视频 |
| 输出 | 文本 | 文本、文件、API 调用、系统命令 |
| 记忆 | 短期上下文 | 长期记忆(RAG、向量数据库) |
| 自主性 | 被动响应 | 主动规划、执行、反思 |
| 典型场景 | 客服、问答、创作 | 自动化工作流、数据分析、内容发布 |
Chatbot 是“大脑”,Agent 是“大脑 + 手脚”。
一个典型的 Agent 工作流程如下:
- 感知:接收用户指令(文本、语音、图片)。
- 理解:LLM 解析指令,识别意图。
- 规划:Agent 决定需要哪些工具来完成目标。
- 执行:调用工具(MCP Server、API、命令行)。
- 反馈:将结果返回给用户,或进行下一步操作。
- 反思:如果失败,分析原因,调整策略,重试。
这个过程是循环的,Agent 会根据反馈不断调整自己的行为,直到任务完成。
1.2 核心架构:OpenClaw + MCP + Agent Reach
我们的多模态智能体基于以下三层架构:
┌─────────────────────────────────────────────────────────────┐
│ 用户交互层 (User Interface) │
│ QQ / Telegram / Discord / Web Chat / CLI │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ 智能体核心层 (Agent Core) │
│ OpenClaw (主控制器) │
│ - 指令解析 (LLM) │
│ - 任务规划 (ReAct / CoT) │
│ - 工具调度 (MCP Client) │
│ - 记忆管理 (RAG / 向量数据库) │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ 工具执行层 (Tool Layer) │
│ MCP Servers (工具提供者) │
│ - halo-mcp-server (博客管理) │
│ - modelscope-mcp (图像生成) │
│ - agent-reach (社交媒体、搜索) │
│ - custom-mcp (自定义工具) │
│ │
│ 外部服务 │
│ - Twitter / Reddit / YouTube / Bilibili │
│ - GitHub / RSS / 网页抓取 │
│ - 本地文件系统 / 命令行 │
└─────────────────────────────────────────────────────────────┘
1.2.1 大脑:OpenClaw
OpenClaw 是整个系统的“大脑”,负责:
- 指令解析:将用户的自然语言指令转换为结构化任务。
- 任务规划:决定需要调用哪些工具,按什么顺序执行。
- 工具调度:通过 MCP 协议调用工具,并处理返回结果。
- 记忆管理:利用 RAG 技术,让 Agent 拥有“长期记忆”。
OpenClaw 的核心优势在于其模块化设计和技能系统。每个功能(如“发微博”、“查天气”、“生成图片”)都被封装为一个技能(Skill),通过 MCP 协议暴露给 LLM。
1.2.2 神经中枢:MCP 协议
MCP(Model Context Protocol) 是连接 OpenClaw 与各种工具的“神经中枢”。它定义了:
- 工具发现:LLM 如何知道有哪些工具可用?
- 工具调用:LLM 如何调用工具?参数如何传递?
- 错误处理:工具调用失败时,如何反馈?
MCP 的核心思想是标准化。无论工具是用 Python、Node.js 还是 Go 编写的,只要遵循 MCP 协议,OpenClaw 就能“无缝”调用它。
1.2.3 手脚:Agent Reach
Agent Reach 是 OpenClaw 的“手脚”,负责访问互联网各大平台。它提供了:
- 统一 CLI:通过一条命令,访问 Twitter、Reddit、YouTube、Bilibili、小红书等。
- 零 API 费:利用爬虫技术,无需申请 API Key。
- 多模态支持:不仅能获取文本,还能提取视频字幕、图片信息。
Agent Reach 的存在,让 Agent 能够“看到”整个互联网,而不仅仅是自己训练的数据。
1.3 数据流:从用户指令到工具调用
让我们通过一个具体例子,理解数据如何在三层架构中流动。
用户指令:“帮我查一下今天 OpenClaw 社区的热门话题,并生成一篇总结文章。”
步骤 1:感知与理解
- OpenClaw 接收指令,LLM 解析出意图:
- 任务 1:查询社区热门话题。
- 任务 2:生成总结文章。
步骤 2:规划
- LLM 决定需要调用哪些工具:
- 工具 1:
agent-reach(查询社区帖子)。 - 工具 2:
halo-mcp-server(发布文章)。
- 工具 1:
步骤 3:执行
- 调用
agent-reach:
返回结果:agent-reach search --platform openclaw-cn --query "热门话题" --limit 10[ {"title": "MCP 协议深度解析", "author": "user1", "likes": 120}, {"title": "AI Agent 实战指南", "author": "user2", "likes": 98}, ... ] - 调用
halo-mcp-server:mcporter call halo-mcp-server.create_post title="OpenClaw 社区热门话题总结" content="..."
步骤 4:反馈
- OpenClaw 将发布结果返回给用户: “文章已发布!链接:https://zhiyi.easknow.com/post/12345”
步骤 5:反思
- 如果发布失败(如网络错误),OpenClaw 会:
- 分析错误原因(如“连接超时”)。
- 自动重试(指数退避)。
- 如果多次失败,通知用户。
1.4 深度思考:为什么 MCP 比传统 API 更适合作为 Agent 的“通用语言”?
在 MCP 出现之前,AI 调用工具的方式通常是:
- 硬编码 API:为每个工具编写独立的调用代码。
- 函数调用(Function Calling):LLM 直接输出函数名和参数。
这两种方式都有明显的缺陷:
- 硬编码 API:扩展性差,每新增一个工具就要修改代码。
- 函数调用:LLM 需要“记住”每个函数的参数格式,容易出错。
MCP 的优势在于“标准化”和“动态发现”:
- 标准化:所有工具遵循同一套协议,LLM 无需“记住”每个工具的细节。
- 动态发现:工具可以随时添加或移除,LLM 通过 MCP 协议自动获取最新工具列表。
- 错误处理:统一的错误格式,便于 LLM 理解和恢复。
类比:
- 传统 API:就像你每次去新餐厅,都要重新学习菜单和点餐流程。
- MCP:就像所有餐厅都用同一套点餐系统,你只需学会一次,就能在任何餐厅点餐。
未来展望: 随着 MCP 的普及,AI 工具生态将变得更加开放和互操作。开发者只需遵循 MCP 协议,就能让自己的工具被任何支持 MCP 的 Agent 调用。这将极大地降低 AI 应用的开发门槛,推动 AI 从“实验室”走向“日常生活”。
(第一章完)
下一章预告:第二章将深入解析 MCP 协议,手把手教你编写和调用自定义 MCP Server,包括代码示例和实战案例。