什么是 Agent 中的 Skill?它和传统意义上的 API 或函数调用有什么本质区别?
面试官:“你在构建 AI Agent 时,提到的‘Skill’是什么?它和我们传统调用的 API 或函数有什么本质区别?”
候选人:
“这是个很好的问题,也是我最近在搭 Agent 时琢磨最多的点。Skill 不是简单地给 Agent 多一个可调用的函数,而是赋予它一种完成特定任务的能力单元,里面封装了意图理解、工具选择、执行策略甚至纠错逻辑。
我用一句话来区分:API 是被动的工具说明书,Skill 是主动的能力细胞。 你调用一个 API,必须精确知道它的参数、返回格式,什么时候该调它;而一个 Skill 被 Agent 触发时,它自己就能决定该用哪些 API、按什么顺序、出了错怎么办,最终交付一个任务结果。

一、Skill 到底是什么?
在 Agent 架构里,Skill 可以理解成一个可组合、可自主执行的任务模块。比如“预订机票”这个 Skill,它里面可能包含:
-
理解用户自然语言的时间、目的地
-
调用航班查询 API
-
对比价格和时长(可能需要调用规则引擎或内部微服务)
-
确认信息后调用支付接口
-
如果支付失败,走重试或降级(比如推荐其他航班)
整个过程不是一段固定的代码,而是 Agent 根据上下文和目标,动态编排出来的。Skill 就是这个编排能力的封装。
二、和传统 API/函数调用的本质区别
我把它们拆成五个维度来看,区别非常鲜明。
| 维度 | 传统 API / 函数 | Agent Skill |
|---|---|---|
| 触发方式 | 被动等待精确调用,调用者必须知道何时调用 | 由 Agent 根据任务目标自主激活,可在不确定环境中触发 |
| 输入输出 | 强类型、结构化参数,返回确定数据 | 常结合自然语言、模糊意图,输出可包含多种状态(成功/失败/澄清等) |
| 执行逻辑 | 固定步骤,if-else 固化在代码中 | 包含动态推理链,可组合多个 API、工具甚至其他 Skill |
| 错误处理 | 返回错误码,由调用方处理 | 内置重试、降级、向用户追问澄清等自主修复策略 |
| 上下文理解 | 无状态,一次调用一事 | 能记住对话历史、任务背景,并在跨步骤中传递状态 |
一个很直观的例子:传统方式下,你要订机票,得自己调航班查询 API,拿到列表,再选一条,调下单 API,再调支付 API,中间任何一个环节出错都要自己写代码处理。而“机票预订 Skill”你只需要说:“帮我订明天去上海的最早航班”,Skill 自己就去做余下全部事情,中间还会问你“没有直飞,是否接受中转?”——这就是本质差异。
三、为什么 Skill 不是简单的 API 封装?
因为 Skill 内部通常有四个核心组成部分,让它从一个死工具变成了活的能力:
-
意图识别与澄清:能理解模糊的自然语言,缺少信息时主动反问。
-
工具选择与编排:知道为实现目标该调用哪个 API、按什么顺序,甚至能自己生成 SQL 或代码片段。
-
状态管理与记忆:跨多轮对话或长时间任务时保持上下文,不像 API 调用那样无状态。
-
安全与权限控制:Skill 可以内置使用限制,比如“不登录不能下单”,而不像直接暴露 API 那样容易被绕过。
四、Skill 的工程价值在哪里?
我最近在做一个企业内部的 Agent 平台,感触最深的是:传统 API 复用只能省代码,Skill 复用能省决策。比如所有需要“查天气”的场景,Agent 不用每次都从头去拼 API,而是调用已经调试好、带重试和中文回复模板的天气 Skill。这让 Agent 开发从“写路由逻辑”变成了“挑选和组合技能”,效率提升很大。
五、比喻总结
如果把 API 比喻成工具箱里的一把锤子、一把螺丝刀,那 Skill 就是一个完整的安装师傅。你不再需要告诉他“先拿锤子敲三下,再用螺丝刀拧两圈”,你只需要说“把柜子装好”,他会自己选工具、自己判断先装哪块板、遇到孔位不对还知道停下来问你。本质区别就在这里:一个是工具,一个是能力。
在这个 Agent 崛起的时代,我们缺的从来不是更多的 API,而是能把 API 用出价值的“技能工人”。而 Skill 正是我们给 Agent 装上的双手和大脑。