前言

最近几乎每个做 Agent 的人都会听到这三个热门的词:

  • MCP
  • Skills
  • Agents SDK

它们都在讲“让 AI 会用工具、会做事、会跑流程”,但和不少人聊发现都会陷入同一个困惑:

  • 好像都在解决能力接入
  • 又感觉彼此不能互相替代

这篇文章帮助你对这三个概念建立清晰的认知,并且给出一些落地实践的建议。



把 Agent 系统想成一座智能工厂

先忘掉 AI、模型、Agent。
我们从一个现实世界最熟悉的系统开始:工厂

假设你现在要建一座自动化工厂,目标是:
接很多机器,跑复杂流程,尽量少人工。

你一定会遇到三个问题:

1. 机器怎么接进来?(接口问题)

  • 电钻、焊机、机械臂、传送带
  • 如果每台设备接口都不一样,工厂永远扩不起来

所以现实世界一定先有 统一插头 + 接口标准

2. 每台机器应该怎么用?(流程问题)

接好机器还远远不够。

问题是电钻可以打孔,也可以拆螺丝,但在这条生产线上先做什么、后做什么,必须有标准。

所以你一定会写 标准工艺流程 / 操作说明书

3. 整个生产线谁来调度?(系统问题)

现在你有一堆机器 + 一堆操作说明,还缺最关键的 中央调度系统

它负责任务怎么拆、先跑哪一步、出错怎么重试、多条产线如何并行。


在 Agent 系统里这三件事一一对应:

  • MCP = 工厂的插头标准
  • Skills = 工艺流程说明书
  • Agents SDK = 中央调度系统

也就是说

  • MCP 解决你能接哪些工具
  • Skills 解决这件事该怎么做
  • Agents SDK 解决整个流程怎么跑起来

如果你记住这三句话,以后几乎不会再混淆这三个概念。



真实 Agent 架构中的三层能力栈

MCP:工具接口协议层

MCP 解决的问题极单一,也极基础,就是 统一模型如何发现、描述、调用外部工具

MCP 不是 Agent 框架;MCP 不做规划、不做流程;MCP 不关心任务逻辑。

在 MCP 之前每个产品一套 function schema,每个工具一套 prompt 约定,每接一个系统就写一堆 glue code。

MCP 的作用就是统一工具注册方式,统一参数描述,统一调用与返回格式,统一权限与安全模型。

你可以把它理解为 AI 世界的系统调用接口 / 插头协议

1
2
3
4
5
6
7
8
# 把一个 MCP Server 接进来
from mcp import ClientSession

session = ClientSession(server_url="stdio://my-mcp-server") # 或 http(s) / stdio
tools = session.list_tools() # 发现:有哪些工具可用
result = session.call_tool("read_file", {"path": "./a.txt"})# 调用:统一schema
print(result)


Skills:能力封装层

Skills 出现的真实背景非常朴素且使用,大量团队反复在 prompt 里写身份定义和任何流程,比如

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# SKILL: Weekly Sales Report

## When to use
- 用户要求:最近一周销售数据分析 + 输出报告

## Steps
1) 调用工具 fetch_sales_data 获取最近7天数据
2) 清洗异常值、缺失值,输出关键指标:GMV、订单数、客单价、转化率
3) 给出 3 条洞察 + 2 条可执行建议
4) 输出格式:Markdown,包含 Summary / Metrics / Insights / Actions

## Output format
- Summary: 3 句话
- Metrics: 表格
- Insights: 3 条 bullet
- Actions: 2 条 bullet

这些逻辑太重要,不能靠用户临时写,又太轻量,不值得写完整插件吗,还希望复用、版本化、托管。于是 Skills 出现了。

它本质是 把一段成熟的任务流程 + 操作规范,封装成一个可复用能力模块


Agents SDK:运行时与调度层

Agents SDK 解决的核心问题只有一个:一个复杂 Agent 任务,如何可靠地跑完?

它负责 规划(Planner)+ 调度(Executor)+ 状态与记忆(State / Memory)。

比如一个具体的任务 “帮我分析最近一周的销售数据,并生成一份报告。”

这个任务在真实系统里至少包含几步:

  1. 拉取销售数据
  2. 清洗与统计
  3. 调用模型分析
  4. 生成结构化报告

如果你不用 SDK,你通常要自己写:

  • 多次模型调用
  • 手动管理上下文
  • 手动调工具
  • 自己串流程

以 OpenAI Agents SDK 为例,核心抽象只需要 Agent、Tool、Run(一次完整任务执行)三个部分。

1
2
3
4
5
6
7
8
9
10
11
12
13
agent = Agent(
name="report_agent",
instructions="你是一个数据分析助手,负责生成销售分析报告",
tools=[fetch_sales_data, clean_data, analyze_data]
)

run = client.runs.create(
agent=agent,
input="分析最近一周的销售数据并生成报告"
)

result = client.runs.get(run.id)
print(result.output)


判断你到底该用谁

❓ 我是不是要接很多外部系统? 优先上 MCP

❓ 这件事是不是有固定流程,值得封装下来反复用? 用 Skills 固化流程

❓ 这是一个多步骤、多工具、多轮执行的复杂任务吗? 你需要 Agents SDK 或自己的 Agent Runtime



写在最后

很多人以为 MCP、Skills、Agents SDK 是三种竞争方案, 其实它们根本不在一个维度。

MCP 解决的是工具怎么连 ,Skills 解决的是事情怎么规范地做,Agents SDK 解决的是整个系统怎么稳定地跑起来。

在真实系统里,我们其实面临一个取舍:Skills 带来强规范、强一致性、强可控,而 Agents SDK 带来强灵活、强自动化、强自适应。

在你的 Agent 系统里,你更相信模型自动规划还是强约束流程呢?