当AI说“这个我不会”时,是该训练它还是给它个工具?
昨天深夜,我的日程AI助手突然罢工了。我问:“明早我需要带伞吗?”它回复:“抱歉,我不会查天气预报。”那一刻,我面临两个选择:花一周时间教它看天气(加Skill),或者五分钟给它接个天气API(连MCP)。这种困境每天都在AI开发中上演。
一、从一场真实的团队争论说起
周一的技术评审会上,产品总监指着原型图说:“这里,AI要能自动预订会议室。”话音刚落,会议室就炸了。
算法小王主张:“简单!给Agent加个会议室预订Skill,让它学会公司预定系统的所有规则。”
后端老张则反对:“别!用MCP连上会议室管理系统,AI调用就行,改规则时不用重新训练。”
两人对视一眼,空气中闪过火花。这种争论的核心在于:你希望AI如何获得新能力?
| 思考角度 |
加Skill(教它) |
连MCP(给它工具) |
| 类比 |
教会保姆做川菜 |
给保姆外卖APP |
| 本质 |
改变AI的“大脑” |
扩展AI的“手脚” |
| 成本 |
训练成本高 |
集成成本低 |
| 灵活度 |
学会就固定了 |
工具可随时换 |
二、加Skill:让AI“真正学会”一项本领
什么是Skill?AI的内在能力提升
Skill的本质是改变模型的权重或知识库,使其掌握新的内在能力。
# Skill的本质:改变模型权重,让它掌握新知识
class AgentWithSkill:
def __init__(self, base_model):
self.model = base_model # 基础模型
self.skills = {} # 学会的技能
def add_skill(self, skill_name, training_data):
"""教AI一个新技能的过程"""
# 1. 准备“教材”(训练数据)
examples = self.prepare_examples(training_data)
# 2. “上课学习”(模型训练)
# 方式A:微调 - 调整模型参数
if self.budget > 5000: # 钱够
self.fine_tune_model(examples)
# 方式B:提示工程 - 写详细说明书
elif self.budget > 500: # 有点钱
self.craft_prompt_template(skill_name)
# 方式C:RAG增强 - 给参考书
else: # 预算紧张
self.add_reference_docs(examples)
# 3. “考试验收”(测试验证)
test_results = self.evaluate_skill()
# 技能学会,存储在模型内部
self.skills[skill_name] = {
"type": "learned",
"performance": test_results
}
def use_skill(self, skill_name, input_data):
"""使用已学会的技能"""
# 完全在模型内部处理
# 没有外部依赖,没有网络调用
return self.model.inference(input_data, skill=skill_name)
加Skill的实际案例:教AI写周报
这个过程通常是漫长且细致的。
# 技能名称:技术团队周报生成
skill_development_timeline = {
"第一周(数据收集)": {
"任务": "收集100份真实的工程师周报",
"难点": "脱敏处理(去掉项目代号、人名)",
"成本": "2人×3天 标注工时"
},
"第二周(训练实验)": {
"任务": "尝试三种训练方法",
"方法对比": {
"微调Llama2": "效果好,但需要A100训练3天",
"GPT提示工程": "效果还行,但格式控制不稳",
"RAG+模板": "效果稳定,但创造力不足"
},
"选择": "最终选了RAG+模板,平衡成本与效果"
},
"第三周(测试优化)": {
"任务": "人工评估200份生成结果",
"问题发现": [
"把‘修复bug’写成‘创造了新的调试机会’(太文艺)",
"总是忘记写下周计划(学习样本问题)",
"技术术语偶尔用错(模型不理解专业知识)"
],
"迭代": "补充了500条术语对照表,人工纠正了100条坏样本"
},
"第四周(上线部署)": {
"状态": "技能学会,集成到Agent",
"效果": "生成速度<2秒,满意度85%",
"限制": "只能按学会的模板写,公司改周报格式需要重新训练"
}
}
Skill的优势与代价:
✅ 优势:
1. 速度快:学会后,推理完全在本地,毫秒级响应
2. 隐私好:敏感数据不出公司内网
3. 独立性强:不依赖外部服务,不怕断网
❌ 代价:
1. 训练贵:每个技能都要数据、算力、人工
2. 周期长:从立项到可用至少1-4周
3. 难更新:业务规则变了,得重新训练
4. 有冲突:学太多技能可能互相干扰(灾难性遗忘)
三、连MCP:给AI“装备”专业工具
什么是MCP?AI的标准工具接口
MCP(Model Context Protocol),你可以理解为:AI界的USB标准接口。它让AI能通过一套标准化协议调用外部工具,而无需理解工具内部如何工作。
# MCP架构:一套标准化的工具调用协议
class MCPSystem:
"""MCP的核心思想:AI不一定要‘会’,但要‘会用’"""
def __init__(self):
# MCP服务器:各种工具的后台服务
self.tool_servers = {
"calendar": GoogleCalendarMCP(),
"email": OutlookMCP(),
"database": CompanyDBMCP(),
"weather": WeatherAPIMCP(),
"jira": JiraMCP() # 项目管理工具
}
# 标准化描述文件:每个工具的使用说明书
self.tool_schemas = self.load_schemas()
def connect_tool(self, agent, tool_name):
"""给AI连接一个工具"""
# 1. 告诉AI这个工具能干什么
tool_schema = self.tool_schemas[tool_name]
agent.learn_tool_description(tool_schema)
# 关键:AI只学“什么时候用这个工具”
# 而不学“工具内部怎么工作”
# 2. 建立连接通道
connection = MPCToolConnection(
tool_name=tool_name,
server=self.tool_servers[tool_name],
auth_token="***"# 认证信息
)
return connection
class AgentWithMCP:
"""装备了MCP工具的AI"""
def handle_request(self, user_request):
# AI的大脑分析用户意图
intent = self.understand_intent(user_request)
# 决策:这个任务我是自己处理,还是用工具?
if intent in self.internal_skills:
# 用自己学会的技能
return self.use_skill(intent, user_request)
else:
# 用MCP工具
return self.use_mcp_tool(intent, user_request)
def use_mcp_tool(self, tool_name, request):
# AI的任务:
# 1. 理解用户需求
# 2. 提取关键参数
# 3. 调用合适的工具
# 4. 把工具返回结果“翻译”成自然语言
params = self.extract_parameters(request)
# 关键步骤:通过MCP标准协议调用
tool_response = self.mcp_client.call(
tool=tool_name,
action="execute",
parameters=params
)
# AI不需要懂工具的内部逻辑
# 只需要会“使用”它
return self.format_response(tool_response)
连MCP的实战:五分钟搞定天气查询
还记得我那个不会查天气的AI助手吗?用MCP解决方案非常快捷。
# 解决方案:连一个天气MCP服务
def mcp_weather_solution():
# 第一步:找一个现成的天气API服务
# 比如和风天气、OpenWeatherMap等
# 第二步:包装成MCP服务(如果还没有现成的)
# 这通常只需要:
# 1. 定义工具schema(说明书)
# 2. 实现一个简单的HTTP端点
# 3. 处理认证和错误
weather_mcp_schema = {
"name": "weather_query",
"description": "查询城市天气预报",
"parameters": {
"city": {"type": "string", "required": True},
"days": {"type": "integer", "default": 1}
},
"returns": {
"temperature": "float",
"condition": "string",
"humidity": "float",
"advice": "string"# 比如“建议带伞”
}
}
# 第三步:给AI助手连上这个MCP服务
# 在你的AI平台配置中添加:
mcp_config = {
"tools": ["weather_query"],
"endpoint": "https://weather-mcp.your-company.com",
"api_key": "***"
}
# 第四步:测试
# 用户问:“明天北京天气如何?”
# AI助手:
# 1. 识别意图:需要天气信息
# 2. 提取参数:city=北京,days=1
#. 调用MCP工具
# 4. 返回:“明天北京晴,25℃,湿度40%,建议涂防晒”
return "搞定!总耗时:1人×0.5小时"
MCP的核心价值是标准化:
# MCP标准化协议的好处
standardization_benefits:
1.一次开发,多处使用:
-你的天气MCP服务
-可以同时给:日程Agent、出行Agent、农业Agent使用
2.工具可插拔:
-今天用和风天气API
-明天换成中国气象局数据
-AI助手无需重新训练
3.生态共享:
-公司内部:会议室MCP、报销系统MCP
-公开市场:GitHub有上百个开源MCP工具
4.专业分工:
-工具专家:专注于把专业系统做好
-AI专家:专注于让AI会使用工具
-不用互相等对方
MCP的优势与局限:
✅ 优势:
1. 快速集成:有现成工具时,连接只要几小时
2. 能力无限:理论上能连任何系统
3. 实时更新:工具升级,AI立即受益
4. 专注核心:AI专注理解与调度,工具专注专业功能
❌ 局限:
1. 网络依赖:工具服务挂了,功能就失效
2. 隐私顾虑:数据要传到外部工具
3. 延迟较高:网络调用比本地推理慢
4. 集成成本:每个工具都要配MCP服务端
四、决策指南:什么时候选什么?
决策流程图:Skill vs MCP
用户需求 → AI需要新能力
↓
问五个关键问题:
1. 【实时性要求】需实时最新信息?
├→ 是 → MCP(连实时数据源)
└→ 否 → 下一题
2. 【敏感性】处理敏感/隐私数据?
├→ 是 → Skill(数据不出本地)
└→ 否 → 下一题
3. 【复杂性】任务需要深度理解推理?
├→ 是 → Skill(AI需要“真懂”)
└→ 否 → 下一题
4. 【稳定性】外部工具是否稳定可靠?
├→ 否 → Skill(避免依赖风险)
└→ 是 → 下一题
5. 【变更频率】业务规则常变吗?
├→ 是 → MCP(工具可快速更新)
└→ 否 → Skill(一次学会长期用)
真实场景对照表
| 实际需求 |
推荐方案 |
理由 |
实施时间 |
| 公司内部会议纪要 |
Skill |
格式固定,数据敏感,需要理解技术讨论 |
2-3周 |
| 查询股价/汇率 |
MCP |
实时数据,外部已有专业API |
几小时 |
| 代码评审助手 |
混合 |
Skill理解代码逻辑+MCP连GitHub |
1-2周 |
| 智能排班系统 |
MCP |
对接HR系统,规则常变 |
几天 |
| 客服FAQ回答 |
Skill |
公司特有知识,需要自然对话 |
3-4周 |
| 天气预报提醒 |
MCP |
外部专业服务,实时性要求高 |
几小时 |
五、行业趋势:为什么MCP越来越火?
大厂的秘密:都在建MCP生态
最近半年,一个明显趋势是:所有人都在推自己的MCP协议。
# 2024年各家MCP布局
mcp_landscape_2024:
OpenAI:
-GPTs+Actions(本质是MCP)
-插件市场:日历、邮件、数学工具
-战略:让ChatGPT成为万能入口
Anthropic:
-ClaudeToolUse
-企业级工具集成
-特色:工具调用中的安全控制
国内大厂:
-百度文心插件平台
-阿里通义千问工具调用
-讯飞星火API市场
-共同点:都在快速接入第三方服务
开源社区:
-LangChain工具调用
-LlamaIndex数据连接器
-MCP开源协议标准
-特色:避免被单一厂商锁定
MCP火爆的底层逻辑
为什么MCP突然这么火?三个原因:
1. 经济现实:训练太贵了
企业账本对比:
方案A(加Skill):训练一个客服技能
- 数据收集:¥20,000
- 模型微调:¥15,000(GPU费用)
- 人工标注:¥10,000
- 总计:¥45,000,耗时4周
方案B(连MCP):接入客服系统
- MCP服务开发:¥8,000
- API调用费:¥0.01/次
- 总计:¥8,000 + 按量付费,耗时3天
2. 技术现实:专业事专业办
天气预报、股票分析、法律咨询...每个领域都是几十年积累的专业系统。让AI从头学?不如让它学会用专业工具。
3. 商业现实:生态大于独占
苹果App Store的成功已经证明:提供一个平台,让别人来开发工具,比自己开发所有应用更强大。
六、混合策略:成熟团队的实用架构
一个真实的混合系统设计
我们团队现在的AI助手架构是这样的:核心通用能力内化为Skill,外部专业功能则通过MCP连接。
class SmartAgentArchitecture:
"""混合架构:基础技能 + MCP工具箱"""
def __init__(self):
# 第一部分:核心通用技能(加Skill)
self.core_skills = {
"language_understanding": FineTunedSkill(),
"reasoning": PromptEngineeredSkill(),
"company_knowledge": RAGSkill() # 公司文档检索
}
# 第二部分:外部工具(连MCP)
self.mcp_tools = MCPClient({
"tools": [
"calendar", # 日历管理
"email", # 邮件发送
"expense", # 报销系统
"meeting_room", # 会议室预定
"project_mgmt", # 项目管理系统
],
"fallback": "ask_human"# 连工具都不会用?转人工
})
# 第三部分:智能路由器
self.router = SkillOrMCPRouter()
def handle_query(self, user_query):
# 第一步:理解用户意图
intent = self.core_skills["language_understanding"].parse(user_query)
# 第二步:路由决策
route = self.router.decide(intent)
# 第三步:执行
if route["type"] == "skill":
# 用内部技能处理
result = self.use_skill(route["skill_name"], user_query)
elif route["type"] == "mcp":
# 用MCP工具处理
result = self.use_mcp_tool(route["tool_name"], user_query)
else:
# 兜底:转人工或委婉拒绝
result = "这个问题我需要学习一下,或者您可以咨询相关同事"
return result
def router_rules(self):
"""路由规则示例"""
return {
"写周报": {"type": "skill", "skill_name": "weekly_report"},
"订会议室": {"type": "mcp", "tool_name": "meeting_room"},
"查天气": {"type": "mcp", "tool_name": "weather"},
"技术方案讨论": {"type": "skill", "skill_name": "tech_discussion"},
"申请报销": {"type": "mcp", "tool_name": "expense"},
"敏感数据查询": {"type": "skill", "skill_name": "secure_query"}
}
给你的具体建议
如果你是初创团队:
- 首选MCP:快速验证想法,最小成本上线。
- 核心能力再加Skill:等产品稳定了,把最高频、最核心的功能做成Skill。
- 用开源MCP工具:别重复造轮子,可以参考技术文档中的实现。
如果你是企业团队:
- 分领域决策:
- 通用型、规则常变的功能 → MCP
- 公司特有、数据敏感的功能 → Skill
- 建立内部MCP标准:统一工具对接方式。
- 技能资产管理:记录每个Skill的成本和效果,定期评估。
如果你是工具开发者:
- 提供MCP接口:让你的工具能被更多AI使用。
- 文档要详细:AI不会猜,参数说明要清晰。
- 考虑认证与安全:企业级工具尤其重要。
七、写在最后:AI开发的范式转移
回到开头那个深夜,我最终的选择是:给AI助手连了一个天气MCP。
为什么?
- 天气预报是专业领域,有成熟API。
- 天气规则会变(暴雨标准、穿衣建议等)。
- 需要实时数据。
- 这功能不是核心需求,不值得投入大量训练。
5分钟后,我问AI:“明天要带伞吗?” 它回答:“明天北京有雷阵雨,降水概率70%,建议带伞。需要我设置在您的出行提醒中吗?”
这就是现代AI开发的真相:
- 我们不再追求“万能AI”,而是追求“会使用工具的智能体”。
- 核心技能自己掌握,专业功能连接外部。
- 重点是让AI正确理解需求、合理选择工具、自然沟通结果。
下一次,当你听到团队讨论“加Skill还是连MCP”时,可以问他们四个问题:
- 这功能是通用的还是公司特有的?
- 数据能不能出内部网络?
- 需求会不会经常变?
- 时间预算是多少?
答案,就藏在问题里。在云栈社区,我们持续关注着AI工程化与Agent架构的演进,欢迎交流你的实践与思考。