想象你请了一位私人助理(Agent)。
这位助理很聪明,能听懂你的话、分析问题、制定计划。但你不会指望他凭空帮你订机票——他需要调用订票系统;你也不会指望他直接帮你写代码——他需要打开 IDE。
这位助理是 Agent,而订票系统、IDE 这些工具,就是 Skill。
一句话总结:Skill 是 Agent 的”能力模块”,Agent 通过调用 Skill 来与外部世界交互。
如果你正在关注 AI Agent 技术,可能已经听说过 MCP 和 Skill 这两个词。它们经常被混为一谈,但其实分工不同。
这篇文章就来彻底讲清楚:Agent 和 Skill 到底是什么关系?Agent 又是如何运行 Skill 的?
Agent(智能体)是一个能自主感知环境、做出决策并执行动作的 AI 系统。
拿人类来类比:你是一位厨师(Agent),你会思考、会做决定,但你不会凭空变出食材,你需要工具——刀、锅、食材。
在 AI 领域,大语言模型(LLM)是 Agent 的”大脑”,它负责理解问题、推理分析、规划步骤。但 LLM 本身只输出文字,它无法直接操作现实世界。
这就是 Skill 存在的意义。
Skill(技能)是 Agent 与外部世界交互的能力单元。
一个 Skill 通常包含:
- • 工具定义:告诉 Agent 这个技能能做什么(函数签名)
- • 执行逻辑:实际执行任务的代码
- • 使用说明:教 Agent 在什么场景下调用这个 Skill
举个例子:
- • 一个 “天气查询” Skill,让 Agent 能获取实时天气
- • 一个 “发送邮件” Skill,让 Agent 能发邮件
- • 一个 “代码执行” Skill,让 Agent 能运行代码
Skill 的本质是一种封装——把某个具体能力打包成 Agent 可以理解和调用的格式。
用一句话概括:Skill 定义”做什么”和”怎么做”,Agent 决定”什么时候做”和”为什么做”。
这种分层架构有几个好处:
1. 模块化
每个 Skill 是独立的,你可以随时添加、删除或更新 Skill,而不影响 Agent 的核心逻辑。
2. 复用性
写好的 Skill 可以在不同的 Agent 之间复用。比如一个 “查询数据库” Skill,既可以被客服 Agent 使用,也可以被数据分析 Agent 使用。
3. 安全性
Agent 不直接执行任意代码,而是通过预定义的 Skill 接口来操作。这为权限控制提供了边界。
理解了关系,再来看运行时的流程。
步骤 1:Skill 注册
当 Agent 启动时,系统会把所有可用的 Skill 加载进来,并提取它们的信息:
- • Skill 名称
- • 功能描述
- • 参数定义
这些信息会被精简后注入到 LLM 的上下文中。注意,不是把整个 Skill 代码塞进去,而是只给”目录”——让 LLM 知道”有哪些工具可用”。
步骤 2:意图识别
当用户提出请求时,比如:“查一下上海今天的天气”。
LLM 分析这个请求,判断需要调用哪个 Skill。它会看到上下文中有 “weather” Skill,描述是”查询指定城市的天气信息”。
步骤 3:生成调用请求
LLM 输出一个结构化请求,告诉系统:
}
这叫做 “Function Calling” 或 “Tool Use”,是现代 LLM 的标准能力。
步骤 4:执行 Skill
Agent 框架接收到这个请求后,找到对应的 Skill 并执行。Skill 内部的代码会去调用天气 API,获取数据。
步骤 5:结果回传
Skill 执行完成后,把结果返回给 Agent:
{ “city”: “上海”, “temperature”: “22°C”, “condition”: “多云”}
步骤 6:生成回复
LLM 拿到执行结果后,生成自然语言的回复给用户:
“上海今天多云,气温 22 度,适合出门。”
你可能还听过 MCP(Model Context Protocol),这是 Anthropic 推出的一个开放协议。
- • MCP 解决的是”如何连接”的问题——它提供了一套标准接口,让 Agent 可以对接各种外部服务
- • Skill 解决的是”做什么”的问题——它定义了具体的能力和使用方式
两者的关系:MCP 是连接层,Skill 是能力层。
就像 USB-C 是一个通用接口标准(MCP),而你插上去的设备——键盘、鼠标、显示器——就是不同的 Skill。
以 OpenClaw 为例,它的 Skill 系统是这样工作的:
Skill 的组织方式:
- • 每个 Skill 是一个目录,包含
SKILL.md文件 - • SKILL.md 用 YAML frontmatter 定义元数据,用 Markdown 写使用说明
加载优先级:
- 工作目录下的
skills/(最高优先级) - 用户目录
~/.openclaw/skills/(本地 Skill) - 内置的 bundled skills(系统自带)
运行机制:
- • Agent 不会一次性加载所有 Skill 的完整内容
- • 只把 Skill 的”目录信息”(名称、描述、路径)注入上下文
- • 当 LLM 决定调用某个 Skill 时,才去读取完整的 SKILL.md
这种”按需加载”的设计很聪明,既让 Agent 知道有什么工具可用,又避免了上下文过长。
Agent 和 Skill 是 AI 应用架构中的两个核心概念:
- • Agent 是决策者,它理解问题、规划步骤、协调资源
- • Skill 是执行者,它封装具体能力,完成实际任务
- • Agent 通过 Function Calling 机制调用 Skill
- • Skill 让 Agent 从”会说话”变成”能做事”
如果你正在开发 AI 应用,建议把你的功能拆解成独立的 Skill。好的 Skill 设计应该:
- 单一职责——一个 Skill 只做一件事
- 清晰的描述——让 LLM 能准确理解何时调用
- 明确的参数——输入输出都要有定义
这样,你的 Agent 就能像搭积木一样,组合各种能力,搞定复杂的任务。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/248391.html