一口气讲清楚 Agent、RAG、Skill、MCP 到底是什么?

📅 发布时间:2026/7/16 15:31:11
一口气讲清楚 Agent、RAG、Skill、MCP 到底是什么? 1. 引言在 AI 大模型LLM飞速发展的今天我们经常听到 Agent、RAG、Skill、MCP 这几个词。它们看似高深其实是构建现代 AI 应用的四大核心组件。本文用最通俗的语言一口气帮你理清它们各自是什么、有什么用、以及它们之间如何协同工作。如果你正在学习如何构建一个真正能干活的 AI 应用而不是只会聊天的机器人那么理解这四个概念就是你的必修课。本文将从零开始逐层深入带你掌握这套完整的 AI 应用架构蓝图。2. Agent智能体—— 会思考、会行动的 AI2.1 什么是 AgentAgent智能体是一个能够自主感知环境、做出决策并执行行动的 AI 程序。它不再只是一个问答机器而是一个能主动完成复杂任务的数字员工。与传统的 AI 对话系统不同Agent 具备以下关键特征自主性不需要人类每一步都给出指令Agent 可以自己决定下一步做什么。反应性能感知环境变化并做出实时响应。主动性不仅被动回答问题还能主动提出建议、发起行动。社交能力能与其他 Agent 或人类协作完成任务。2.2 Agent 的核心能力感知接收用户指令、系统状态、外部数据。规划将复杂任务拆解成多个子步骤并确定执行顺序。决策选择调用哪个工具、使用什么策略、何时需要向用户确认。执行调用外部 API、运行代码、操作数据库、发送消息等。记忆记住对话历史与任务上下文包括短期记忆当前会话和长期记忆持久化存储。反思在执行过程中自我评估如果某个步骤失败能自动调整策略重试。2.3 Agent 的典型架构一个成熟的 Agent 系统通常包含以下组件classAgent:def__init__(self,llm,skills,memory):self.llmllm# 大语言模型大脑self.skillsskills# 可用技能列表self.memorymemory# 记忆系统defrun(self,task):# 1. 理解任务planself.llm.plan(task)# 2. 逐步执行forstepinplan:# 选择技能skillself.select_skill(step)# 执行resultskill.execute(**step.params)# 记录结果self.memory.add(result)# 3. 汇总输出returnself.llm.summarize(self.memory)2.4 举个例子你让 Agent“帮我订一张明天下午从北京到上海的机票并预订一家离虹桥机场 3 公里内的酒店。”Agent 会先调用航班查询 API筛选出合适的航班再调用酒店搜索 API按距离筛选最后汇总结果给你确认并下单。这个例子中Agent 完成了以下步骤任务解析识别出这是一个订机票订酒店的复合任务。子任务拆解拆分为查航班→选航班→查酒店→选酒店→确认下单。工具调用依次调用航班查询 API、酒店搜索 API。条件过滤按明天下午3 公里内等条件筛选结果。用户确认在最终下单前向用户确认避免误操作。执行下单用户确认后调用下单 API 完成操作。3. RAG检索增强生成—— 给 AI 装上外挂知识库3.1 什么是 RAGRAGRetrieval-Augmented Generation检索增强生成是一种让大模型在回答问题时先从外部知识库中检索相关信息再结合这些信息生成答案的技术架构。简单来说RAG 检索Retrieval 生成Generation。它把大模型的知识和外部数据库的事实结合起来让 AI 的回答既聪明又准确。3.2 为什么需要 RAG大模型的知识有截止日期且无法覆盖企业内部文档、实时数据。RAG 解决了三个核心问题知识过时模型训练后新产生的信息比如最新的产品价格、政策法规。幻觉问题模型编造不存在的知识尤其是在专业领域医疗、法律、金融。私有数据企业内部的文档、数据库无法被模型训练比如公司制度、客户信息。3.3 RAG 的完整技术栈一个生产级的 RAG 系统包含以下组件组件作用常见技术选型文档解析将 PDF、Word、网页等转为纯文本Unstructured、PyMuPDF文本切分将长文档切分为合适的片段LangChain TextSplitter、Semantic Chunking向量化将文本转为向量表示OpenAI Embeddings、BGE、text2vec向量数据库存储和检索向量Milvus、Pinecone、Qdrant、Chroma检索器根据查询找到最相关片段向量检索 关键词检索混合检索重排序对检索结果重新排序提升精度Cohere Rerank、BGE Reranker生成器基于检索结果生成最终答案GPT-4、Claude、文心一言3.4 RAG 的工作流程用户提问向量化检索知识库重排序拼接上下文LLM 生成回答输出结果用户提问输入一个问题。向量化将问题转为向量数学表示。检索知识库在向量数据库中查找最相似的文档片段Top-K。重排序对检索到的 K 个结果重新排序把最相关的放在前面。拼接上下文将检索到的文档片段与原始问题拼接成提示词。LLM 生成回答大模型基于拼接后的上下文生成准确答案。3.5 高级 RAG 技术除了基础 RAG还有一些进阶技术可以进一步提升效果HyDE假设文档嵌入先用 LLM 根据问题生成一个假设答案再用这个假设答案去检索提高检索精度。Self-RAG让 LLM 在生成过程中自我判断是否需要检索以及检索结果是否可信。Graph RAG将知识图谱与 RAG 结合不仅能检索文本片段还能理解实体之间的关系。Agentic RAG让 Agent 动态决定何时检索、检索什么、如何组合多个检索结果。3.6 举个例子你问“我们公司去年的营收是多少”如果没有 RAG模型可能回答一个过时的数字。有了 RAG它会先从公司内部财务文档中检索到2025 年营收为 12.8 亿元然后基于这个事实生成答案。更复杂的场景你问“对比我们公司去年和今年的营收分析增长原因。”Agent 会检索去年的财务报告获取2025 年营收 12.8 亿元。检索今年的财务报告获取2026 年营收 15.2 亿元。检索市场分析文档了解行业增长趋势。综合所有信息生成一份包含数据对比和原因分析的回答。4. Skill技能—— Agent 的工具箱4.1 什么是 SkillSkill技能是 Agent 可以调用的一组预定义能力或工具。每个 Skill 封装了一个特定的功能比如搜索网页、“发送邮件”、“计算数学题”、操作数据库等。Skill 是 Agent 与外部世界交互的桥梁。没有 SkillAgent 只是一个纸上谈兵的思考者有了 SkillAgent 才能动手干活。4.2 Skill 的组成一个典型的 Skill 包含名称与描述告诉 Agent 这个技能是做什么的。描述越清晰Agent 越能正确选择。输入参数调用该技能需要提供哪些信息包括参数名、类型、是否必填、描述。执行逻辑实际调用外部 API、运行代码或执行命令。输出格式返回给 Agent 的结果结构包括成功和失败两种情况。错误处理当调用失败时的处理策略比如重试、降级、报错。4.3 Skill 的设计原则设计一个好的 Skill 需要遵循以下原则单一职责每个 Skill 只做一件事比如查询天气和发送邮件应该是两个 Skill。描述清晰描述要足够详细让 Agent 能准确判断何时使用这个 Skill。参数明确参数名和描述要直观避免歧义。错误友好返回的错误信息要可读方便 Agent 决定下一步操作。幂等性对于写操作尽量保证多次调用不会产生副作用。4.4 举个例子# 一个查询天气的 Skill 定义skill_weather{name:get_weather,description:查询指定城市的当前天气包括温度、湿度、风速和天气状况,parameters:{city:{type:string,description:城市名称如北京、上海、New York},unit:{type:string,enum:[celsius,fahrenheit],description:温度单位默认为摄氏度,default:celsius}},execute:lambdacity,unitcelsius:call_weather_api(city,unit),error_handler:lambdaerror:{status:error,message:f查询天气失败{str(error)},suggestion:请检查城市名称是否正确或稍后重试}}Agent 在规划任务时会判断查询天气这个步骤应该调用get_weather这个 Skill。4.5 Skill 的注册与发现在实际系统中Skill 通常通过注册机制让 Agent 发现classSkillRegistry:def__init__(self):self.skills{}defregister(self,skill):注册一个 Skillself.skills[skill[name]]skilldefget_skill(self,name):根据名称获取 Skillreturnself.skills.get(name)deflist_skills(self):列出所有可用的 Skillreturn[{name:s[name],description:s[description]}forsinself.skills.values()]deffind_skills(self,query):根据描述语义搜索 Skill# 可以用向量检索找到最匹配的 Skillpass4.6 Skill 与 Agent 的关系Agent 是大脑负责思考、规划、决策。Skill 是手脚负责执行具体的操作。一个 Agent 可以拥有多个 Skill根据任务需要动态选择调用。Skill 之间可以组合使用形成更复杂的工作流。同一个 Skill 可以被多个 Agent 共享实现能力复用。5. MCP模型上下文协议—— 让 AI 与工具说同一种语言5.1 什么是 MCPMCPModel Context Protocol模型上下文协议是由 Anthropic 提出的一种开放标准协议旨在统一 AI 模型与外部工具、数据源之间的通信方式。你可以把它理解为 AI 世界的USB 接口——只要遵循这个协议任何模型都可以无缝连接任何工具。MCP 于 2024 年 11 月正式开源迅速成为 AI 工具集成的事实标准。它解决了长期以来 AI 应用开发中的一个核心痛点每个工具都需要写一套独立的集成代码。5.2 MCP 解决了什么问题在 MCP 出现之前每个 AI 应用都需要为不同的工具编写不同的集成代码对接 Slack 要写一套代码。对接数据库要写另一套代码。换一个模型所有集成代码可能都要重写。这种点对点的集成方式导致重复劳动每个项目都要重复造轮子。维护困难工具升级或更换时所有集成代码都要修改。生态封闭工具提供商需要为每个 AI 框架单独开发适配器。MCP 通过标准化接口让这一切变得简单MCP 协议层MCP Server大模型文件系统数据库Slack API浏览器5.3 MCP 的核心概念MCP Server提供工具和数据源的服务器遵循 MCP 协议暴露接口。每个 Server 可以暴露多个工具和资源。MCP ClientAI 模型或应用端通过 MCP 协议调用 Server 提供的工具。一个 Client 可以连接多个 Server。资源Resources可读取的数据如文件内容、数据库记录、API 响应。工具Tools可执行的操作如发送消息、运行代码、创建文档。提示词Prompts预定义的模板帮助模型更好地使用工具。传输层Transport支持 stdio本地进程通信和 SSEServer-Sent Events远程通信两种方式。5.4 MCP 的工作流程# MCP Client 连接示例importasynciofrommcpimportClientSession,StdioServerParametersasyncdefmain():# 1. 启动 MCP Server这里以本地文件系统为例server_paramsStdioServerParameters(commandpython,args[-m,mcp_server_filesystem,--allowed-dirs,./data])# 2. 创建客户端会话asyncwithClientSession(server_params)assession:# 3. 获取可用工具列表toolsawaitsession.list_tools()print(可用工具:,[t.namefortintools])# 4. 调用工具resultawaitsession.call_tool(nameread_file,arguments{path:./data/report.md})print(文件内容:,result.content)asyncio.run(main())5.5 MCP 的生态现状截至 2025 年MCP 生态已经非常丰富类别示例数据库PostgreSQL MCP、MySQL MCP、SQLite MCP开发工具GitHub MCP、GitLab MCP、VS Code MCP办公协作Slack MCP、飞书 MCP、Notion MCP云服务AWS MCP、GCP MCP、Cloudflare MCP浏览器Playwright MCP、Puppeteer MCP文件系统本地文件 MCP、S3 MCP、Google Drive MCPAI 服务向量数据库 MCP、Embedding MCP、RAG MCP5.6 举个例子你有一个 MCP Server 连接了公司的飞书文档和 Jira 系统。Agent 通过 MCP 协议只需一句“帮我查一下 Jira 中这个 Sprint 的进度并把结果写到飞书文档里。”它就能自动调用飞书 MCP Server 的读取/写入文档工具以及 Jira MCP Server 的查询任务工具完成跨系统协作。这个例子展示了 MCP 的核心价值统一接口Agent 不需要知道飞书和 Jira 的具体 API 差异。动态发现Agent 可以随时发现新添加的 MCP Server 和工具。安全可控每个 MCP Server 可以独立配置权限和访问控制。跨系统协作多个 MCP Server 可以协同工作完成复杂的跨系统任务。6. 四者如何协同工作现在我们把四个概念串联起来看一个完整的场景场景你是一家电商公司的运营想写一份“上周销售数据分析报告”。Agent大脑接收任务开始规划步骤 1从数据库读取上周销售数据。步骤 2分析数据找出趋势和异常。步骤 3生成报告文档。Agent 调用 Skill工具箱调用query_databaseSkill 读取数据。调用analyze_dataSkill 进行统计分析。调用generate_reportSkill 生成 Markdown 报告。RAG知识库在分析过程中提供辅助Agent 需要了解“去年同期的促销策略”通过 RAG 从公司知识库中检索到相关文档。需要参考“行业平均转化率”通过 RAG 从外部行业报告中检索。MCP协议层让这一切无缝连接query_databaseSkill 通过 MCP 协议连接公司 MySQL 数据库。generate_reportSkill 通过 MCP 协议连接飞书文档 API。RAG 的向量数据库也通过 MCP 协议暴露检索接口。Agent 不需要关心底层是 MySQL 还是 PostgreSQL是飞书还是钉钉——MCP 统一了调用方式。7. 总结概念一句话概括类比Agent能自主思考、规划、执行任务的 AI 程序数字员工RAG让 AI 在回答时先检索外部知识库再生成答案外挂知识库SkillAgent 可以调用的具体功能模块工具箱里的工具MCP统一 AI 与外部工具通信的开放协议AI 世界的 USB 接口这四个技术不是互相替代的关系而是层层递进、协同工作的RAG解决了“知识从哪里来”的问题。Skill解决了“能力从哪里来”的问题。MCP解决了“如何统一连接这些能力和知识”的问题。Agent则把这一切整合起来成为一个能真正帮你干活的智能体。理解了它们你就掌握了构建下一代 AI 应用的核心蓝图。