深入理解大模型Agent生态系统:Agent、MCP、Skill、RAG与Memory协同机制解析
深入理解大模型Agent生态系统:Agent、MCP、Skill、RAG与Memory协同机制解析
前言
随着大语言模型(LLM)技术的飞速发展,单一模型的"对话"能力已无法满足复杂场景需求。以Agent为核心的智能体架构正在重塑AI应用形态。本文将从实战视角,深入解析大模型Agent生态中的五大核心角色:Agent、MCP、Skill、RAG和Memory,剖析它们的功能定位、使用方法及调用关系,帮助开发者构建高效可靠的AI应用。
一、Agent架构概述
1.1 什么是Agent?
Agent(智能体)是基于大语言模型,能够自主感知环境、制定决策并执行行动的智能系统。与传统的"输入-输出"模式不同,Agent具备目标导向、工具调用、多轮推理三大核心能力。
核心特征:
- 感知能力: 理解用户意图、解析任务需求
- 决策能力: 基于上下文规划执行步骤
- 行动能力: 调用工具完成具体任务
- 反馈能力: 根据执行结果调整策略
1.2 Agent vs 传统LLM应用
| 维度 | 传统LLM应用 | Agent架构 |
|---|---|---|
| 执行模式 | 单次对话 | 多轮推理+工具调用 |
| 任务类型 | 文本生成、问答 | 复杂任务分解与执行 |
| 外部交互 | 受限 | 丰富(文件、网络、API) |
| 记忆能力 | 会话级 | 持久化+层次化 |
| 扩展性 | 依赖Prompt更新 | 插件化技能扩展 |
1.3 Agent核心架构
用户请求
"帮我分析这个数据集"
↓
Agent核心
┌───────────────────────────┐
│ 感知层 决策层 执行层 │
│ 理解意图 任务规划 工具调用 │
└───────────┬───────────────┘
↓
反馈与学习机制
执行结果分析 → 策略调整 → 经验积累
二、MCP:Model Context Protocol协议
2.1 MCP是什么?
MCP(Model Context Protocol)是Claude团队推出的AI上下文协议标准,用于统一管理模型与外部工具、数据源的交互。它类似于AI世界的"RESTful API",定义了一套标准化的资源发现、数据获取、工具调用规范。
核心价值:
- 统一接口: 无需为每个工具编写适配器
- 类型安全: 提供Schema验证,减少调用错误
- 权限控制: 细粒度的资源访问控制
- 热插拔: 动态加载/卸载工具,无需重启服务
2.2 MCP协议架构
Agent应用层
Claude Desktop / OpenClaw
↓
MCP Client(客户端)
- 管理MCP服务器连接
- 转发工具调用请求
- 处理响应数据
↓
┌─────────────┼─────────────┐
↓ ↓ ↓
File MCP HTTP MCP Git MCP
Server Server Server
读取文件 API调用 代码管理
写入文件 网络请求 版本控制
列出目录 数据抓取 提交变更
2.3 MCP工作详细流程
┌─────────────────────────────────────────────────────────────────┐
│ 启动阶段 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ MCP Server A MCP Server B │
│ (GitHub) (Slack) │
│ │ │ │
│ │ 注册接口: │ 注册接口: │
│ │ - create_issue │ - send_message │
│ │ - list_repos │ - create_channel │
│ │ - ... │ - ... │
│ ↓ ↓ │
│ ┌──────────────────────────────────────────┐ │
│ │ Agent │ │
│ │ 内部维护 MCP 工具列表: │ │
│ │ [ │ │
│ │ {name:"create_issue", ...}, │ │
│ │ {name:"send_message", ...}, │ │
│ │ ... │ │
│ │ ] │ │
│ └──────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────┐
│ 运行阶段 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 用户: "在 GitHub 上创建一个 issue,标题是 Bug" │
│ │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ Step 1: Agent 构建请求 │ │
│ │ ┌────────────────────────────────────────────────────┐ │ │
│ │ │ 发送给大模型的内容: │ │ │
│ │ │ │ │ │
│ │ │ 系统提示词: "你可以调用以下工具..." │ │ │
│ │ │ │ │ │
│ │ │ 工具列表 (从 MCP 注册信息生成): │ │ │
│ │ │ [ │ │ │
│ │ │ { │ │ │
│ │ │ name: "create_issue", │ │ │
│ │ │ description: "在 GitHub 仓库创建 issue", │ │ │
│ │ │ parameters: {repo: string, title: string} │ │ │
│ │ │ }, │ │ │
│ │ │ { │ │ │
│ │ │ name: "send_message", │ │ │
│ │ │ description: "发送 Slack 消息", │ │ │
│ │ │ ... │ │ │
│ │ │ } │ │ │
│ │ │ ] │ │ │
│ │ │ │ │ │
│ │ │ 用户输入: "在 GitHub 上创建一个 issue,标题是 Bug" │ │ │
│ │ └────────────────────────────────────────────────────┘ │ │
│ └──────────────────────────────────────────────────────────┘ │
│ ↓ │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ Step 2: 大模型决策 │ │
│ │ │ │
│ │ 大模型分析: 用户想创建 issue → 匹配到 create_issue 工具 │ │
│ │ │ │
│ │ 返回给 Agent: │ │
│ │ { │ │
│ │ tool_calls: [{ │ │
│ │ name: "create_issue", │ │
│ │ arguments: {repo: "my-repo", title: "Bug"} │ │
│ │ }] │ │
│ │ } │ │
│ └──────────────────────────────────────────────────────────┘ │
│ ↓ │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ Step 3: Agent 执行调用 │ │
│ │ │ │
│ │ Agent 识别: create_issue 来自 GitHub MCP Server │ │
│ │ │ │
│ │ 通过 MCP 协议调用: │ │
│ │ mcp_client.call_tool("create_issue", { │ │
│ │ repo: "my-repo", │ │
│ │ title: "Bug" │ │
│ │ }) │ │
│ │ │ │
│ │ GitHub MCP Server 执行 → 返回结果 │ │
│ └──────────────────────────────────────────────────────────┘ │
│ ↓ │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ Step 4: 返回给用户 │ │
│ │ │ │
│ │ Agent: "已成功创建 issue #123" │ │
│ └──────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
2.4 MCP vs 传统Tool Call
| 特性 | 传统Tool Call | MCP协议 |
|---|---|---|
| 工具注册 | 手动编写描述 | 自动发现+Schema |
| 参数验证 | 手动校验 | Schema自动验证 |
| 错误处理 | 自定义实现 | 标准化错误码 |
| 热更新 | 需重启服务 | 动态加载 |
| 安全性 | 依赖开发者 | 内置权限系统 |
三、Skill:模块化能力扩展
3.1 Skill是什么?
Skill(技能)是Agent的能力单元,封装了特定领域的工具、知识和Prompt逻辑。通过组合不同的Skill,Agent可以快速切换专业能力,类似游戏中的"职业切换"。
核心概念:
- 可复用性: 一次开发,多处使用
- 可组合性: 多个Skill协作完成复杂任务
- 可扩展性: 社区贡献,持续增长
3.2 Skill分层体系
Level 1: 基础技能(Basic Skills)
文件操作、网络请求、代码执行、数据处理
Level 2: 领域技能(Domain Skills)
代码审查、数据分析、文档写作、安全审计
Level 3: 组合技能(Composite Skills)
全栈开发助手、科研助手、营销文案专家、投资分析师
3.3 Skill内部结构
Skill: CodeReviewer
┌──────────────────────────┐
│ 元数据(Metadata) │
│ 名称: code_reviewer │
│ 版本: 1.0.0 │
│ 描述: 专业的代码审查技能 │
└──────────────────────────┘
┌──────────────────────────┐
│ 工具定义(Tools) │
│ Tool: review_code │
│ 描述: 审查代码并提供改进 │
│ 参数: code, language │
└──────────────────────────┘
┌──────────────────────────┐
│ Prompt模板 │
│ 审查指南、报告格式 │
└──────────────────────────┘
┌──────────────────────────┐
│ 知识库 │
│ 编码规范、安全检查清单 │
└──────────────────────────┘
3.4 Skill组合模式
模式1:串行组合
用户需求:"分析数据并生成报告"
↓
Data Analyst Skill
执行数据分析,提取关键指标
↓
Report Writer Skill
基于分析结果撰写报告
↓
最终报告
模式2:并行组合
用户需求:"全面审查项目代码"
↓
Agent分解任务
↓
┌─────────┼─────────┐
↓ ↓ ↓
Security Perform. Style
Analyzer Profiler Checker
│ │ │
└─────────┼─────────┘
↓
汇总审查结果
3.5 Skill生态示意图
Skill Hub(技能市场)
│
┌────────────┼────────────┐
↓ ↓ ↓
官方技能库 社区技能库 自定义技能
code_reviewer custom_xxx my_skill
data_analyst tool_yyy specialized
web_scraping ... workflows
3.6 SKILL工作详细流程
┌─────────────────────────────────────────────────────────────────┐
│ 启动阶段 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ Agent 初始化时,直接注册 Skill: │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ class EmailSkill: │ │
│ │ def send(self, to, subject, body): │ │
│ │ # 直接调用邮件 API │ │
│ │ smtp.send(to, subject, body) │ │
│ │ return "邮件已发送" │ │
│ │ │ │
│ │ agent.register_skill("send_email", EmailSkill().send) │ │
│ └──────────────────────────────────────────────────────────┘ │
│ │
│ Agent 内部维护 Skill 列表: │
│ { │
│ "send_email": { │
│ "function": email_skill.send, │
│ "description": "发送邮件给指定收件人", │
│ "parameters": ["to", "subject", "body"] │
│ }, │
│ "calculate": { ... }, │
│ "search_web": { ... } │
│ } │
└─────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────┐
│ 运行阶段 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 用户: "给 zhangsan@example.com 发邮件,说你好" │
│ │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ Step 1: Agent 构建请求 │ │
│ │ ┌────────────────────────────────────────────────────┐ │ │
│ │ │ 发送给大模型的内容: │ │ │
│ │ │ │ │ │
│ │ │ 系统提示词: "你可以调用以下 Skill..." │ │ │
│ │ │ │ │ │
│ │ │ Skill 列表 (直接从注册信息生成): │ │ │
│ │ │ [ │ │ │
│ │ │ { │ │ │
│ │ │ name: "send_email", │ │ │
│ │ │ description: "发送邮件给指定收件人", │ │ │
│ │ │ parameters: { │ │ │
│ │ │ to: "string", │ │ │
│ │ │ subject: "string", │ │ │
│ │ │ body: "string" │ │ │
│ │ │ } │ │ │
│ │ │ } │ │ │
│ │ │ ] │ │ │
│ │ │ │ │ │
│ │ │ 用户输入: "给 zhangsan@example.com 发邮件,说你好" │ │ │
│ │ └────────────────────────────────────────────────────┘ │ │
│ └──────────────────────────────────────────────────────────┘ │
│ ↓ │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ Step 2: 大模型决策 │ │
│ │ │ │
│ │ 大模型分析: 用户想发邮件 → 匹配到 send_email Skill │ │
│ │ │ │
│ │ 返回给 Agent: │ │
│ │ { │ │
│ │ tool_calls: [{ │ │
│ │ name: "send_email", │ │
│ │ arguments: { │ │
│ │ to: "zhangsan@example.com", │ │
│ │ subject: "问候", │ │
│ │ body: "你好" │ │
│ │ } │ │
│ │ }] │ │
│ │ } │ │
│ └──────────────────────────────────────────────────────────┘ │
│ ↓ │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ Step 3: Agent 执行 Skill │ │
│ │ │ │
│ │ Agent 从内部映射表找到 send_email 对应的函数: │ │
│ │ skill_function = agent.skills["send_email"]["function"] │ │
│ │ │ │
│ │ 直接调用(本地执行): │ │
│ │ result = skill_function( │ │
│ │ to="zhangsan@example.com", │ │
│ │ subject="问候", │ │
│ │ body="你好" │ │
│ │ ) │ │
│ │ │ │
│ │ 无需网络通信、无需协议转换 │ │
│ └──────────────────────────────────────────────────────────┘ │
│ ↓ │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ Step 4: 返回给用户 │ │
│ │ │ │
│ │ Agent: "已成功发送邮件给 zhangsan@example.com" │ │
│ └──────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
四、RAG:检索增强生成
4.1 RAG是什么?
RAG(Retrieval-Augmented Generation)通过检索外部知识库来增强大模型的回答能力,有效解决幻觉、知识时效性、专业领域深度等问题。
核心优势:
- 减少幻觉: 基于真实数据生成答案
- 知识更新: 无需重新训练模型即可更新知识
- 可追溯性: 答案可标注来源,增强可信度
- 专业深度: 整合领域专业知识
4.2 RAG vs 微调
| 维度 | RAG | 微调 |
|---|---|---|
| 知识更新 | 实时更新 | 需重新训练 |
| 成本 | 低 | 高 |
| 可解释性 | 强(可追溯来源) | 弱 |
| 适用场景 | 动态知识、长尾领域 | 通用能力优化 |
| 数据隐私 | 可控存储 | 需上传训练数据 |
4.3 RAG系统架构
用户查询
"什么是RAG架构的核心组件?"
↓
查询理解与扩展
意图识别、同义词扩展、查询重写
↓
┌────────┴────────┐
↓ ↓
向量检索 关键词检索
Vector Search Keyword Search
语义相似度 BM25算法
余弦匹配 精确匹配
│ │
└────────┬────────┘
↓
Re-ranker
重排序模型
相关性评分、精准排序
↓
Top-K 文档
(检索结果)
↓
上下文构建
拼接检索文档、控制Token长度
↓
LLM生成答案
↓
最终答案
(包含来源引用)
4.4 向量检索原理
文档向量化过程:
文档1: "RAG是一种结合检索和生成的AI架构"
↓
嵌入模型
↓
[0.23, -0.45, 0.67, ..., 0.12]
文档2: "检索增强生成可以减少LLM幻觉"
↓
嵌入模型
↓
[0.31, -0.52, 0.71, ..., 0.08]
查询: "什么是RAG?"
↓
嵌入模型
↓
[0.25, -0.48, 0.69, ..., 0.10]
相似度计算:
查询向量 vs 文档1向量: 0.95(高相似度)
查询向量 vs 文档2向量: 0.88(次高相似度)
4.5 RAG工作详细流程
┌─────────────────────────────────────────────────────────────────┐
│ 准备阶段(离线) │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 企业文档(PDF、Word、网页...) │
│ ↓ │
│ 文档切块(Chunking) │
│ 将长文档切成小块,每块 500-1000 tokens │
│ ↓ │
│ 向量化(Embedding) │
│ 每个文本块 → 向量(1536维浮点数) │
│ ↓ │
│ 存储到向量数据库 │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ 向量数据库(Pinecone/Milvus/Chroma) │ │
│ │ ┌────────────────────────────────────────────────────┐ │ │
│ │ │ 向量1: [0.12, -0.34, ...] ← "退货政策:30天内..." │ │ │
│ │ │ 向量2: [0.45, 0.67, ...] ← "退款流程:登录账号..." │ │ │
│ │ │ 向量3: [-0.23, 0.89, ...] ← "换货条件:商品未使..." │ │ │
│ │ └────────────────────────────────────────────────────┘ │ │
│ └──────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────┐
│ 查询阶段(在线) │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 用户: "怎么退货?" │
│ │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ Step 1: 向量化用户问题 │ │
│ │ │ │
│ │ 用户输入: "怎么退货?" │ │
│ │ ↓ │ │
│ │ Embedding 模型转换 │ │
│ │ ↓ │ │
│ │ 查询向量: [0.32, -0.18, 0.67, ...] │ │
│ └──────────────────────────────────────────────────────────┘ │
│ ↓ │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ Step 2: 向量检索 │ │
│ │ │ │
│ │ 在向量数据库中搜索最相似的 Top-K 个文本块 │ │
│ │ │ │
│ │ 相似度计算: 余弦相似度 / 点积 │ │
│ │ ↓ │ │
│ │ 检索结果(Top 3): │ │
│ │ ┌────────────────────────────────────────────────────┐ │ │
│ │ │ 1. 相似度 0.92: "退货政策:商品签收后30天内可退货" │ │ │
│ │ │ 2. 相似度 0.87: "退货流程:登录账号→我的订单→..." │ │ │
│ │ │ 3. 相似度 0.71: "退款将在7个工作日内原路返回" │ │ │
│ │ └────────────────────────────────────────────────────┘ │ │
│ └──────────────────────────────────────────────────────────┘ │
│ ↓ │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ Step 3: 构建增强提示 │ │
│ │ │ │
│ │ 将检索到的知识 + 用户问题 组合成新的 Prompt: │ │
│ │ │ │
│ │ ┌────────────────────────────────────────────────────┐ │ │
│ │ │ 系统提示词: │ │ │
│ │ │ "你是一个客服助手,请基于以下知识回答问题。 │ │ │
│ │ │ 如果知识库中没有相关信息,请告知用户你无法回答。" │ │ │
│ │ │ │ │ │
│ │ │ 相关知识: │ │ │
│ │ │ 1. 退货政策:商品签收后30天内可退货 │ │ │
│ │ │ 2. 退货流程:登录账号→我的订单→申请退货 │ │ │
│ │ │ 3. 退款将在7个工作日内原路返回 │ │ │
│ │ │ │ │ │
│ │ │ 用户问题: 怎么退货? │ │ │
│ │ └────────────────────────────────────────────────────┘ │ │
│ └──────────────────────────────────────────────────────────┘ │
│ ↓ │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ Step 4: 大模型生成答案 │ │
│ │ │ │
│ │ 大模型基于提供的知识生成回答(而非依赖训练数据): │ │
│ │ │ │
│ │ "退货流程如下: │ │
│ │ 1. 登录您的账号 │ │
│ │ 2. 进入"我的订单"页面 │ │
│ │ 3. 找到对应订单,点击"申请退货" │ │
│ │ 4. 填写退货原因并提交 │ │
│ │ │ │
│ │ 请注意:商品需在签收后30天内申请退货, │ │
│ │ 退款将在7个工作日内原路返回。" │ │
│ └──────────────────────────────────────────────────────────┘ │
│ ↓ │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ Step 5: 返回给用户 │ │
│ │ │ │
│ │ Agent: 返回带有知识来源的回答(可选) │ │
│ │ "根据退货政策... [来源: 帮助文档第3条]" │ │
│ └──────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
五、Memory:记忆管理机制
5.1 Memory是什么?
Memory是Agent的记忆系统,负责存储和管理对话历史、学习经验、知识储备等信息。它让Agent具备"上下文连贯性"和"持续学习能力"。
记忆类型:
- 短期记忆: 当前会话的上下文信息
- 长期记忆: 跨会话的持久化知识
- 工作记忆: 执行任务时的临时信息
5.2 Memory分层架构
长期记忆
┌─────────────────┐
│ 知识库 │ 领域知识、专业术语、最佳实践
│ 技能经验 │ 成功案例、错误教训、优化方案
│ 用户偏好 │ 编码风格、沟通偏好、工作习惯
└─────────────────┘
↓
短期记忆
┌─────────────────┐
│ 当前会话上下文 │ 对话历史、任务状态、临时变量
└─────────────────┘
↓
工作记忆
┌─────────────────┐
│ 当前推理步骤 │ 执行计划、工具调用参数、中间结果
└─────────────────┘
5.3 记忆管理策略
策略1:滑动窗口
对话历史(按时间顺序):
消息1-3:早期对话
消息4-8:当前上下文(保留)
消息9+:未来对话
滑动窗口(保留最近5条):
❌ 消息1-3(已移出窗口)
✅ 消息4-8(当前上下文)
优点:控制上下文长度,避免超限
缺点:丢失早期重要信息
策略2:重要性采样
为每条消息计算重要性分数(0-1):
消息1:"你好" - 重要性: 0.2(普通问候)
消息2:"我需要分析销售数据" - 重要性: 0.8(核心任务)
消息3:"好的" - 重要性: 0.3(简单确认)
消息4:"数据文件是sales_2024.csv" - 重要性: 0.9(关键信息)
Token不足时,优先保留高重要性消息
保留:消息2、消息4
移除:消息1、消息3
策略3:分层存储
频繁访问的信息 → 内存(快速检索)
中等频率的信息 → 向量数据库(语义检索)
低频信息 → 磁盘存储(按需加载)
示例:
用户常用短语 → 内存
历史对话摘要 → 向量数据库
完整历史记录 → 磁盘
5.4 向量Memory示意图
┌─────────────────────────────────────────────────────────────────┐
│ 第一次对话(建立记忆) │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 用户: "我叫张三,我喜欢用中文沟通,我常用邮箱是 │
│ zhangsan@example.com" │
│ │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ Step 1: Agent 识别记忆点 │ │
│ │ │ │
│ │ 大模型分析对话,提取关键信息: │ │
│ │ - 用户名: 张三 │ │
│ │ - 语言偏好: 中文 │ │
│ │ - 常用邮箱: zhangsan@example.com │ │
│ └──────────────────────────────────────────────────────────┘ │
│ ↓ │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ Step 2: 存储到长期记忆 │ │
│ │ │ │
│ │ 写入数据库/向量库: │ │
│ │ { │ │
│ │ user_id: "user_123", │ │
│ │ type: "preference", │ │
│ │ key: "name", │ │
│ │ value: "张三", │ │
│ │ timestamp: "2024-01-15 10:30:00" │ │
│ │ } │ │
│ │ │ │
│ │ { │ │
│ │ user_id: "user_123", │ │
│ │ type: "preference", │ │
│ │ key: "language", │ │
│ │ value: "中文", │ │
│ │ timestamp: "2024-01-15 10:30:00" │ │
│ │ } │ │
│ └──────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────┐
│ 第二次对话(读取记忆) │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 用户: "帮我查一下订单" │
│ │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ Step 1: 加载相关记忆 │ │
│ │ │ │
│ │ Agent 从长期记忆中读取用户偏好: │ │
│ │ │ │
│ │ SELECT * FROM memories │ │
│ │ WHERE user_id = 'user_123' │ │
│ │ │ │
│ │ 返回: │ │
│ │ - 用户名: 张三 │ │
│ │ - 语言偏好: 中文 │ │
│ │ - 常用邮箱: zhangsan@example.com │ │
│ └──────────────────────────────────────────────────────────┘ │
│ ↓ │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ Step 2: 构建增强上下文 │ │
│ │ │ │
│ │ Agent 将记忆注入系统提示词: │ │
│ │ │ │
│ │ "你是一个客服助手。 │ │
│ │ 用户信息: 张三,偏好中文沟通 │ │
│ │ │ │
│ │ 用户: 帮我查一下订单" │ │
│ └──────────────────────────────────────────────────────────┘ │
│ ↓ │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ Step 3: 生成个性化回答 │ │
│ │ │ │
│ │ 大模型基于记忆生成: │ │
│ │ │ │
│ │ "张先生,您好!请问您想查询哪个订单?" │ │
│ │ │ │
│ │ (使用用户名字+中文) │ │
│ └──────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────┐
│ 任务执行(工作记忆) │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 用户: "帮我查订单12345的状态" │
│ │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ Step 1: 创建工作记忆 │ │
│ │ │ │
│ │ task_state = { │ │
│ │ "task_id": "task_001", │ │
│ │ "steps": [ │ │
│ │ {"name": "query_order", "status": "pending"}, │ │
│ │ {"name": "format_result", "status": "pending"}, │ │
│ │ {"name": "notify_user", "status": "pending"} │ │
│ │ ], │ │
│ │ "current_step": 0, │ │
│ │ "order_id": "12345" │ │
│ │ } │ │
│ └──────────────────────────────────────────────────────────┘ │
│ ↓ │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ Step 2: 更新工作记忆 │ │
│ │ │ │
│ │ 执行 step 1: query_order │ │
│ │ task_state["steps"][0]["status"] = "completed" │ │
│ │ task_state["order_status"] = "已发货" │ │
│ │ task_state["current_step"] = 1 │ │
│ └──────────────────────────────────────────────────────────┘ │
│ ↓ │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ Step 3: 基于工作记忆继续 │ │
│ │ │ │
│ │ Agent 知道: 已经查完订单,下一步是格式化结果 │ │
│ │ 继续执行,无需重新规划 │ │
│ └──────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
六、五大组件调用关系全景
6.1 完整系统架构
用户交互层
┌─────────┬─────────┬─────────┐
│ CLI终端 │ Web界面 │ API接口 │
└────┬────┴────┬────┴────┬────┘
└─────────┼─────────┘
↓
Agent核心层
┌───────────────────────────┐
│ Agent Orchestrator │
│ (编排器) │
│ - 任务分解 - 技能调度 │
└───────────┬───────────────┘
│
┌────────────┼────────────┐
↓ ↓ ↓
Router Planner Executor
(路由) (规划) (执行)
│ │ │
└────────────┼────────────┘
↓
能力层
┌──────────┬──────────┬──────────┐
│ Memory │ Skill │ RAG │
│ 层 │ 层 │ 层 │
└────┬─────┴────┬─────┴────┬─────┘
│ │ │
└──────────┼──────────┘
↓
协议层(MCP)
┌──────────┬──────────┬──────────┐
│ File MCP │ HTTP MCP │ Git MCP │
└────┬─────┴────┬─────┴────┬─────┘
│ │ │
└──────────┼──────────┘
↓
资源层
┌──────────┬──────────┬──────────┐
│本地文件系统│外部API网站│ Git仓库 │
└──────────┴──────────┴──────────┘
6.2 数据流转时序
用户 → Agent → Memory → Skill → MCP → RAG → LLM
↑ │ ↓
│ ↓ ↓
└── Response ← Tool Call ← Retrieve ← Generate
详细流程:
1. 用户发送请求
2. Agent加载Memory上下文
3. 选择并调用Skill
4. Skill通过MCP执行操作
5. RAG检索相关知识
6. LLM生成答案
7. 更新Memory并返回
七、总结与展望
7.1 五大组件核心职责
| 组件 | 核心角色 | 主要职责 |
|---|---|---|
| Agent | 核心决策 | 理解用户意图、规划任务流程、协调各组件协作、整合生成最终结果 |
| MCP | 协议层 | 统一接口、工具管理、权限控制 |
| Skill | 能力层 | 模块化、可复用、可组合 |
| RAG | 知识层 | 知识检索、减少幻觉、时效更新 |
| Memory | 记忆层 | 存储对话历史、积累学习经验、记住用户偏好、提供上下文连贯性 |
7.2 协作关系图
用户请求
↓
Agent
│
┌───────────────┼───────────────┐
↓ ↓ ↓
Memory Skill RAG
│ │ │
└───────────────┼───────────────┘
↓
MCP
│
↓
外部工具
│
↓
知识增强
↓
LLM
↓
生成答案
↓
更新Memory并返回
结语
大模型Agent生态的五大组件各司其职,相互协作:
- Agent: 核心决策引擎,负责任务规划和结果整合
- MCP: 标准化协议,统一管理工具和数据源访问
- Skill: 能力单元,实现功能模块化和可扩展性
- RAG: 知识增强,提供准确、时效的专业信息
- Memory: 记忆系统,赋予上下文连贯性和持续学习能力
掌握这五大组件的协同机制,是构建下一代AI应用的关键。随着技术的不断演进,Agent将变得更加智能、自主和协作,最终成为我们工作、学习和生活中的得力助手。
参考资源:
- MCP官方文档: https://modelcontextprotocol.io
- LangChain文档: https://python.langchain.com
- OpenClaw项目: https://github.com/openclaw/openclaw
- RAG论文: “Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks”
更新时间: 2026年3月
适用版本: GPT-4 / Claude-3.5 / OpenClaw 2026稳定版及以上
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)