AI Agent 能力调用方式:Tool、MCP、Skill 到底怎么被调用?
在 AI Agent 系统里,Tool、MCP、Skill 经常被一起讨论。真正容易混淆的地方,不是它们的概念定义,而是:
模型到底是怎么“调用”这些能力的?
Agent 又在中间负责什么?
核心原则可以先记住一句:
模型负责决策,Agent 执行器负责调用外部能力。
也就是说,模型通常并不直接操作文件、数据库、浏览器、Shell 或第三方服务。模型更多是生成一个结构化调用意图,比如“调用哪个工具、传什么参数”。真正执行动作的是 Agent Runtime、Tool Executor、MCP Client 或 Skill Executor。
1. 基础调用链
一个标准 Agent 调用链大致如下:
用户输入
↓
Agent 整理上下文、可用工具、系统规则
↓
模型判断是否需要调用外部能力
↓
模型通过 Function Calling 输出 tool call
↓
Agent 校验 tool name 和 arguments
↓
Agent 路由到对应执行器
↓
执行器调用本地函数、MCP Server、Skill 脚本或 Shell
↓
执行结果返回模型
↓
模型继续推理或生成最终回答
所以,“模型调用工具”这句话更准确的表达是:
模型生成工具调用请求,Agent 负责执行这个请求。
下面按不同能力来源拆开看。
2. Local Tool:本地 Tool 调用
Local Tool 是最直接的一类工具。它通常注册在 Agent 的 Tool Registry 里,由 Agent 本地执行。
常见能力包括:
- 文件读取与写入
- 本地数据库查询
- HTTP 请求
- 本地检索服务
- 浏览器自动化
- 图片生成
- Shell 命令封装
调用方式通常是:
模型通过 Function Calling 选择 Local Tool
↓
Agent 根据 Tool Registry 找到对应实现
↓
Agent 在本地进程或本地服务中执行
↓
结果返回模型
例如模型可能输出:
{
"tool": "read_file",
"arguments": {
"path": "package.json"
}
}
Agent 收到后,不是让模型自己读文件,而是由本地执行器读取文件,再把内容返回给模型。
Local Tool 的特点是:工具实现直接归 Agent 环境管理,调用链短,适合本地能力和内部服务。
3. MCP Tool:远程能力接入
MCP Tool 本质上也是 Tool,只是它的能力来源不是 Agent 本地函数,而是 MCP Server。
MCP,全称是 Model Context Protocol,主要解决的问题是:
外部系统如何以标准方式把能力暴露给 Agent?
调用链通常是:
MCP Server 暴露工具列表和 schema
↓
Agent 通过 MCP Client 获取这些工具
↓
模型看到 MCP Tool 的 schema
↓
模型通过 Function Calling 调用某个 MCP Tool
↓
Agent 通过 MCP Client 把请求转发给 MCP Server
↓
MCP Server 执行真实操作
↓
结果返回 Agent,再返回模型
例如 GitHub、Slack、Notion、Excel、数据库系统都可以通过 MCP 暴露能力。模型看到的仍然是一个个 tool schema,但真正执行发生在远程或外部系统中。
MCP Tool 的特点是:模型仍通过 Function Calling 调用工具,但 Agent 需要通过 MCP Client 转发请求。
4. Skill Tool:企业级 Agent 主流方式
在很多企业级 Agent 系统中,Skill 不只是 SKILL.md 说明书,而是会被注册成标准 Tool。
这类 Skill 通常代表一个业务能力,比如:
- 生成财务分析报告
- 查询客户画像
- 执行订单审核
- 生成投标文件
- 调用内部审批流程
- 完成某个固定业务 SOP
调用链通常是:
业务 Skill 注册为标准 Tool
↓
模型通过 Function Calling 调用 Skill Tool
↓
Agent 路由到 Skill Executor
↓
Skill Executor 执行内部实现
↓
内部实现可能是 Python、Docker、RPC、工作流引擎或内部服务
↓
执行结果返回模型
这里的关键点是:
Skill 内部怎么实现,对模型是透明的。
模型只知道有一个工具,比如:
{
"tool": "generate_financial_report",
"arguments": {
"company": "A 公司",
"period": "2026 Q2"
}
}
至于这个 Skill 内部是跑 Python 脚本、启动 Docker、调用 RPC,还是编排多个服务,模型并不需要知道。
这种方式适合企业场景,因为它可以把复杂业务流程封装成稳定接口,让模型只负责判断“什么时候用这个 Skill、参数是什么”。
Skill Tool 的特点是:Skill 被工具化,模型通过 Function Calling 直接调用,业务复杂度封装在 Skill Executor 里。
5. Skill + Bash:Code Agent 常见方式
在代码类 Agent 中,Skill 的形态经常不同。它不一定注册成一个独立 Tool,而是作为一组任务说明、脚本和约束存在。
例如一个 Skill 目录里可能有:
SKILL.md
scripts/
templates/
references/
调用链通常是:
Agent 判断任务匹配某个 Skill
↓
模型阅读 SKILL.md
↓
模型理解 Skill 的用途、流程和约束
↓
模型通过 Function Calling 调用 Bash Tool
↓
Agent 在本地 Shell 中执行命令
↓
命令可能是 python、git、pytest、npm、docker 等
↓
结果返回模型
这里不是模型直接调用 “Skill Tool”,而是:
Skill 指导模型怎么做,Bash Tool 负责承接具体执行。
比如某个 PDF Skill 要求“生成后必须渲染检查”,模型读完 SKILL.md 后,可能会调用 Bash Tool 执行:
python render_pdf.py output.pdf
所以在 Code Agent 里,Skill 更像“专业操作手册 + 附带脚本资源”。模型先读懂规则,再通过 Shell、文件工具、测试工具等完成任务。
Skill + Bash 的特点是:Skill 不一定是 Function Calling 目标,而是影响模型如何使用 Bash 和其他 tools。
6. Prompt Skill:早期方案
Prompt Skill 是更早期的一类实现方式。它不依赖标准 Function Calling,而是让模型按照约定在自然语言里输出特殊指令。
例如:
[EXEC] python analyze.py data.csv
或:
Action: run_script
Input: analyze.py data.csv
Agent 再通过正则、状态机或自定义解析器识别这些文本,决定执行什么脚本。
调用链通常是:
模型阅读 Prompt Skill 规则
↓
模型在自然语言中输出特殊格式指令
↓
Agent 解析这些指令
↓
Agent 执行对应脚本或服务
↓
结果返回模型
这种方式的问题是,它高度依赖模型输出格式。一旦模型多写、少写、格式错乱,Agent 就可能解析失败。
因此在现代 Agent 系统中,Prompt Skill 正逐渐被 Function Calling、Tool Registry 和结构化调用方式替代。
Prompt Skill 的特点是:实现简单,但鲁棒性较弱,不适合复杂或高可靠场景。
7. 五种方式对比
| 类型 | 模型调用方式 | Agent 执行方式 | 典型场景 |
|---|---|---|---|
| Local Tool | Function Calling | 本地函数或本地服务 | 文件、HTTP、数据库、本地检索 |
| MCP Tool | Function Calling | MCP Client 转发到 MCP Server | 第三方服务、外部系统、远程工具 |
| Skill Tool | Function Calling | Skill Executor 执行业务封装 | 企业业务流程、标准 SOP |
| Skill + Bash | Function Calling 调用 Bash | Shell 执行脚本或系统命令 | Code Agent、自动化开发、测试 |
| Prompt Skill | 自然语言特殊指令 | 正则或状态机解析后执行 | 早期 Agent、轻量原型 |
从调用层面看,最重要的差异不是名字,而是:
- 模型是否通过 Function Calling 发起结构化调用
- Agent 把调用路由到哪里
- Skill 是作为 Tool 暴露,还是作为上下文规则影响模型
- 外部能力是本地实现,还是通过 MCP Server 实现
8. 总结
如果从模型和 Agent 的分工看,可以这样理解:
模型:判断要不要调用能力、调用哪个能力、传什么参数
Agent:校验、路由、执行、回传结果
Tool:承接结构化调用
MCP:把远程或外部系统包装成 Tool
Skill Tool:把业务能力包装成 Tool
Skill + Bash:让模型读 Skill 规则后,通过 Bash 执行脚本
Prompt Skill:让模型输出约定文本,由 Agent 解析执行
所以,Tool、MCP、Skill 不应该只按“概念区别”理解,更应该放到 Agent 调用链里看:
Tool 是调用接口,MCP 是外部工具接入协议,Skill 可以是被工具化的业务能力,也可以是指导模型使用工具的方法包。
这也是为什么在不同 Agent 系统里,Skill 的含义会不一样:企业 Agent 更常见的是 Skill Tool,代码 Agent 更常见的是 Skill + Bash,而早期系统里还会看到 Prompt Skill。

410

被折叠的 条评论
为什么被折叠?



