一文搞懂 AI Agent 核心支柱:从 Tools 到 MCP,从 Skills 到 Loop
一文搞懂 AI Agent 核心支柱从 Tools 到 MCP从 Skills 到 Loop摘要2025 年是 AI Agent 的爆发年但很多开发者分不清 Function Call、MCP、Skills 和 Loop 的区别。本文将从“手”、“接口”、“手艺”和“大脑运行”四个维度结合 Python 代码与实践架构彻底拆解这四大核心概念并手把手教你如何将它们串联成一个可用的 Agent 系统。前言为什么你的 AI 总在“一本正经地胡说八道”传统的 LLM大语言模型像是一个博学的“植物人”——脑子里有无穷知识但无法触碰现实世界。它不会查实时天气不会操作数据库更不会自己写代码并运行。为了让 AI “活” 过来业界在短短两年内构建了一套完整的技术栈。这套技术栈的四个基石就是Tools工具、MCP协议、Skills技能和Loop循环。很多新手容易把它们混为一谈其实它们的职责边界非常清晰Tools解决“能干啥”原子能力MCP解决“怎么接进来”统一接口Skills解决“怎么干好”流程编排Loop解决“怎么干完”自主迭代下面我们逐一深入。一、Tools工具LLM 的“手脚”——最底层的原子能力1.1 什么是 Tools在 OpenAI 提出 Function Calling 之前想让 LLM 调用外部函数你得用繁琐的提示词工程如 ReAct 风格的文本解析。现在Tools通过标准的 JSON Schema 描述函数签名让 LLM 能够“感知”外部世界。说白了Tools 就是一个个封装好的函数Function比如get_weather(city)、search_web(query)、execute_python(code)。1.2 代码实战标准 Tools 定义Python在最新的 OpenAI SDK 或 LangChain 中Tool 的定义长这样fromtypingimportLiteralfrompydanticimportBaseModel# 1. 定义输入参数的 SchemaclassWeatherInput(BaseModel):city:strunit:Literal[celsius,fahrenheit]celsius# 2. 定义工具的具体执行逻辑defget_weather(params:WeatherInput)-str:# 模拟真实 API 调用returnf{params.city}当前气温 22°天气晴朗。# 3. 生成 Tool 描述传给 LLM 的 JSONtool_definition{type:function,function:{name:get_weather,description:获取指定城市的实时天气信息,parameters:WeatherInput.model_json_schema(),}}关键点Tools 必须是**无状态Stateless且原子性Atomic**的一个 Tool 只专注做一件事。二、MCP模型上下文协议AI 界的“USB-C 万能接口”2.1 Tools 的痛点碎片化严重假设你给 ChatGPT 写了一套基于openai格式的 Tools想迁移到 Claude 或本地开源的 Llama 上发现它们的 Tool Calling 格式完全不同有的要求 XML有的要求特定 JSON。每接一个新模型就要重写所有工具适配层——极其痛苦。2.2 MCP 的诞生MCPModel Context Protocol由 Anthropic 在 2024 年底开源。它定义了一套标准化的 Client-Server 架构MCP Server暴露工具、资源Resource和提示词Prompt比如一个“本地文件系统 Server”或“GitHub Server”。MCP ClientAI 应用如 Claude Desktop、Cursor、VS Code 插件。只要 Client 和 Server 都遵循 MCP 协议基于 JSON-RPC 2.0AI 就能动态发现并即插即用所有工具。2.3 MCP 通信流程精简版// Client 发送初始化请求发现可用工具{jsonrpc:2.0,id:1,method:tools/list,params:{}}// Server 返回可用工具列表{jsonrpc:2.0,id:1,result:{tools:[{name:read_file,description:读取本地文件,inputSchema:{type:object,properties:{path:{type:string}}}}]}}CSDN 划重点MCP 让 AI 应用从“单机写死工具”进化到了“动态插拔生态”。未来MCP Server 会像 npm 包一样丰富开发者只需要维护一个 MCP Client就能调用全世界的工具生态。三、Skills技能把“工具”变成“手艺”有了 Tools锤子、钉子和 MCP能够到任何工具箱AI 就能干好活了吗不能。因为干好一项复杂任务需要的是流程而不是孤立的 API。3.1 Tools vs SkillsTools“打开文件”、“写入代码”、“执行终端命令”。Skills“创建一个 Spring Boot 博客系统” —— 它内部封装了检查环境 - 创建项目结构 - 写入依赖文件 - 生成 Entity/Controller - 编译运行 - 若报错则修复这一整套工作流。3.2 Skills 的核心特征渐进式披露Progressive DisclosureSkills 和 Tools 最大的工程区别在于上下文占用。Tools 的定义必须始终塞进 System Prompt占满上下文窗口Context Window。Skills 采用按需加载。系统先给 LLM 一个极简的 Skill 列表只包含名称和一句话描述。当 LLM 决定调用某个 Skill 时系统才把该 Skill 的详细指令Prompt和依赖的子工具注入上下文。Skills 文件结构示例参考开源项目 anthropic/skillsmy-blog-generator/ ├── SKILL.md # 主指令定义角色、流程、约束条件 ├── scripts/ # 关联的 Python/Shell 脚本 ├── references/ # 参考文档如 API 文档、架构图 └── assets/ # 模板文件如 HTML 模板四、Loop反馈循环Agent 的“永动机”LLM 是一次性推理InferenceAgent 是循环推理Iterative Reasoning。Loop 就是 Agent 的灵魂。它模拟了人类的思考模式思考Think→ 行动Act→ 观察Observe→ 再思考Re-think。这就是著名的ReActReason Act范式。4.1 一个极简的 Agent Loop 核心代码importjsonfromtypingimportList,DictclassSimpleAgent:def__init__(self,llm,tools:List[Dict]):self.llmllm self.toolstools self.messages[]self.max_iterations10defrun(self,user_goal:str):self.messages.append({role:user,content:user_goal})forstepinrange(self.max_iterations):# 1. 思考调用 LLM 获取下一步动作responseself.llm.chat(messagesself.messages,toolsself.tools,# 传入可用工具tool_choiceauto)# 2. 判断LLM 是否想调用工具ifresponse.tool_calls:fortool_callinresponse.tool_calls:# 3. 行动执行工具tool_nametool_call.function.name tool_argsjson.loads(tool_call.function.arguments)resultself._execute_tool(tool_name,tool_args)# 4. 观察将结果喂回给 LLMself.messages.append({role:tool,tool_call_id:tool_call.id,content:result})print(f[Step{step}] 调用{tool_name}返回:{result[:50]}...)else:# 如果没有工具调用说明任务完成返回最终答案returnresponse.contentreturn达到最大迭代次数任务终止。4.2 工业级 Loop 的“六块积木”一个能上生产环境的 Loop远不止上面几行代码。它需要Automations触发器支持定时或 Webhook 自动唤醒 Loop。Worktrees隔离环境每一次新任务运行在独立的 Git Worktree 或 Docker 容器中互不污染。Sub-agents多智能体协作分解任务比如“代码编写员”负责写代码“代码审查员”负责挑错由主 Loop 协调。Memory记忆系统使用向量数据库如 Milvus或 Redis将长期记忆存储在模型外部支持跨会话回忆。五、一图流四大概念的协作关系CSDN 读者最爱为了方便大家记忆我将它们整理为一张逻辑拓扑图文字版用户输入“帮我部署一个个人网站” │ ▼ ┌───────────────────────────────────────┐ │ Agent Core (大脑运行机制 - Loop) │ ← 在这里进行 Plan→Execute→Observe └───────────────────────────────────────┘ │ 拆解任务 ▼ ┌───────────────────────────────────────┐ │ 技能层 (Skills - 流程封装) │ │ “部署网站 Skill” │ ← 渐进式加载节省 Token └───────────────────────────────────────┘ │ 调用底层基础能力 ▼ ┌───────────────────────────────────────┐ │ 协议层 (MCP - 统一接口) │ ← USB-C 接口连接万物的桥梁 └───────────────────────────────────────┘ │ │ │ │ ▼ ▼ ▼ ▼ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ 文件工具 │ │ 终端工具 │ │ 云端API │ ← 原子能力 (Tools) └──────────┘ └──────────┘ └──────────┘六、总结与最佳实践建议干货如果你是初学者请按以下顺序学习先死磕Tools熟练使用 OpenAI / DashScope 的 Function Calling这是地基。再理解MCP试着跑通 Claude Desktop 的本地 MCP Server比如 Filesystem感受“即插即用”的魅力。接着模仿Loop自己用 Python 写一个 50 行的while循环 ReAct Agent你会有茅塞顿开的感觉。最后封装Skills把你经常做的一套流程比如“周报生成器”、“代码单元测试生成器”封装成 Skill 目录结构沉淀为自己的数字资产。最后一句忠告不要把所有的逻辑都塞进 System Prompt善用 Tools 抽离计算逻辑善用 MCP 解耦外部依赖善用 Skills 管理复杂流程善用 Loop 处理不确定性。这四者配合才是未来 AI 应用开发的正确范式。 欢迎在评论区留言讨论你在接入 MCP 或封装 Skills 时遇到的坑如果本文对你有帮助请点赞收藏后续我会出一期《手写一个支持 MCP 协议的轻量级 Agent 框架》

相关新闻

ESP32-S3触摸屏开发实战:从硬件解析到LVGL界面设计

ESP32-S3触摸屏开发实战:从硬件解析到LVGL界面设计

1. 项目概述:当ESP32-S3遇上触摸屏 如果你玩过ESP32,可能会觉得它已经很强大了,集成了Wi-Fi和蓝牙,能做不少物联网项目。但当你拿到一块带触摸屏的ESP32-S3开发板,比如我手头这块“ESP32-S3-Touch-LCD-5”,…

2026/10/7 13:26:56 阅读更多 →
程序员客栈接单全攻略:避开5大坑,高效拿下项目

程序员客栈接单全攻略:避开5大坑,高效拿下项目

很多想做兼职的程序员都在问:怎么在程序员客栈接单?我先说一个容易误解的地方:注册成功不等于进入接单状态,资料填得多详细也不等于马上会有项目。按照平台流程,开发者需要先完成资料填写和签约审核,再进入…

2026/10/7 14:03:59 阅读更多 →
企业级AI对话应用架构深度解析:Next.js与OpenAI Responses API的现代化集成方案

企业级AI对话应用架构深度解析:Next.js与OpenAI Responses API的现代化集成方案

企业级AI对话应用架构深度解析:Next.js与OpenAI Responses API的现代化集成方案 【免费下载链接】openai-responses-starter-app Starter app to build with the OpenAI Responses API 项目地址: https://gitcode.com/gh_mirrors/op/openai-responses-starter-app…

2026/10/1 7:47:00 阅读更多 →

最新新闻

Java Web传统项目实战:Servlet+JSP+MySQL全链路拆解

Java Web传统项目实战:Servlet+JSP+MySQL全链路拆解

简介:这是一套基于Java技术栈开发的电影网站完整源码,面向Java Web初学者与项目实践者,旨在帮助开发者掌握Servlet、JSP、MVC架构及数据库交互等核心技能。资源包含前端页面、后台逻辑、数据库脚本及配置文件,采用Spring、MyBatis…

2026/10/7 14:03:59 阅读更多 →
SpringBoot医院挂号系统并发与事务实战指南

SpringBoot医院挂号系统并发与事务实战指南

简介:本资源是一套面向计算机专业本科生的Java毕业设计实战项目,基于SpringBoot框架开发的医院挂号系统,适用于课程设计、毕设选题与Web全栈能力训练。系统覆盖患者挂号、医生排班、科室管理、缴费结算等核心医疗业务流程,技术栈聚…

2026/10/7 14:03:59 阅读更多 →
AI智能体Skills:可插拔能力模块的GKE生产实践

AI智能体Skills:可插拔能力模块的GKE生产实践

1. 这个“skills”到底是什么?不是技能清单,而是智能体的可插拔能力模块 最近在技术圈里,“skills”这个词被反复提起,但很多人一搜就懵——它既不是简历上写的“Python熟练”“沟通能力强”,也不是某款App里的成就徽…

2026/10/7 14:02:59 阅读更多 →
显式上下文模式:让LLM该记的记住,该忘的忘掉

显式上下文模式:让LLM该记的记住,该忘的忘掉

1. 为什么需要显式的“上下文模式”:一次对话事故引发的重构年初在做一个内部知识库问答机器人时,我被一个看似简单的问题折磨了整整两周——系统明明把用户的所有历史对话都拼进 prompt 传给了模型,结果模型还是频频答非所问。最典型的一次事…

2026/10/7 14:02:59 阅读更多 →
FPGA实战:基于MIG的DDR3控制器配置与调试详解

FPGA实战:基于MIG的DDR3控制器配置与调试详解

搞FPGA的工程师,基本都绕不过DDR3。我第一次在Kintex-7上接DDR3颗粒时,天真地想自己写控制器状态机,结果光是把刷新、预充电、激活、突发读写的调度规则理清楚,就花了一个多星期,最后还是回到了Xilinx的MIG IP核这条路…

2026/10/7 14:02:59 阅读更多 →
Xbox手柄做遥操作:Robosuite+UR5e 6自由度控制全攻略

Xbox手柄做遥操作:Robosuite+UR5e 6自由度控制全攻略

前阵子我在Robosuite里做机械臂遥操作实验,折腾了一圈键盘、鼠标甚至写了个简陋的Web界面,最后发现最顺手的输入设备居然是我游戏机上吃灰的Xbox手柄。把Xbox手柄和OSC控制器接上之后,UR5e末端在仿真里就像长了眼睛一样,指哪打哪&…

2026/10/7 14:02:59 阅读更多 →

日新闻

ROS2机械臂仿真与运动控制:从URDF建模到Gazebo实战全解析

ROS2机械臂仿真与运动控制:从URDF建模到Gazebo实战全解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 1:01:58 阅读更多 →
用浏览器直接改ESP32的WiFi密码:NVS键值配置工具设计与实现

用浏览器直接改ESP32的WiFi密码:NVS键值配置工具设计与实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 1:02:00 阅读更多 →
芯片封装缺陷检测:扫描声学显微镜(SAT)原理与实操指南

芯片封装缺陷检测:扫描声学显微镜(SAT)原理与实操指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 1:02:00 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/6 7:15:40 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/6 5:29:09 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 9:29:10 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/6 8:21:32 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 11:43:46 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 13:34:55 阅读更多 →