0%

Agent Skill小白入门蓝皮书

前言

Skill,顾名思义,就是技能的意思。在正式介绍 Skill 之前,可以想象一下骑自行车。这就是”技能(Skill)”的本质 —— 将复杂的、需要逐步推理的任务,封装成一套可以自动执行的流程。

人类其实就是一个超级 Agent。让我们用 AI 的视角重新审视这个过程:人脑 = 大语言模型(LLM)

人类大脑的工作方式,和 Agent 惊人地相似:

现在,我们可以正式定义了:Agent Skill,是一套标准化的能力封装,它将复杂的、需要多步推理和工具调用的任务,打包成一个可以直接使用的”技能包”。

一个 Skill 通常是以一个文件夹的形式存在的,文件夹的目录结构如下:

1
2
3
4
5
riding-skill/
├── SKILL.md # 必须:Skill 的定义、执行流程(告诉LLM,如何执行这个 Skill)
├── scripts/ # 可选:Skill 中可能用到的脚本(LLM 的“手脚”)
├── assets/ # 可选:Skill 中可能用到的静态资源(也是LLM 的“手脚”)

举个例子

为了给大家一个更直观的展示,这里给大家展示一个小示例:一个「两数相加的 Skill 」

1
2
3
4
two-numbers-sum/
├── SKILL.md
├── scripts/
├── add_numbers.py

SKILL.md 文件内部主要包含两部分:

  1. 元信息(Metadata):告诉 Agent 这个 Skill 是什么,何时使用

  2. name:技能名称

  3. description:对技能功能的描述

  4. 操作流程(Steps):告诉 Agent,如何执行这个 Skill

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
---
name: two-numbers-sum
description: 两数之和计算工具,用于快速准确地计算两个数字的和。当用户需要计算两个数字的加法运算时使用,支持整数、小数和负数。输出格式:"哈哈哈,我算出来了!结果是{结果}"。适用场景包括:(1) 简单的两个数字相加 (2) 需要确保计算准确性 (3) 批量的加法运算。
---

# 两数之和

## 概览

这个技能提供了一个专门用于计算两个数字之和的工具,使用Python脚本确保计算的准确性和一致性。当用户请求两个数字相加时,技能会调用优化的加法脚本并返回带有趣味性的格式化结果。

## 执行步骤

1. **提取数字**:从用户输入中识别两个数字
2. **调用脚本**:使用 `scripts/add_numbers.py` 进行计算
3. **格式化输出**:按照要求的格式返回结果

## 使用方法

### 脚本执行

# 基本用法
python3 scripts/add_numbers.py <number1> <number2>

add_numbers.py长这个样:

1
2
3
4
5
6
 """为便于大家理解,只放了部分核心代码,大家只需要知道,这是一个两数相加的脚本就好"""
def add_two_numbers(num1, num2):
return num1 + num2

def main():
result = add_two_numbers(args.num1, args.num2)

如果上面这个例子还不直观,你可以去 https://www.coze.cn/skills 里看看,里面有很多“skill”,你可以添加然后跟他们进行自然语言交互得到返回结果。

何时使用 Skill

当你的任务满足以下一个或多个特征时,就应该考虑使用 Skill,而不是依赖临时的长提示词或简单的脚本:

  1. 需要处理本地文件:当 Agent 需要读取、分析、修改或创建本地文件时(如 PDF、Word 文档、Excel 表格、图片、代码等),Skill 可以将这些操作封装成标准流程。
  2. 任务流程相对固定且可复用:例如,“将一篇 Markdown 文章进行风格优化,并转换为符合公司品牌指南的 PPT”这类任务,涉及多个固定步骤,非常适合封装成一个或多个 Skill。
  3. 需要集成特定的知识或规范:比如,将公司的“品牌设计指南”、“代码审查规范”或“法务文案要求”封装成 Skill,可以让 Agent 在执行相关任务时自动遵循这些标准。
  4. 非技术人员希望扩展 AI 的能力:Skill 的创建过程可以通过自然语言完成(借助 skill-creator),这极大地降低了非开发者为 Agent “赋能”的门槛。
  5. 希望对 AI 的能力进行模块化管理和迭代:随着任务变得复杂,可以将不同的能力拆分成独立的 Skill(如文档读取 Skill、内容分析 Skill、图表生成 Skill),然后像乐高积木一样组合使用。当某个环节需要优化时,只需迭代对应的 Skill 即可。

skill最开始只是配合Claude网页端和ClaudeCode使用的,后来用的人多了,就像MCP一样,这个标准就变成了行业标准,各个Agent工具、IDE,例如Codex、OpenCode、Gemini Cli、Cursor都开始支持。

MCP 看上去效果跟skill差不多,但是mcp比较重,因为在“每一个连接的 MCP Server 必须在对话开始前,将其所有工具的完整定义(名称、详细描述、参数 Schema、使用示例)一次性注入 LLM 的上下文中”。每个工具消耗 500 个 Token,那只链接这一个工具就需要消耗将近 20000 Token。在真实环境下,一个 Agent 不会仅链接一个 MCP Server。假如你只问了 AI 一个非常简单的问题(1+1=?),Agent 已经烧掉了大几万的 Token,这个成本是非常恐怖的。

而 Skills 的核心机制是“渐进式披露”,不仅节省token,还能提升注意力,正确率更高。Skill 本质是把 “大模型能力 + 工程化逻辑 + 场景规则” 打包成一个可复用、可调用、可配置的功能模块,解决的是 “端到端的业务问题”,而非单点的技术问题。所以这里的重点是“可复用”,对于运维来说,无论是重复搭建环境还是查看问题,其实很多都是重复的过程,这些都建议去写成skill里,然后给全组人甚至客户使用。用 Skill 做任务,持续迭代优化。以后都用这个 Skill 来执行任务。每次完成后检查输出,哪里不满意就告诉Agent,让它改进并更新 Skill。在实战中不断打磨,这才是正确的使用姿势。

更新信息可以看claude官网:https://claude.com/blog/extending-claude-capabilities-with-skills-mcp-servers

依赖关系:一个Skill可以通过MCP来连接所需资源,但并非必须;它也可以直接调用API。MCP为Skill提供了一种更标准化、安全的资源接入方式。简而言之,MCP是用来统一工具调用的协议,Skill可以指挥Agent去调用MCP。
二者是互补的关系,而非替代关系。MCP负责连接外部世界界,提供实际的操作能力;Skill则负责指导AI如何思考和执行任务,确保输出的准确性和一致性。在实际应用中中,通常需要结合两者,才能构建出功能强大、稳定可靠的AI智能体。

这一期就是理论,下一步,我准备搞一个skill,实现一个简单的功能“采集XXX容器的火焰图并把分析结果传给我”。到时候整个过程会记录并发上来。

感谢你请我喝咖啡~

欢迎关注我的其它发布渠道