Skills、MCP、Agent、Workflow:一次讲清
本文用工程师视角解析 AI Agent 时代最容易混淆的四个核心概念。Agent 是"会干活的人",负责理解目标和决策;Skills 是"可复用的手艺",是 Prompt 的工程化封装;MCP 是"工具调用的标准协议",规范 AI 如何安全调用外部能力;Workflow 是"工作流程 SOP",定义任务的执行顺序和分支逻辑。文章结合房产推荐系统的实战案例,展示了如何将检索、重排序、推荐生成等功能拆
作者按:最近两个月,AI Agent 领域的新名词层出不穷。很多文章要么太学术,要么直接贴代码。看完之后的感觉就是:“好像都懂了,又好像什么都没懂。” 这篇文章,我用工程师的语言,结合实际案例,把这些概念一次性讲透。
一、先给结论(1 分钟速读版)
如果把 AI Agent 比作一个"智能员工":
- Agent 是"这个人"
- Skills 是"他会的手艺"
- MCP 是"工具的使用规范"
- Workflow 是"工作流程 SOP"
剩下的内容,都是在回答一个核心问题:为什么这些东西要被拆成不同的概念?
二、为什么 Prompt 已经不够用了?
在 Agent 出现之前,我们解决问题的方式很简单:
用户 → Prompt → 大模型 → 输出
这在一次性问题里没问题。比如:
- “帮我写一封邮件”
- “总结这篇文章”
- “翻译这段话”
但一旦你想做下面这些事,就开始崩:
❌ 让 AI 反复做同一类事(每次都要重新写 Prompt)
❌ 让 AI 调用代码/系统能力(模型只会"说",不会"做")
❌ 让 AI 给非技术人员稳定交付结果(结果不稳定)
❌ 让 AI 参与一个多步骤流程(没有状态管理)
于是,Prompt 被迫"进化"。
三、Skills:Prompt 的工程化形态
1️⃣ Skills 到底是什么?
一句话版本:
Skill = 被封装、可复用、可调用的"做事方法"
它不是一句 Prompt,而是:
- ✅ 有明确职责
- ✅ 有稳定输入
- ✅ 有稳定输出
- ✅ 可以被 Agent 调用
- ✅ 可以长期维护
你可以把它理解成:AI 世界里的"函数/服务"
2️⃣ 为什么要有 Skills?
因为你迟早会遇到这类需求:
- “每天都要生成同类型内容”
- “不同人用,但结果要一致”
- “不能每次都复制一大段 Prompt”
这时候你要的不是"再写一句 Prompt",而是:把 Prompt 固化成能力
3️⃣ 案例:房产推荐系统中的 Skills
以我的 house_demo 为例,我们可以把它拆解成几个典型的 Skills:
Skill 1: search_houses
# 元信息
name: "房源搜索"
description: "根据用户需求检索相关房源"
# 行动指南
steps:
1. 理解用户的地理位置偏好
2. 提取价格区间
3. 识别特殊需求(学区、地铁等)
4. 调用混合检索引擎
# 资源
resources:
- hybrid_searcher.py
- embedding_engine.py
- bm25_searcher.py
Skill 2: generate_recommendation
# 元信息
name: "推荐理由生成"
description: "为检索到的房源生成个性化推荐理由"
# 行动指南
steps:
1. 读取用户历史偏好(Memory)
2. 分析房源特征
3. 匹配用户需求点
4. 生成自然语言推荐
# 资源
- answer_generator_v3.py
- prompt_optimizer.py
- memory_manager.py
Skill 3: rerank_results
# 元信息
name: "结果重排序"
description: "根据用户反馈动态调整推荐顺序"
# 行动指南
steps:
1. 收集用户点击/收藏行为
2. 更新偏好权重
3. 重新计算相关性得分
4. 返回优化后的排序
# 资源
- reranker.py
- bias_memory.py
4️⃣ 一个典型 Skill 的结构
从工程角度看,一个 Skill 通常包含三层:
| 层级 | 内容 | 示例 |
|---|---|---|
| 元信息 | 这个技能是干嘛的 | name, description, version |
| 行动指南 | AI 应该按什么步骤思考和执行 | Prompt 模板、决策树 |
| 资源 | Python 代码/API/文件/脚本 | reranker.py, embedding_engine.py |
这一步,AI 才真正有了"手"。
四、MCP:让 AI 知道"工具怎么用"
1️⃣ MCP 是什么?
MCP(Model Context Protocol) 解决的是一个很现实的问题:
模型怎么"安全、规范、可控"地调用外部能力?
你可以把 MCP 理解成:AI 调用工具的"标准接口协议"
2️⃣ MCP 和 Skills 的关系
这是很多人最容易混淆的地方:
| 概念 | 职责 | 类比 |
|---|---|---|
| Skill | 做什么、怎么做(能力) | 会做菜 |
| MCP | 用什么方式调用外部系统(接口规范) | 插座规格 |
一个非常直观的类比:
- Skill 是"会做菜"
- MCP 是"插座规格"
你可以用不同电器,但插头要统一。
3️⃣ 案例:房产系统中的 MCP 应用
假设我的房产推荐系统需要调用外部服务:
# MCP 定义:调用地图 API
{
"tool_name": "get_nearby_facilities",
"protocol": "MCP",
"endpoint": "https://api.map.com/v1/nearby",
"auth": "Bearer TOKEN",
"input_schema": {
"latitude": "float",
"longitude": "float",
"radius": "int"
},
"output_schema": {
"schools": "list",
"subways": "list",
"hospitals": "list"
}
}
Agent 不需要知道地图 API 的具体实现,只需要:
- 知道这个工具叫什么
- 知道输入什么
- 知道会返回什么
这就是 MCP 的价值:标准化工具调用
五、Agent:真正"会干活"的 AI
1️⃣ Agent 不是模型
这是第一个要纠正的误解:
- 模型负责"想"
- Agent负责"干"
Agent 至少要具备几件事:
- ✅ 能理解目标
- ✅ 能选择 Skill
- ✅ 能决定下一步
- ✅ 能处理失败
一句话说完:Agent = 大模型 + 决策逻辑 + 状态
2️⃣ 为什么一定要有 Agent?
因为你一旦进入这种场景:
- 多步骤任务
- 有条件分支
- 有中间结果
- 需要回溯
Prompt 就彻底不够用了。
Agent 出现的本质原因是:AI 开始需要"过程管理能力"
3️⃣ 案例:房产推荐 Agent 的工作流程
假设用户问:“我想在朝阳区找一个 500 万以内的两居室,最好靠近地铁”
一个完整的 Agent 执行过程:
[Agent 启动]
↓
[理解意图] → 提取:地区=朝阳区,价格≤500万,户型=两居室,需求=地铁
↓
[选择 Skill] → 调用 search_houses
↓
[执行检索] → 返回 20 条候选房源
↓
[选择 Skill] → 调用 rerank_results
↓
[重排序] → 根据用户历史偏好调整顺序
↓
[选择 Skill] → 调用 generate_recommendation
↓
[生成推荐] → 为 Top 5 房源生成推荐理由
↓
[返回结果] → 展示给用户
↓
[更新 Memory] → 记录用户本次查询偏好
在这个过程中:
- Agent 负责决策(下一步该干什么)
- Skills 负责执行(具体怎么干)
- Memory 负责记忆(之前发生了什么)
六、Agent Workflow:把"会干活"变成"干得有章法"
1️⃣ Workflow 是什么?
Workflow 解决的是:先干什么,后干什么,什么时候停
它本质是:
- DAG(有向无环图)
- 状态机
- 任务编排
你可以理解成:Agent 的 SOP(标准作业流程)
2️⃣ Workflow 和 Skills 的分工
这是一个非常重要的工程边界:
| 模块 | 负责什么 |
|---|---|
| Skill | 怎么做 |
| Agent | 现在做什么 |
| Workflow | 下一步做什么 |
如果你把这三者混在一起,系统一定会失控。
3️⃣ 案例:房产推荐的 Workflow 设计
workflow_name: "房产智能推荐流程"
steps:
- id: "intent_understanding"
skill: "parse_user_query"
next:
- condition: "has_location"
goto: "search"
- condition: "no_location"
goto: "ask_location"
- id: "ask_location"
skill: "clarify_requirements"
next: "search"
- id: "search"
skill: "search_houses"
next:
- condition: "results > 0"
goto: "rerank"
- condition: "results == 0"
goto: "expand_search"
- id: "expand_search"
skill: "relax_constraints"
next: "search"
- id: "rerank"
skill: "rerank_results"
next: "generate"
- id: "generate"
skill: "generate_recommendation"
next: "end"
- id: "end"
action: "return_results"
这个 Workflow 定义了:
- 什么情况下该问用户
- 什么情况下该扩大搜索范围
- 什么情况下该结束流程
七、再把几个常见名词一次放清楚
Tool / Function
| 概念 | 含义 |
|---|---|
| Tool | 外部能力(API、代码) |
| Function | 一种早期、轻量的调用形式 |
👉 本质都是:模型能不能"动手"
在项目里:
embedding_engine.py是一个 Toolbm25_searcher.py是一个 Toolreranker.py是一个 Tool
Planner / Executor
| 角色 | 职责 |
|---|---|
| Planner | 负责拆任务、定计划 |
| Executor | 负责具体执行 |
👉 是 Agent 内部的一种角色拆分方式
Memory
| 类型 | 内容 |
|---|---|
| 短期 | 当前上下文 |
| 长期 | 历史偏好、经验、结果 |
👉 没有 Memory,Agent 永远是"失忆打工人"
在项目里:
memory_manager.py管理对话历史bias_memory.py记录用户偏好
八、一张"工程视角"的总览图
用户目标
↓
Agent(理解 + 决策)
↓
Workflow(流程控制)
↓
Skills(具体能力)
↓
MCP / Tools(外部执行)
↓
结果 + Memory
用房产推荐系统举例
用户:"我想在朝阳区找房子"
↓
Agent: 理解意图 → 决策下一步
↓
Workflow: 执行"房产推荐流程"
↓
Skill 1: search_houses(调用 hybrid_searcher)
↓
Skill 2: rerank_results(调用 reranker)
↓
Skill 3: generate_recommendation(调用 answer_generator_v3)
↓
MCP: 调用地图 API 获取周边设施
↓
返回结果 + 更新 Memory(记录用户偏好)
九、实战建议:如何在项目中应用这些概念
1️⃣ 从 Skills 开始
不要一上来就想着构建完整的 Agent 系统。先问自己:
- 我的系统里有哪些"可复用的能力"?
- 这些能力的输入输出是什么?
- 它们依赖哪些外部资源?
把这些整理成 Skills。
2️⃣ 用 Workflow 串联
当你有了 3-5 个 Skills 之后,开始思考:
- 这些 Skills 的执行顺序是什么?
- 什么情况下需要分支?
- 什么情况下需要重试?
用 Workflow 把它们串起来。
3️⃣ 让 Agent 做决策
最后,给 Agent 加上决策能力:
- 根据用户输入选择合适的 Workflow
- 根据中间结果调整执行路径
- 根据失败情况进行重试或降级
4️⃣ 用 Memory 提升体验
别忘了加上 Memory:
- 记录用户的历史查询
- 记录用户的偏好
- 记录失败的尝试
这样 Agent 才能越用越聪明。
十、总结
如果你只记住一句话:
Agent 是人,Skills 是手艺,MCP 是工具规范,Workflow 是工作流程。
如果你记住两句话:
不要把所有逻辑都塞进 Prompt,要学会拆分职责。
如果你记住三句话:
从 Skills 开始,用 Workflow 串联,让 Agent 做决策,用 Memory 提升体验。
更多推荐

所有评论(0)