agent,skill,mcp,请讲解,各个的功能和之间的关系
agent,skill,mcp,请讲解,各个的功能和之间的关系
在 AI 智能体(Agent)体系里,Agent 是大脑、Skill 是执行能力、MCP 是标准化连接协议,三者分层协作、缺一不可。下面用清晰定义、功能、关系、实战流程帮你彻底理解。
一、核心概念与功能
- Agent(智能体)
定位:系统的决策大脑,负责理解目标、拆解任务、规划路径、调度资源、评估结果。核心功能:
目标驱动:接收用户目标,自主拆解为子任务
多步推理:用 ReAct/CoT 等方式做规划
工具调度:决定何时、调用哪个 Skill
记忆管理:维护上下文与长期记忆
自我反思:根据结果调整策略
比喻:项目总指挥 / 项目经理 - Skill(技能)
定位:原子执行单元,封装可复用的具体能力,是 Agent 的 “手脚 / 工具箱”。核心功能:
单一职责:一个 Skill 只做一件事(查天气、发邮件、生成图表、调用 API)
可组合:多个 Skill 可串联成复杂工作流
标准化输入输出:明确参数与返回格式
可扩展:新增 Skill 不影响 Agent 核心逻辑
分类:
原生技能:代码实现(计算、文件操作)
语义技能:基于 Prompt(摘要、情感分析)
工具技能:封装外部服务(数据库、天气接口)
比喻:专业执行专员 / 工具包 - MCP(Model Context Protocol,模型上下文协议)
定位:标准化通信与调度层,解决 Agent 与 Skill / 外部服务的 “连接兼容” 问题。核心功能:
统一接口:为所有 Skill / 工具提供标准调用规范,消除框架 / 语言差异
能力发现:让 Agent 自动发现可用 Skill
权限与安全:控制调用范围、做鉴权
上下文传递:在 Agent 与 Skill 间传递会话状态
跨环境兼容:本地 / 云端、不同语言互操作
关键澄清:MCP 不是工具 / 能力,而是协议规范(类似 USB 标准、插座标准)
比喻:万能插座 / 国际通用语言 / 项目经理的调度系统
二、三者关系(一句话 + 架构图)
一句话总结
Agent 决定做什么、Skill 提供怎么做、MCP 保证能安全、标准地连接与调用。
分层架构(从上到下)
Agent 层:决策中枢(大脑)
Skill 层:执行能力库(手脚)
MCP 层:标准化连接协议(通信总线)
外部世界:API、数据库、文件、服务
核心关系
Agent 依赖 Skill:没有 Skill,Agent 只有思考、没有行动能力
Skill 依赖 MCP:没有 MCP,Skill 无法被不同 Agent / 框架统一调用
MCP 服务 Agent+Skill:MCP 是中间件,不产生业务能力,只做连接与调度
三、实战流程(以 “生成月度销售报表” 为例)
用户给 Agent 目标:生成 3 月销售报表并邮件发送
Agent 决策:
拆解任务:查数据库 → 生成图表 → 写报告 → 发邮件
确定需要:query_db、gen_chart、write_report、send_email 四个 Skill
Agent 通过 MCP 调度:
向 MCP 发起调用请求,指定 Skill 与参数
MCP 做权限校验、参数校验、路由到对应 Skill
Skill 执行:
query_db:从数据库拉取 3 月数据
gen_chart:用数据生成折线 / 柱状图
write_report:整合数据 + 图表生成 PDF
send_email:把 PDF 发给指定邮箱
MCP 回传结果:将每个 Skill 的执行结果返回给 Agent
Agent 评估:检查是否成功,完成后告知用户
四、关键区别对比表
表格
维度 Agent Skill MCP
核心角色 决策大脑 执行单元 连接协议
解决问题 做什么、怎么规划 具体怎么做 怎么安全、标准地连接
抽象层级 最高(业务逻辑) 中层(能力封装) 底层(通信规范)
自主能力 强(自主推理、规划) 无(被动调用) 无(纯调度)
形态 系统 / 框架 函数 / 模块 / 服务 协议规范 + SDK
用户可见 直接交互 间接可见 通常不可见
五、一句话记忆口诀
Agent 定方向,Skill 干实事,MCP 通天下。
需要我用一个可直接运行的极简代码示例(Python),演示 Agent 如何通过 MCP 调用一个 Skill 吗?
========================================
下面用极简、可直接看懂的 Python 代码,模拟:Agent(大脑) → 通过 MCP 协议 → 调用 Skill(执行能力)
不搞复杂框架,只保留核心逻辑,一眼看懂三者关系。
- 先定义三者角色
Agent:做决策、规划、决定调用哪个 Skill
Skill:具体干活的函数(查天气、发消息、计算等)
MCP:统一调用协议 / 中间层,负责路由、校验、转发 完整可运行代码
直接复制到 Python 即可跑:
python
运行==============================================
1. Skill:具体能力(执行单元)
==============================================
def skill_weather(city: str) -> str:
"""技能:查询天气"""
return f"【{city}】天气:晴,25℃"
def skill_calculate(a: int, b: int, op: str) -> int:
"""技能:简单计算"""
if op == "+": return a + b
if op == "-": return a - b
if op == "*": return a * b
if op == "/": return a // b
return 0
def skill_send_message(user: str, content: str) -> str:
"""技能:发送消息"""
return f"已向【{user}】发送消息:{content}"
==============================================
2. MCP:模型上下文协议(统一调度层)
==============================================
class MCP:
def __init__(self):
# 注册所有可用技能
self.skills = {
"weather": skill_weather,
"calculate": skill_calculate,
"send_message": skill_send_message
}
def call_skill(self, skill_name: str, **kwargs):
"""MCP 统一调用入口:校验 → 路由 → 执行 → 返回结果"""
if skill_name not in self.skills:
return f"错误:技能 {skill_name} 不存在"
# 真实 MCP 还会做:权限、参数校验、日志、上下文传递
print(f"[MCP] 调度技能: {skill_name}, 参数: {kwargs}")
skill_func = self.skills[skill_name]
return skill_func(**kwargs)
==============================================
3. Agent:智能体(大脑,做决策)
==============================================
class Agent:
def __init__(self):
self.mcp = MCP() # Agent 持有 MCP 连接
def run_task(self, user_intent: str):
"""Agent 根据用户意图,自主决策调用 Skill"""
print(f"\n=== Agent 收到任务: {user_intent} ===")
# 真实 Agent 会用 LLM 做意图识别 + 任务拆解
if "天气" in user_intent:
return self.mcp.call_skill("weather", city="北京")
elif "计算" in user_intent:
return self.mcp.call_skill("calculate", a=10, b=20, op="+")
elif "发消息" in user_intent:
return self.mcp.call_skill("send_message", user="小明", content="开会啦")
else:
return "Agent:我不知道该调用什么技能"
==============================================
4. 测试运行
==============================================
if name == "__main__":
agent = Agent()
print(agent.run_task("查北京天气"))
print(agent.run_task("帮我计算 10+20"))
print(agent.run_task("给小明发消息"))- 运行结果(清晰展示流程)
plaintext
=== Agent 收到任务: 查北京天气 ===
[MCP] 调度技能: weather, 参数: {'city': '北京'}
【北京】天气:晴,25℃
=== Agent 收到任务: 帮我计算 10+20 ===
[MCP] 调度技能: calculate, 参数: {'a': 10, 'b': 20, 'op': '+'}
30
=== Agent 收到任务: 给小明发消息 ===
[MCP] 调度技能: send_message, 参数: {'user': '小明', 'content': '开会啦'}
已向【小明】发送消息:开会啦
- 三者关系用代码再讲一遍
Agent
只做决策:判断用户要什么
不直接干活,只通过 MCP 发指令
Skill
只做执行
一个 Skill 一个功能
不知道谁调用它,只管干活
MCP
是中间协议层
统一接口、注册技能、路由调用、参数校验
让 Agent 不用关心 Skill 内部实现 - 真实 AI Agent 系统里长这样
Agent 用 GPT/o1 做任务规划
Agent 把 “调用哪个技能 + 参数” 发给 MCP 服务
MCP 负责:
技能发现
权限控制
跨语言 / 跨服务调用
上下文传递
MCP 调用真实 Skill(API、函数、插件、外部服务)
结果原路返回 Agent
如果你愿意,我可以再给你写一个更贴近工业级的版本:
带 JSON 协议格式
带上下文记忆
带技能描述(让 LLM 自动选择技能)
你想要简单版还是接近真实 Agent 框架版?
(doubao)