ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

LLM、Agent、Skills、MCP:AI应用开发四层架构实战指南,手把手教你构建智能体!

LLM、Agent、Skills、MCP:AI应用开发四层架构实战指南,手把手教你构建智能体! 本文深入解析了AI开发中的四个核心概念LLM、Agent、Skills和MCP将其构建为四层架构通过实战案例自动发布博客阐述其各自功能和交互方式。LLM负责推理与生成Agent负责决策与循环Skills是将任务流程结构化为可复用文档MCP则作为标准协议实现工具的安全、标准化调用。文章强调理解各层职责对于排查问题和提升AI应用效率的重要性并建议从编写MCP Server开始实践以深入掌握AI应用开发的全貌。引言打开任何一份 AI 行业报告你都会反复看到四个词LLM、Agent、Skills、MCP。它们被同时提及的频率越来越高但很少有人把它们讲清楚——很多教程把 LLM 和 Agent 混为一谈把 Skills 说成”高级 Prompt”把 MCP 当成”新版 Function Calling”。这种混淆带来的直接后果是你买了一堆工具读了很多教程却仍然写不出一个能落地的 AI 应用。因为你不清楚每一层负责什么、层与层之间靠什么接口通信、出了问题该在哪一层排查。本文不打算重复”什么是大模型”这种科普而是把四个概念拆成四层架构用一套贯穿始终的实战案例自动发布博客讲清楚LLM 是大脑负责推理与生成Agent 是大脑加上四肢负责决策与循环Skills 是肌肉记忆负责把”怎么做”沉淀成可复用流程MCP 是神经系统负责让 Agent 安全、标准化地调用外部工具。读完之后你应该能自己画出一张架构图并且知道该给哪一层加什么代码。一、四个概念各是什么1. LLM大脑LLMLarge Language Model大语言模型是一个在海量文本上训练的神经网络输入一段文本输出一段文本。它本身不会上网、不会读文件、不会执行命令——它只会”预测下一个 token”。关键点LLM 是无状态的。它不知道你是谁、不知道上次聊到哪、不知道你项目里有哪些文件。所有”记住””执行”的能力都是在它之外搭起来的。# LLM 的本质一个纯函数输入 token输出 token def llm(prompt: str) - str: # 没有工具、没有文件、没有网络——只有预测 return 根据您提供的信息建议您…… answer llm(Ubuntu 22.04 怎么升级内核)2. Agent大脑 四肢 循环Agent智能体是围绕 LLM 搭建的一个运行循环用户给目标 → LLM 规划 → 调用工具 → 观察结果 → 再规划 → …… 直到目标完成。同样是”升级内核”这个需求LLM 只能输出一段文字建议Agent 会真的去ssh到服务器、执行apt、检查日志、失败重试最后回报”已升级到 5.15.0-124″。区别不在于模型能力而在于有没有一个循环在持续调用工具并观察结果。用户目标 │ ▼ ┌──────────────────────────┐ │ Agent Loop决策循环 │ │ ┌────────┐ ┌────────┐ │ │ │ LLM │──▶│ Planner│ │ │ │(推理) │◀──│ │ │ │ └────────┘ └───┬────┘ │ │ ▲ │ │ │ │ ▼ │ │ 观察结果 ◀── 工具执行 │ │ (Observation) (Tool Call)│ └──────────────────────────┘3. Skills可复用的肌肉记忆Skills技能是把”完成某类任务的标准流程”写成的结构化文档通常是一个带 YAML 头部的 Markdown 文件让 Agent 遇到同类任务时直接照做而不必每次都重新摸索。一个 Skill 至少包含触发条件什么情况下该用这个技能步骤带精确命令的操作序列坑点Pitfalls踩过的失败路径及规避方法验证方式怎么确认做对了。Skill 和 Prompt 的本质区别是Prompt 是一次性的口头交代Skill 是沉淀下来的书面 SOP。Prompt 写错了这一次就浪费了Skill 修一次之后每次执行都受益。4. MCP工具接入的标准协议MCPModel Context Protocol模型上下文协议是一套让 LLM/Agent标准化调用外部工具的协议本质是 JSON-RPC 2.0 之上的约定。在它出现之前每接一个工具都要写一套专属的胶水代码OpenAI 的 Function Calling、Anthropic 的 Tool Use、各家 SDK 的自定义 schema…… MCP 把这些统一成三种原语原语方向作用tools/list客户端 → 服务端服务端宣告”我能提供哪些工具”tools/call客户端 → 服务端客户端请求执行某个工具resources/*双向暴露文档、文件等上下文资源一句话理解MCP Server 是把工具封装成标准接口的进程MCP Client 是负责发现和调用的那一方。Agent 只需要连 Client不需要知道工具背后的实现细节。5. 四层总览┌─────────────────────────────────────────┐ │ L1 Skills 可复用流程 / SOP │ ← 解决怎么做 ├─────────────────────────────────────────┤ │ L2 Agent 决策循环 / 工具编排 │ ← 解决谁来做 ├─────────────────────────────────────────┤ │ L3 MCP 工具接入标准协议 │ ← 解决怎么调 ├─────────────────────────────────────────┤ │ L4 LLM 推理与文本生成 │ ← 解决想什么 └─────────────────────────────────────────┘排查问题的方向也是反的结果不对先看 L2循环决策是不是错了工具调用失败看 L3协议/参数输出质量差看 L4模型/Prompt流程跑偏看 L1Skill 描述是否准确。二、实战一个 Agent 自动发布博客下面用一个真实场景把四层串起来让 Agent 读到 Markdown 稿件转成 HTML发布到 WordPress再把链接回传。1. Agent 主循环L2Agent 的核心就是一个 while 循环调用 LLM 决定下一步执行工具把结果喂回去。import json import subprocess def agent_loop(goal: str, max_turns: int 10) - str: 最简 Agent 循环LLM 规划 工具执行 观察结果 messages [{role: user, content: goal}] for turn in range(max_turns): # 1) LLM 规划下一步这里抽象掉具体模型调用 decision call_llm(messages, toolsTOOL_SCHEMAS) # 2) 如果没有工具调用说明任务完成 if not decision.get(tool_calls): return decision[content] # 3) 执行工具把结果追加进上下文 for call in decision[tool_calls]: result dispatch_tool(call[name], call[arguments]) messages.append({ role: tool, name: call[name], content: json.dumps(result, ensure_asciiFalse), }) return 达到最大轮次任务未完成这里的dispatch_tool就是 L3MCP要接管的地方。2. 加载 SkillsL1Agent 启动时扫描技能目录把命中的 Skill 注入上下文让 LLM”照着 SOP 做”。# 扫描可用技能并提取 frontmatter for skill in /root/.hermes/skills/web-development/wordpress-install; do echo $(basename $skill) sed -n /^---$/,/^---$/p $skill/SKILL.md | head -n 8 done # 统计技能总数与分类 find /root/.hermes/skills -name SKILL.md | wc -l find /root/.hermes/skills -mindepth 1 -maxdepth 1 -type d | sort输出示例 wordpress-install --- name: wordpress-install description: 安装、配置、管理和发布 WordPress — 包括手动部署、wp-cli 管理、REST API / Direct PHP 自动发文... version: 1.0.1 --- 72 /root/.hermes/skills/web-development /root/.hermes/skills/devops /root/.hermes/skills/research3. 通过 MCP 调用工具L3Agent 不直接exec发布脚本而是通过 MCP Client 请求一个”publish 工具”。Client 配置文件声明要连哪些 Server{ mcpServers: { filesystem: { command: npx, args: [-y, modelcontextprotocol/server-filesystem, /home/wwwroot], transport: stdio }, wordpress: { command: python3, args: [/root/tools/wp-mcp-server.py], env: { WP_DIR: /home/wwwroot/www.stellardata.top }, transport: stdio } } }Agent 拿到tools/list返回后会看到类似这样的工具清单{ tools: [ { name: wp_publish_markdown, description: 将本地 Markdown 文件转换为 HTML 并发布到 WordPress, inputSchema: { type: object, properties: { path: { type: string, description: Markdown 文件绝对路径 }, category: { type: string, description: WordPress 分类名称 } }, required: [path] } } ] }4. MCP 协议的原始报文MCP 走 JSON-RPC 2.0一次完整的”列出工具 → 调用工具”长这样// 请求列出可用工具 { jsonrpc: 2.0, id: 1, method: tools/list, params: {} } // 响应调用 publish 工具 { jsonrpc: 2.0, id: 2, result: { content: [ { type: text, text: Published: https://www.stellardata.top/?p3263 } ] } }关键在于Agent 侧只依赖tools/listtools/call这两个方法名工具实现在哪台机器、用哪种语言写它完全不用关心。5. 客户端与运行时配置MCP Server 的运行参数通常放在配置文件和环境变量里# Hermes Agent 的 MCP 客户端配置片段 mcp: enabled: true servers: wordpress: command: python3 args: [/root/tools/wp-mcp-server.py] transport: stdio timeout: 60 filesystem: command: npx args: [-y, modelcontextprotocol/server-filesystem, /home/wwwroot]; MCP Server 运行时配置.env / INI 风格 [wordpress] WP_DIR /home/wwwroot/www.stellardata.top POST_AUTHOR 1 DEFAULT_CATEGORY IT互联网 FEATURED_IMAGE_ID 1623 [security] ; 允许 Agent 发布的分类白名单 ALLOWED_CATEGORIES IT互联网,IT资讯,大数据 ; 是否允许覆盖已有文章 ALLOW_OVERWRITE false三、动手写一个 MCP Server理论讲完下面给一个可直接运行的最小 MCP Server把”发布 Markdown”暴露成标准工具。1. Server 实现#!/usr/bin/env python3 最小 WordPress MCP Server把发布能力暴露为标准 MCP 工具 import json import os import subprocess import sys WP_DIR os.environ.get(WP_DIR, /home/wwwroot/www.stellardata.top) PUBLISH_SH /root/.hermes/skills/web-development/wordpress-install/scripts/direct-publish.sh TOOLS [{ name: wp_publish_markdown, description: 将本地 Markdown 文件发布到 WordPress, inputSchema: { type: object, properties: { path: {type: string, description: Markdown 文件路径} }, required: [path], }, }] def handle_publish(args: dict) - dict: proc subprocess.run( [bash, PUBLISH_SH, args[path]], capture_outputTrue, textTrue, cwdWP_DIR, timeout120, ) return {stdout: proc.stdout, stderr: proc.stderr, code: proc.returncode} def dispatch(request: dict) - dict: method request.get(method) rid request.get(id) if method tools/list: return {jsonrpc: 2.0, id: rid, result: {tools: TOOLS}} if method tools/call: name request[params][name] args request[params][arguments] if name wp_publish_markdown: return {jsonrpc: 2.0, id: rid, result: {content: [{type: text, text: json.dumps(handle_publish(args), ensure_asciiFalse)}]}} return {jsonrpc: 2.0, id: rid, error: {code: -32602, message: funknown tool: {name}}} return {jsonrpc: 2.0, id: rid, error: {code: -32601, message: funknown method: {method}}} def main(): for line in sys.stdin: line line.strip() if not line: continue sys.stdout.write(json.dumps(dispatch(json.loads(line)), ensure_asciiFalse) n) sys.stdout.flush() if __name__ __main__: main()2. 本地连通性验证不启动完整 Agent直接用管道验证 Server 是否正常响应printf %sn {jsonrpc:2.0,id:1,method:tools/list,params:{}} | python3 /root/tools/wp-mcp-server.py | python3 -m json.tool # 验证 WordPress 环境就绪 cd /home/wwwroot/www.stellardata.top php -r define(WP_USE_THEMES, false); require(wp-load.php); echo WP OK: . get_bloginfo(name) . n; # 检查发布脚本可执行 test -x /root/.hermes/skills/web-development/wordpress-install/scripts/direct-publish.sh echo publish.sh OK3. 端到端调用# 准备一篇测试稿件 cp /tmp/auto_article.md /tmp/mcp-test-article.md # 直接调用工具方法绕过 Agent printf %sn {jsonrpc:2.0,id:2,method:tools/call,params:{name:wp_publish_markdown,arguments:{path:/tmp/mcp-test-article.md}}} | python3 /root/tools/wp-mcp-server.py执行成功后result.content[0].text里会包含发布脚本的 stdout其中包括文章 ID 与 permalink。四、常见问题Q1LLM 和 Agent 是同一个东西吗不是。LLM 是一个模型一次输入、一次输出、无状态Agent 是运行 LLM 的循环 工具编排层。同一个 GPT-4 或 Qwen接进不同 Agent 框架后能力差异巨大——差异全部来自 L2而不是 L4。Q2Skills 不就是更长的 Prompt 吗表面像机制不同。Prompt 是本次会话的临时指令Skill 是持久化、带元数据、可版本管理的流程文档Agent 会按触发条件按需加载只在需要时占用上下文。工程上还多出三层价值可复用多个 Agent 共享、可维护改一次全局生效、可验证Skill 里的验证步骤。Q3MCP 会取代 Function Calling 吗互补而非替代。Function Calling 是模型层能力教模型如何吐出结构化参数MCP 是协议层标准定义工具如何被发现与调用。模型输出 Function Calling 格式的 JSONAgent 再通过 MCP 路由到具体 Server。MCP 解决的是”生态碎片化”Function Calling 解决的是”模型会不会调”。Q4我需要自己写 MCP Server 吗看场景。如果只是个人使用现成工具文件系统、GitHub、Slack直接用官方 Server 即可。但如果你的核心能力藏在内部系统里公司 CMS、内网数据库、私有 API写一个 Server 把能力封装成标准工具是整个 Agent 体系里 ROI 最高的一步——一次封装所有 Agent 都能调用。Q5Skills 有安全风险吗有而且是供应链风险。Agent 会信任并执行 Skill 里的命令一个恶意 Skill 等同于给 Agent 一把万能钥匙。三点防御① 只从可信来源安装 Skill② 安装前审读全文尤其是含rm、curl | sh、凭据读取的步骤③ 高权限操作写数据库、发消息、扣费在 Agent 侧设确认门禁不要让 Skill 单独决定。2026年AI行业最大的机会毫无疑问就在应用层字节跳动已有7个团队全速布局Agent大模型岗位暴增69%年薪破百万腾讯、京东、百度开放招聘技术岗80%与AI相关……如今超过60%的企业都在推进AI产品落地而真正能交付项目的大模型应用开发工程师****却极度稀缺落地AI应用绝对不是写几个prompt调几个API就能搞定的企业真正需要的是能搞定这三项核心能力的人✅RAG融入外部信息修正模型输出给模型装靠谱大脑✅Agent智能体让AI自主干活通过工具调用Tools环境交互多步推理完成复杂任务。比如做智能客服等等……✅微调针对特定任务优化让模型适配业务目前脉脉上有超过1000家企业发布大模型相关岗位人工智能岗平均月薪7.8w实习生日薪高达4000远超其他行业收入水平技术的稀缺性才是你「值钱」的关键具备AI能力的程序员比传统开发高出不止一截有的人早就转行AI方向拿到百万年薪AI浪潮正在重构程序员的核心竞争力现在入场仍是最佳时机我把大模型的学习全流程已经整理好了抓住AI时代风口轻松解锁职业新可能希望大家都能把握机遇实现薪资/职业跃迁这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】⭐️从大模型微调到AI Agent智能体搭建剖析AI技术的应用场景用实战经验落地AI技术。从GPT到最火的开源模型让你从容面对AI技术革新大模型微调掌握主流大模型如DeepSeek、Qwen等的微调技术针对特定场景优化模型性能。学习如何利用领域数据如制造、医药、金融等进行模型定制提升任务准确性和效率。RAG应用开发深入理解检索增强生成Retrieval-Augmented Generation, RAG技术构建高效的知识检索与生成系统。应用于垂类场景如法律文档分析、医疗诊断辅助、金融报告生成等实现精准信息提取与内容生成。AI Agent智能体搭建学习如何设计和开发AI Agent实现多任务协同、自主决策和复杂问题解决。构建垂类场景下的智能助手如制造业中的设备故障诊断Agent、金融领域的投资分析Agent等。如果你也有以下诉求快速链接产品/业务团队参与前沿项目构建技术壁垒从竞争者中脱颖而出避开35岁裁员危险期顺利拿下高薪岗迭代技术水平延长未来20年的新职业发展……那这节课你一定要来听因为留给普通程序员的时间真的不多了立即扫码即可免费预约「AI技术原理 实战应用 职业发展」「大模型应用开发实战公开课」还有靠谱的内推机会直聘权益完课后赠送大模型应用案例集、AI商业落地白皮书
返回列表