Agent的Skills

深入理解Agent Skills的概念、原理,以及它与Prompt、MCP、Function Calling的本质区别

🧠 Skills是什么?

随着 AI 应用从简单的"单轮问答"走向复杂的"自动化工作流",Skills 已经成为大模型应用架构中绕不开的工程概念。

更合理的工程做法,是把每一项专项能力分别写成独立的 SKILL.md

  • 代码审查标准
  • 慢查询排查流程
  • 报告生成规范

元数据常驻上下文,正文按需加载。新人能读懂,换项目能复用,Agent 按需激活执行,互不干扰。

📖 核心定义

Skill 是一个用自然语言定义的、具有特定领域上下文的逻辑指令集,本质上是通过延迟加载优化 Token 消耗的 sub-agent。

在团队协作中,很多"隐性知识"都在老员工脑子里,比如代码规范、排查流程、Review 标准。

Skills 的核心价值在于:把这些隐性规则变成显性的文档(SOP),让 AI 能够自主阅读、理解并执行。


与传统的硬编码逻辑不同,Skill 不强制规定每一步的代码逻辑,而是用自然语言将决策权下放给模型。

模型通过 load_skill() 动态加载 SKILL.md 后,将其中定义的规则、流程和约束实时注入到推理上下文中,指导后续的工具调用和决策。这既保留了 Agent 处理不确定性的优势,又避免了纯代码编排的僵化。


⚙️ 关键机制

延迟加载(Lazy Loading)

  • 元数据保持简短,常驻上下文
  • 正文仅在触发时动态注入,避免挤占 Token

动态上下文注入

  • 不同于静态文档的"阅读",Skills 是将规则实时注入推理上下文
  • 直接影响模型决策,而非仅作为参考

🔄 为什么不是"基于 Function Calling 封装"?

这个表述容易让人误以为 Skill 是某种 Function Calling 的语法糖。实际上,Skill 的核心机制是上下文注入——Agent 读取 Markdown 文档,把其中的规则和流程纳入推理上下文。

Function Calling 只是 Agent 执行某些动作时可能用到的底层手段,不是 Skills 本身的定义层。

注意:load_skill() 是对"Agent 读取并激活 SKILL.md"这一过程的概念性描述,不同工具的实际触发方式会有差异。


⚖️ Skills与相关概念的区别

Skills vs Prompt

维度 Prompt Skills
本质 单次对话的文本指令 可持久化、可发现的能力单元
复用性 随对话上下文丢失,难以维护 标准化封装,跨项目、多场景复用
加载机制 全量载入(挤占 Token) 延迟加载(按需读取正文)

一句话总结:Prompt 是用户即时表达意图的载体;Skills 是包含元数据(何时使用)+ 正文(如何执行)的完整方案,通过 load_skill() 机制按需加载到上下文。


🔌 Skills vs MCP

这是最容易产生误解的地方。

维度 MCP (Model Context Protocol) Skills
核心思路 标准化连接:通过 JSON-RPC 统一数据格式 逻辑编排:用自然语言描述复杂执行路径
定义方式 在 Server 端用代码(TS/Python)写死逻辑 SKILL.md 中用自然语言引导模型决策
环境依赖 需要运行一个 MCP Server 进程 依赖可执行环境(如本地 Shell 或沙箱)
哲学 以协议为中心:一次编写,所有 AI 通用 以模型为中心:利用模型推理能力处理不确定性
  • MCP 解决的是连通性:它像 USB-C,让 AI 能以统一格式读文件、查数据库。

  • Skills 解决的是编排逻辑:它像一份说明书,告诉 AI 如何执行复杂任务流。这些任务完全可以包括调用多个 MCP 工具。

两者关系:它们不是竞争关系,而是解决不同层面的问题。MCP 负责把外部系统接入,Skills 负责决定什么时候用、怎么组合这些能力。一个高级 Skill 的底层往往调用多个 MCP 工具。


🎯 Function Calling vs Skills

维度 Function Calling Skills
层级 底层机制 上层应用
粒度 原子操作(单次工具调用) 复合流程(多步骤决策 + 工具组合)

Skills 没有创造新能力,而是通过自然语言文档将能力组织成更易用的形式。

Agent 读取 SKILL.md,将规则和流程注入推理上下文。根据上下文指导,Agent 可能通过 Function Calling 执行脚本、读取资源或调用 MCP 工具。


🏗️ 四层关系总结

组件 一句话定义 形象类比
Prompt 即时意图表达的载体 用户说的话
Function Calling LLM 输出结构化调用的能力 神经信号,一切的基础
MCP 标准化的工具接入协议 USB-C 接口
Skills 用自然语言定义的 sub-agent 任务说明书

层级关系:Function Calling 是地基 → Prompt 表达意图 → MCP 负责连通外部系统 → Skills 负责编排复杂任务流。

一句话总结:Prompt 承载意图,Function Calling 实现交互,MCP 负责连通外部系统,Skills 负责编排复杂任务流——从"说什么"到"怎么做"再到"聪明地做"。


💡 Skills实例

📁 Skill的目录结构

从结构上看,Skill 核心就是一个 SKILL.md 文件,包含元数据(描述什么时候用)和正文(具体的执行 SOP)。

设计亮点是渐进式披露:元数据常驻上下文,AI 知道有哪些技能可用;正文按需加载,只有触发时才读取。

复杂点的 Skill 还会有附加的资源目录、脚本和参考文档:

1
2
3
4
5
skill-name/
├── SKILL.md              # 必需:元数据(何时使用)+ 正文(指令、流程、示例)
├── scripts/              # 可选:可执行脚本(Python/Bash),按需调用
├── references/           # 可选:参考文档,按需读取
└── assets/               # 可选:模板、图片等资源

🧪 SKILL.md示例结构

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# code-review-expert

## Meta
- name: code-review-expert
- description: 资深工程师视角的结构化代码审查
- triggers: 当需要审查代码质量时激活

## Capabilities
1. 架构设计审查
2. SOLID 原则合规性检查
3. 安全性风险扫描
4. 性能问题识别
5. 错误处理完整性
6. 边界条件覆盖

## Review Framework
1. 接收代码片段或文件路径
2. 逐维度分析(见 Capabilities)
3. 输出结构化审查报告
4. 针对每项问题提供修复建议

## Output Format
- 问题编号与严重程度
- 问题描述与代码位置
- 修复建议与参考规范

🛠️ 项目实战场景

在工程实践中,Skills 主要用于固化工程标准:

Skill 名称 用途
code-reviewer 审查代码规范,从架构合理性、异常处理、日志规范、安全风险等多维度进行结构化审查
api-endpoint-generator 按项目统一响应结构与异常模型生成标准化接口代码
database-access-review 审查数据库访问逻辑,关注索引使用与慢查询风险
refactor-analysis 先评估影响范围与依赖关系,再输出分步骤重构方案
security-audit 扫描 SQL 拼接、XSS、权限绕过等常见安全风险

使用 Skills 的好处:AI 在执行任务时,不再是"随缘发挥",而是严格执行团队标准,保持质量一致性。


🌐 推荐Skills资源


📝 总结

Skills 的本质:用自然语言定义的、具有特定领域上下文的逻辑指令集,通过延迟加载优化 Token 消耗,本质上是 sub-agent。

Skills 的价值

  • 模块化:每个 Skill 专注一项能力,互不干扰
  • 可复用:换项目时直接迁移,新人易读懂
  • 按需加载:元数据常驻,正文按需注入,不挤占上下文

Skills 与其他组件的关系

  • Prompt 承载意图
  • Function Calling 实现交互
  • MCP 负责连通外部系统
  • Skills 负责编排复杂任务流

适用场景:当你的 Agent 工作流节点增多、审查标准变复杂、团队需要协作时,Skills 是将"隐性知识"显性化、工程化的最佳实践。


最后更新于 2026-03-27 03:34 UTC
그 경기 끝나고 좀 멍하기 있었는데 여러분 이제 살면서 여러가
使用 Hugo 构建
主题 StackJimmy 设计