Agent Skills、MCP、Function Calling 到底啥区别?一文讲透

简介: 本文厘清AI Agent三大核心概念:Function Calling(模型调用工具的“嘴”,负责结构化指令)、MCP(标准化连接协议, akin “插座”,解耦模型与工具)、Agent Skills(封装业务逻辑的“经验包”,含流程、异常处理与复用能力)。三者呈层级协作关系,非替代关系,共同构建可落地的自动化测试体系。

一个把我绕晕的周末
上个月有个朋友找我,说他们团队在用 Claude Code 搭一套自动化测试流程,文档里满屏的 “MCP Server”“Function Calling”“Agent Skills”,他看到第三遍还是没搞明白:“这几个东西到底啥关系?我到底该用哪个?”

这还真不是他一个人困惑。

我去翻了下社区里的讨论,发现一个挺普遍的现象——有人把 MCP 当成 Function Calling 的升级版,觉得“有了 MCP 就不需要 Function Calling 了”;也有人觉得 Skills 就是“高级一点的 Prompt”。这些理解都不太对。

它们的层级关系其实是固定的:MCP(平台层)> Skill(业务层)> Function Calling(原子层) 。别急着记这个结论,先把每个东西搞明白,这句话自然就懂了。

Function Calling:大模型的那张“嘴”
所有关于工具调用的讨论,都得从 Function Calling 说起。因为它是后面两个东西能够存在的前置条件。

2023 年 6 月,OpenAI 在 gpt-3.5-turbo 上首次引入了 Function Calling 能力。它的核心机制其实很简单:

你用 JSON Schema 描述一个函数的样子——叫什么名字、有哪些参数、参数是什么类型——然后把这份描述连同用户的问题一起发给模型。模型判断需要调用这个函数时,会返回一个结构化的 JSON,里面包含函数名和参数。

这里有一个特别容易被误解的地方:模型并不会真的去执行那个函数。 它只负责“点单”——告诉你它想调什么、传什么参数。真正的执行,是你写在代码里的逻辑。

整个流程走四步:

用 JSON Schema 把可用工具告诉模型
模型返回 tool_calls,包含函数名和参数 JSON
你的代码解析参数,调用真实函数
把执行结果以 role: "tool" 追加进对话,再请求一次,模型基于结果给出最终回答
我一直觉得 Function Calling 很像一个只会点菜不会做菜的食客。它知道菜单上有什么,知道自己想吃什么,但端菜上桌这件事跟它没关系。

Function Calling 的局限也很明确。工具定义跟模型强绑定,换一个模型就得重新适配;工具数量一多,描述就膨胀,模型选择工具的准确率会明显下降。

MCP:把插座标准化
Function Calling 解决了“模型怎么表达调用意图”的问题,但没解决“后端怎么执行工具”的问题。

以前的做法是:每个应用自己手写对接代码。A 模型要调天气工具,写一套;B 模型也要调同一个天气工具,再写一套。工具的实现方式五花八门,有 REST API 的,有本地脚本的,有 gRPC 的,每接一个都得单独适配。

Anthropic 提出的 MCP(Model Context Protocol) 就是为了统一这件事。它定义了一套标准化的客户端-服务器协议:工具提供方把能力封装成 MCP Server,AI 应用作为 MCP Client 连接上去,通过标准化的接口发现和调用工具。

有个特别贴切的比喻:MCP 就像 AI 界的“聚合支付” 。以前每个商户都得单独对接微信支付、支付宝、银联,现在统一成一个二维码,谁来扫都行。

MCP 在协议层面做了几件关键的事:

动态能力发现。 客户端发送 ListToolsRequest 就能拿到服务器当前提供的全部工具列表,不需要提前硬编码。服务器加了新工具,客户端自动就能看到。

标准化调用接口。 通过 CallToolRequest 发起调用,参数用 JSON Schema 校验,不同语言、不同框架写的工具只要遵循协议就能无缝对接。

安全边界。 MCP 工具代表任意代码执行,协议要求对工具调用做严格的权限控制。

用一句话概括:Function Calling 让模型“知道能做什么”,MCP 让模型“能连上做这件事的工具”。

但 MCP 也有它的代价。所有 MCP Server 的工具描述在会话启动时就加载进上下文,装多了之后 token 消耗非常可观。而且它解决的是“连接”问题,不解决“怎么做才对”的问题。

Agent Skills:把你的经验变成可调用的能力包
MCP 让 Agent 能连上工具了,但连上之后呢?

想象一个场景:Agent 要帮你跑一遍接口回归测试。它有 MCP 连接好的数据库工具、日志工具、接口文档工具。但工具是有了,它知道先做什么、后做什么吗?知道某个接口返回 500 时该重试还是该标记为 bug 吗?知道断言该校验哪些字段吗?

这些问题,MCP 回答不了。Function Calling 更回答不了。

Anthropic 在 2025 年 10 月推出的 Agent Skills 就是冲着这个问题来的。

形式上,Skill 就是一个文件夹。核心是 SKILL.md 文件,YAML 元数据里写技能名称和触发描述,正文用 Markdown 写执行指令。旁边可以放 scripts/ 目录存执行脚本,references/ 存领域知识文档。

但 Skill 真正解决的问题,不是“写一个文档”。它解决的问题是:把“怎么做一个任务”从一次性的对话,变成可复用、可版本控制、可被 Agent 自动调度的能力单元。

这里的关键设计是渐进式披露。Skill 启动时只加载名称和描述,大概 100 个 token,只有当 Agent 判断这个 Skill 跟当前任务相关时,才会展开完整内容。实测下来,初始上下文消耗可以从 16k token 压缩到 500 token 左右。

Skill 和 Function Calling 的本质区别在于:Function Calling 解决的是“能不能调”,Skill 解决的是“该不该这么调”。

Function Calling 是一个原子动作的调用契约。Skill 是一套完整的业务流程——包含多个步骤、多个工具调用、异常处理逻辑、输出格式规范。你写一个“接口测试用例生成”的 Skill,它内部可能调用了参数构造、依赖链分析、断言生成三个 Function Calling,每个都有明确的输入输出约束,但对外暴露的是一个完整的业务能力。

字节在 2026 年初推出 Agent Skills 功能,阿里发布了“悟空”工作平台,腾讯上线了 SkillHub,汇聚超过 28000 个 Skill。测试领域的信号更直接:字节 2026 年春招的测试开发 JD 里,多了一行硬性要求——“对 AI Agent 有深入理解和实践经验”。

一个场景串起三者
说了这么多概念,用一个具体的测试场景把它们串起来。

假设你要让 Agent 自动跑一遍支付接口的幂等性测试。

第一步,MCP 负责连接。 Agent 通过 MCP 协议连接上接口文档服务器,拉取支付接口的 OpenAPI 规范;连接上数据库服务器,准备好查询订单状态;连接上 Jira 服务器,准备在失败时创建 bug。

第二步,Skill 负责流程。 Agent 加载“支付幂等性测试” Skill。Skill 里面写清楚了:先调支付接口发起扣款,然后用同一个订单号再调一次,断言第二次返回的状态码是 200 但订单没有重复扣款。如果第二次返回 500,重试一次再判断。失败时收集 requestId 和响应体,写入 Jira 的指定项目。

第三步,Function Calling 负责执行。 Skill 执行过程中,Agent 通过 Function Calling 逐个调用具体工具:调 call_payment_api、调 query_order_status、调 create_jira_issue。每次调用,模型返回结构化参数,后端代码负责执行。

三者的分工非常清晰:Function Calling 是螺丝刀,MCP 是供电插座和标准接口,Skill 是施工手册加整套工具箱。

搞混它们的人,都在犯同一个错
写到这里,可以回答最初那个问题了。

Function Calling 是基础能力,没有它,后面两个都不存在。MCP 解决的是标准化连接问题——让工具和模型之间的对接有一个统一的协议,不用每换一个模型就重写一次适配代码。Skills 解决的是经验封装问题——让你的测试流程、领域知识、异常处理逻辑变成可复用、可版本控制的能力单元。

它们不是替代关系,是不同层次上的协作关系。Function Calling 让模型有了“嘴”,MCP 让模型有了“手”,Skills 让模型有了“经验”。

那个朋友后来在团队里搭了一套组合拳:用 Skill 封装了 30 多个测试场景的完整流程,用 MCP 连接了接口文档、数据库、CI 系统和 Jira,底层用 Function Calling 驱动每个原子操作。跑了一个月下来,回归测试的用例通过率没变,但用例失效排查的时间从平均 40 分钟降到了 5 分钟。因为 Skill 里封装了失败诊断的排查清单,Agent 自动收集日志、比对响应体、判断是环境问题还是代码问题,人只需要看结论。

他的原话是:“我以前觉得这些概念都是营销词汇,真正跑起来才发现,搞不清它们区别的时候,搭出来的东西就是一堆散装脚本。”

如果你也在搭 Agent 测试体系,建议从这三层去审视你的架构:底层有没有清晰的 Function Calling 定义,中间有没有 MCP 做连接标准化,上层有没有 Skill 做经验封装。三层都到位了,Agent 才算真正能干活。

相关文章
|
1天前
|
jenkins 测试技术 持续交付
简历写了「会用 Jenkins 跑自动化」,被问流水线分几层就卡住:新人该补的是骨架不是按钮
本文揭秘CI流水线的5层骨架:触发(何时跑)、准备(环境就绪)、执行(测试顺序)、结果(报告归档)、门禁与反馈(质量拦截)。聚焦新人最易踩坑的准备层与结果层,结合GitHub Actions实操案例,帮你从“会点按钮”跃升为“懂系统逻辑”,精准击中面试考察核心。
|
1天前
|
人工智能 自动驾驶 Java
2026年理想汽车职级薪资:测试开发能拿多少?附社招面试题
本文详解2026年理想汽车测试开发岗:薪资达28K–55K·14薪,已取消P/M序列,启用8–30级双通道职级;面试聚焦AI能力——大模型评测、Agent/RAG测试、AI用例生成与质量评估,并融合车云一体、自动驾驶等智能汽车特色场景。
|
1天前
|
人工智能 缓存 运维
全量跑不动、人肉挑不完:代码量涨8倍之后,测试选择策略该先改哪一步
本文剖析Anthropic因AI编码爆发导致CI测试分析系统(TIA)崩溃的真实案例:Claude贡献80%合并代码,CI任务半年激增25倍,传统“单写有状态”TIA架构率先崩塌。文章详述三次线性补丁失效过程,揭示指数增长下容量规划的底层陷阱,并给出轻量级、可落地的“journal式”重构方案——状态持久化、写入无状态、读取归并视图,助力中型团队低成本构建弹性CI测试选择能力。
|
14小时前
|
人工智能 供应链 架构师
为什么你们团队的AI测试没效果?缺的不是工具
本文揭示AI测试失败的根源:非工具之过,而在目标错位。作者指出三大症结——缺验收标准、止步“生成”、工具驱动而非问题驱动,并提出三步解法:定义量化指标、构建闭环链路、坚持问题导向。工具只是放大器,真正关键在于清晰的问题意识与工程化能力。
|
14小时前
|
人工智能 JSON 机器人
我把大模型接进CI后,失败用例自动归因,报告直接发飞书
本文介绍一种AI驱动的CI失败归因方案:通过大模型自动分析pytest失败日志,精准分类环境问题、用例缺陷与代码Bug,并将结构化结论实时推送至飞书。测试排查耗时从2小时降至10分钟,效率提升12倍,全部脚本开源可复用。
|
10天前
|
JSON JavaScript 前端开发
Playwright + axe-core + CI:把无障碍回归做成一条能拦住上线的流水线
本文详解如何将Web无障碍(WCAG 2.1 AA)从“上线前人工抽查”升级为CI流水线门禁:通过Playwright+axe-core自动扫描关键页,按impact分级熔断,结合带过期日与责任人的baseline豁免清单,实现全覆盖、可追溯、防退化的工程化保障。
|
8天前
|
人工智能 JavaScript NoSQL
我用AI把回归测试从3天压到3小时,提示词全公开
本文揭秘如何用AI将回归测试从3天压缩至3小时:不靠“一键全自动”,而是把AI当实习生,拆解为影响面分析、用例生成、脚本转换、失败诊断、报告汇总5个环节,每个环节配可直接复用的精准提示词。重在清晰指令+充足上下文+人工审核,治好了回归测试的人肉瓶颈。
|
8天前
|
Web App开发 JavaScript 前端开发
Playwright 从入门到实战:我把 UI 自动化稳定性从 60% 提到 95%
本文分享团队从Selenium迁移到Playwright的实战经验:直击“测试随机失败”痛点,通过自动等待、语义化定位、登录态复用、API准备数据等6大关键优化,将测试稳定性从62%提升至96%,执行时间缩短三分之二,并显著降低排查成本。
|
5天前
|
存储 安全 测试技术
登录功能测试用例怎么答出层次:4 个提问 + 五层展开 + 1 分钟【推断】优先级收口
本文揭秘测试岗高频面试题“手写登录测试用例”的底层逻辑:不考条数,而考结构化思维。强调动笔前先问4个关键边界问题,再按功能→异常→安全→兼容→性能五层有序展开,最后以优先级收口。附可落地的5分钟时间分配法与参数化代码实践,助你从背模板跃升为能自主铺开测试范围的专业 tester。
|
17天前
|
安全 测试技术 数据库
秋招秒杀题:100 件库存来了 1 万人,先问这 4 个问题
校招经典题“100库存+1万人秒杀”考察的不是堆工具,而是系统思维:先澄清业务口径(扣减时机、成功定义、幂等策略),建模状态机与核心不变量;再用可验证脚本生成证据,核对四本账;最后叠加故障看容错。本质是模糊需求下的工程判断力。

热门文章

最新文章