2025 年 10 月,Anthropic 在 Claude Code 中正式推出 “Agent Skills” 功能,标志着大模型智能体技术进入了一个全新的阶段 ——技能工程时代。短短四个月内,其开源仓库收获了超过 62,000 个 GitHub 星标,GitHub Copilot、Microsoft Agent Framework 等主流平台纷纷宣布原生支持这一标准。
与传统的提示词工程和工具调用不同,Agent Skills 提供了一种模块化、可组合、可移植的方式,将人类的专业知识打包成智能体可以理解和执行的 “数字工作手册”。这一技术突破解决了长期以来困扰智能体发展的核心问题:如何让通用大模型在特定领域表现出专家级的能力,同时保持系统的可维护性和可扩展性。

什么是 Agent Skills

官方定义

Anthropic 官方定义:Skills 是模块化的能力包,扩展了 Agent 的功能。每个 Skill 都打包了 LLM 指令、元数据、可选资源(脚本、模板、参考文档等),Agent 会在需要时自动发现并加载使用。

直观理解

一个更形象的比喻:Skill 就像给 Agent 准备的工作交接 SOP 大礼包。想象你要把一项复杂工作交给新同事,且希望一次性交接完成,以后不被打扰,你会准备什么?
任务的执行 SOP 与必要背景知识
工具的使用说明和操作步骤
要用到的模板、素材和历史案例
可能遇到的问题及解决方案
企业规范和注意事项
Skill 的设计架构几乎是这个交接大礼包的数字版本。它不是一个简单的函数调用,而是一个自包含的知识与执行单元。

特性 传统工具 (Tool) Agent Skills
核心功能 执行单一函数并返回结果 注入程序性知识,指导整个任务流程
组成 仅包含可执行代码 指令文档 + 脚本 + 资源 + 元数据
上下文影响 不改变 Agent 的理解方式 重塑 Agent 对任务的认知和决策逻辑
复杂度 原子化,单一职责 可包含多步骤工作流和边缘案例处理
加载方式 必须预先全部加载 渐进式披露,按需加载
可移植性 平台特定 跨平台标准格式

Agent Skills 的演进历程

大模型能力扩展经历了三个清晰的范式迭代:

提示词工程时代(2022-2023)

核心思想:通过精心设计的指令激发模型的零样本和少样本能力
代表技术:思维链 (CoT)、少样本提示、角色设定
局限性:
提示词具有临时性,难以版本化和共享
上下文窗口有限,无法容纳大量专业知识
缺乏结构化,难以维护复杂的工作流程
无法捆绑可执行代码和资源

工具使用与函数调用时代(2023-2024)

核心思想:让模型能够调用外部 API 和函数来弥补自身能力的不足
代表技术:OpenAI Function Calling、LangChain Tools、AutoGPT Plugins
局限性:
每个工具都是原子化的,仅能完成单一任务
工具之间缺乏协调,复杂任务需要大量的规划开销
无法传递领域特定的流程性知识
所有工具必须预先加载,占用宝贵的上下文空间

技能工程时代(2025 年至今)

核心思想:引入更高阶的抽象,将领域知识打包成可动态加载的技能包
代表技术:Anthropic Agent Skills、Microsoft Agent Framework Skills、OpenClaw
核心优势:
模块化:每个技能都是独立的单元,易于开发、测试和维护
可组合:多个技能可以协同工作,完成复杂任务
可移植:遵循开放标准,可在不同平台间无缝迁移
高效:渐进式披露机制,只在需要时加载完整内容
可扩展:支持热加载,无需重启系统即可添加新能力

Agent Skills 的核心架构

标准目录结构

一个标准的 Skill 是一个自包含的目录,遵循以下结构:

my-skill/
├── SKILL.md          # 必需:技能的核心指令和元数据
├── scripts/          # 可选:可执行脚本(Python、Bash等)
│   ├── validate.py
│   └── generate.sh
├── references/       # 可选:参考文档和知识库
│   ├── api-docs.md
│   └── best-practices.pdf
├── assets/           # 可选:模板、图片、配置文件等
│   ├── report-template.md
│   └── config.json
└── tests/            # 可选:技能的测试用例
    └── test_my_skill.py

其中,只有 SKILL.md 是必需的,其他目录和文件根据技能的复杂度按需添加。

SKILL.md 文件规范

SKILL.md 是技能的核心文件,采用 YAML frontmatter + Markdown 正文的格式:

---
name: PDF报告生成器
version: 1.0.0
author: 你的名字
description: 自动生成包含数据可视化的专业PDF报告
tags: ["pdf", "report", "data-visualization"]
triggers:
  - "生成PDF报告"
  - "创建数据分析报告"
  - "导出为PDF"
dependencies:
  - "data-analysis"
  - "chart-generator"
permissions:
  - "file-system:write"
  - "code-execution"
---

# PDF报告生成器技能

## 何时使用
当用户要求生成包含数据分析和图表的PDF报告时,触发此技能。

## 工作流程
1. 调用data-analysis技能处理用户提供的数据
2. 调用chart-generator技能生成所需的图表
3. 使用assets/report-template.md作为模板填充内容
4. 运行scripts/generate_pdf.py生成最终的PDF文件
5. 将生成的文件路径返回给用户

## 注意事项
- 确保所有图表都有清晰的标题和坐标轴标签
- 报告应包含执行摘要、数据分析、结论和建议四个部分
- 如果数据量超过1000行,先进行抽样分析
- 生成的PDF文件应保存到用户指定的目录

## 脚本说明
- generate_pdf.py: 使用markdown-pdf库将Markdown转换为PDF
- validate_data.py: 验证输入数据的格式和完整性

渐进式披露架构

Agent Skills 最关键的技术创新是 ** 渐进式披露 (Progressive Disclosure)** 机制,它完美解决了上下文窗口有限与技能库庞大之间的矛盾:

阶段 1:元数据预加载

Agent 启动时,只加载所有技能的 YAML frontmatter(通常每个技能几十到几百个 token)
这些元数据包含技能名称、描述、标签和触发词
Agent 根据这些信息建立技能索引,用于快速匹配用户请求

阶段 2:技能触发与加载

当用户请求与某个技能的触发条件匹配时,Agent 才加载该技能的完整 SKILL.md 内容
这部分内容包含详细的工作流程和指令
加载后,这些指令会被注入到 Agent 的系统提示中,指导其后续行为

阶段 3:资源按需加载

在执行过程中,Agent 根据需要动态加载 scripts、references 和 assets 中的内容
例如,当需要执行某个脚本时,才读取该脚本的内容
当需要参考某个文档时,才检索该文档的相关部分
这种三级加载机制使得 Agent 可以同时拥有数百甚至数千个技能,而不会显著增加上下文窗口的负担。

Agent Skills 的分类体系

根据功能和复杂度,Agent Skills 可以分为以下几大类:

基础工具类技能

这类技能是对传统工具的封装,提供原子化的功能:
数据处理类:CSV 解析、JSON 转换、数据清洗、格式转换
文件操作类:文件读写、目录管理、压缩解压、文件搜索
网络请求类:HTTP 请求、API 调用、网页抓取、邮件发送
系统操作类:命令执行、进程管理、环境变量操作
示例:天气查询技能、文件重命名技能、API 调用技能

流程执行类技能

这类技能包含多步骤的工作流程,是 Skills 与传统 Tools 最主要的区别:
文档处理类:PDF 生成、Word 文档编辑、Markdown 转换、报告撰写
代码开发类:项目初始化、代码生成、单元测试编写、代码审查
数据科学类:数据分析、模型训练、可视化生成、实验报告
DevOps 类:CI/CD 流程、部署脚本、监控配置、日志分析
示例:完整的 Web 应用开发技能、学术论文撰写技能、数据科学项目模板技能

领域专业类技能

这类技能封装了特定领域的专业知识和最佳实践:
医疗健康类:症状分析、用药指导、健康报告生成
金融财经类:股票分析、财务报表生成、风险评估
法律合规类:合同审查、法律文书生成、合规检查
教育教学类:课程设计、习题生成、学习计划制定
示例:企业财务报表分析技能、劳动合同审查技能、数学课程设计技能

复合技能

复合技能是由多个基础技能组合而成的高级技能,能够完成端到端的复杂任务:
项目管理类:从需求分析到交付的完整项目管理
内容创作类:从选题到发布的完整内容生产流程
研究分析类:从文献检索到报告撰写的完整研究过程
产品开发类:从市场调研到产品上线的完整开发周期

主流框架的 Skills 实现对比

目前主流的 Agent 框架都已经支持或正在支持 Skills 功能,它们的实现各有特点:

框架 技能格式 核心特性 生态系统 适用场景
Anthropic Agent Skills 基于文件系统的目录结构,SKILL.md 为核心 渐进式披露、跨平台标准、原生支持 Claude 最活跃,ClawHub 已有超过 13,000 个公共技能 通用场景、企业级应用
Microsoft Agent Framework 类库式,支持 C#/Python 深度集成.NET 生态、依赖注入、强类型 微软生态内部支持良好 .NET 开发者、Azure 云应用
LangChain/LangGraph 工具 + 链的组合 高度灵活、可定制性强 最庞大的工具和集成生态 复杂工作流、研究项目
OpenClaw 兼容 Anthropic 格式 开源、轻量级、高性能 快速增长的社区 开源项目、自建部署
CrewAI 角色 + 任务 + 工具 多 Agent 协作、角色分工明确 专注于多 Agent 场景 团队协作类任务
Anthropic Agent Skills(推荐)

作为 Skills 概念的提出者和开放标准的制定者,Anthropic 的实现最为成熟和通用:
优势:
简单直观的文件系统格式
优秀的渐进式披露机制
跨平台兼容性最好
社区生态最活跃
劣势:
对其他大模型的支持相对较弱
复杂工作流的表达能力有限

Microsoft Agent Framework

微软的实现深度集成了.NET 生态,适合企业级开发:
优势:
强类型支持,编译时错误检查
原生支持依赖注入
与 Azure 服务无缝集成
优秀的企业级安全特性
劣势:
学习曲线较陡
跨平台能力不如 Anthropic 标准

LangChain/LangGraph

LangChain 通过工具和链的组合来实现类似 Skills 的功能:
优势:
极高的灵活性和可定制性
支持几乎所有主流大模型
最丰富的工具和集成库
LangGraph 提供了强大的工作流编排能力
劣势:
缺乏统一的技能标准
没有原生的渐进式披露机制
上手难度较高

完整代码示例:构建你的第一个 Skill

下面我们将使用 Python 和 LangChain 构建一个完整的 “PDF 报告生成器” 技能,展示 Skills 的实际开发过程。
环境准备
首先安装必要的依赖:

pip install langchain openai python-dotenv markdown-pdf pandas matplotlib

技能目录结构
创建以下目录结构:

pdf-report-skill/
├── SKILL.md
├── scripts/
│   ├── generate_pdf.py
│   └── validate_data.py
└── assets/
    └── report-template.md

SKILL.md 文件

在---
name: PDF报告生成器
version: 1.0.0
author: 开发者
description: 从CSV数据生成包含数据分析和可视化的专业PDF报告
tags: ["pdf", "report", "data-analysis", "visualization"]
triggers:
  - "生成PDF报告"
  - "分析数据并生成报告"
  - "创建数据可视化报告"
dependencies: []
permissions:
  - "file-system:read"
  - "file-system:write"
  - "code-execution"
---

# PDF报告生成器技能

## 何时使用
当用户提供CSV数据文件并要求生成包含数据分析和图表的PDF报告时,使用此技能。

## 工作流程
1. 验证用户提供的CSV文件路径和格式
2. 读取CSV数据并进行基本的统计分析
3. 生成数据可视化图表(柱状图、折线图、饼图等)
4. 使用assets/report-template.md作为模板填充内容
5. 运行scripts/generate_pdf.py生成最终的PDF文件
6. 将生成的PDF文件路径返回给用户

## 数据分析内容
报告应包含以下分析内容:
- 数据集基本信息(行数、列数、数据类型)
- 数值型字段的描述性统计(均值、中位数、标准差、最大最小值)
- 分类字段的分布情况
- 关键发现和洞察

## 图表要求
- 每个数值型字段生成一个直方图
- 每个分类字段生成一个饼图
- 如有时间字段,生成一个趋势折线图
- 所有图表必须有清晰的标题和坐标轴标签

## 注意事项
- 确保所有数据都被正确加载和处理
- 处理缺失值和异常值
- 报告语言应与用户请求的语言一致
- 生成的PDF文件应保存到用户指定的输出目录

辅助脚本
scripts/validate_data.py:

import pandas as pd
import os

def validate_csv(file_path):
    """验证CSV文件的存在性和格式"""
    if not os.path.exists(file_path):
        return False, f"文件不存在: {file_path}"
    
    if not file_path.endswith('.csv'):
        return False, "文件格式不正确,必须是CSV文件"
    
    try:
        df = pd.read_csv(file_path, nrows=5)
        return True, "CSV文件验证通过"
    except Exception as e:
        return False, f"CSV文件读取失败: {str(e)}"

if __name__ == "__main__":
    import sys
    if len(sys.argv) != 2:
        print("用法: python validate_data.py <csv_file_path>")
        sys.exit(1)
    
    success, message = validate_csv(sys.argv[1])
    print(message)
    sys.exit(0 if success else 1)

报告模板
assets/report-template.md:

# 数据分析报告

## 执行摘要
{{executive_summary}}

## 数据集基本信息
- 文件名称: {{file_name}}
- 数据行数: {{row_count}}
- 数据列数: {{column_count}}
- 生成时间: {{generated_at}}

## 描述性统计
{{descriptive_stats}}

## 数据可视化
{{charts}}

## 关键发现
{{key_findings}}

## 建议
{{recommendations}}

技能执行器
最后,我们创建一个简单的技能执行器,用于加载和执行这个技能:

import os
import sys
from dotenv import load_dotenv
from langchain_openai import ChatOpenAI
from langchain.agents import AgentExecutor, create_openai_tools_agent
from langchain_core.tools import tool
from langchain_core.prompts import ChatPromptTemplate

# 加载环境变量
load_dotenv()

# 初始化LLM
llm = ChatOpenAI(model="gpt-4o", temperature=0)

# 定义工具函数
@tool
def validate_csv(file_path: str) -> str:
    """验证CSV文件的存在性和格式"""
    from scripts.validate_data import validate_csv
    success, message = validate_csv(file_path)
    return message

@tool
def analyze_data(file_path: str) -> str:
    """读取CSV数据并进行基本的统计分析"""
    import pandas as pd
    df = pd.read_csv(file_path)
    
    basic_info = f"""
    行数: {len(df)}
    列数: {len(df.columns)}
    列名: {', '.join(df.columns)}
    数据类型:
    {df.dtypes.to_string()}
    """
    
    descriptive_stats = df.describe().to_markdown()
    
    return f"基本信息:\n{basic_info}\n\n描述性统计:\n{descriptive_stats}"

@tool
def generate_charts(file_path: str, output_dir: str) -> str:
    """生成数据可视化图表并保存到指定目录"""
    import pandas as pd
    import matplotlib.pyplot as plt
    
    df = pd.read_csv(file_path)
    os.makedirs(output_dir, exist_ok=True)
    
    charts_info = []
    
    # 为数值型字段生成直方图
    for col in df.select_dtypes(include=['number']).columns:
        plt.figure(figsize=(10, 6))
        df[col].hist(bins=30)
        plt.title(f'{col} 分布直方图')
        plt.xlabel(col)
        plt.ylabel('频率')
        chart_path = os.path.join(output_dir, f'{col}_histogram.png')
        plt.savefig(chart_path)
        plt.close()
        charts_info.append(f"- {col} 直方图: {chart_path}")
    
    # 为分类字段生成饼图
    for col in df.select_dtypes(include=['object', 'category']).columns:
        if df[col].nunique() <= 10:  # 只对类别数较少的字段生成饼图
            plt.figure(figsize=(10, 6))
            df[col].value_counts().plot(kind='pie', autopct='%1.1f%%')
            plt.title(f'{col} 分布饼图')
            plt.ylabel('')
            chart_path = os.path.join(output_dir, f'{col}_pie.png')
            plt.savefig(chart_path)
            plt.close()
            charts_info.append(f"- {col} 饼图: {chart_path}")
    
    return "生成的图表:\n" + "\n".join(charts_info)

@tool
def generate_pdf(markdown_content: str, output_path: str) -> str:
    """将Markdown内容转换为PDF文件"""
    from scripts.generate_pdf import generate_pdf
    return generate_pdf(markdown_content, output_path)

# 读取SKILL.md内容
with open('SKILL.md', 'r', encoding='utf-8') as f:
    skill_content = f.read()

# 创建提示模板
prompt = ChatPromptTemplate.from_messages([
    ("system", f"""你是一个专业的数据分析助手,拥有生成PDF报告的技能。
    
    请严格按照以下技能说明执行任务:
    {skill_content}
    
    你可以使用提供的工具来完成任务。如果需要执行脚本,请使用对应的工具函数。
    """),
    ("user", "{input}"),
    ("agent_scratchpad", "{agent_scratchpad}")
])

# 创建Agent
tools = [validate_csv, analyze_data, generate_charts, generate_pdf]
agent = create_openai_tools_agent(llm, tools, prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)

# 运行Agent
if __name__ == "__main__":
    if len(sys.argv) < 3:
        print("用法: python skill_executor.py <csv_file_path> <output_pdf_path>")
        sys.exit(1)
    
    csv_file = sys.argv[1]
    output_pdf = sys.argv[2]
    
    result = agent_executor.invoke({
        "input": f"请分析CSV文件 {csv_file} 并生成PDF报告保存到 {output_pdf}"
    })
    
    print("\n最终结果:")
    print(result["output"])

运行示例

python skill_executor.py ./data/sales_data.csv ./output/sales_report.pdf

Skill 如何工作:Agent 读取 SKILL.md 中的指令,按照定义的工作流程,调用相应的工具和脚本,最终完成 PDF 报告的生成任务。


Agent Skills 代表了大模型智能体技术发展的一个重要里程碑。它通过引入模块化、可组合、可移植的技能抽象,解决了传统提示词工程和工具调用的局限性,为构建专业、可靠、可扩展的 AI 应用提供了强大的基础。
从简单的工具封装到复杂的领域专业技能,Skills 系统为开发者提供了一种全新的方式来扩展大模型的能力。


挑战与未来发展

1 当前面临的挑战
技能发现与匹配:如何让 Agent 在庞大的技能库中准确找到最适合的技能
技能组合与协调:如何让多个技能无缝协作,完成复杂的端到端任务
技能版本管理:如何管理技能的版本更新和兼容性问题
技能安全性:如何防止恶意技能对系统和用户造成危害
技能评估与质量保证:如何评估技能的质量和可靠性
2 未来发展趋势
技能市场与生态系统:将会出现类似应用商店的技能市场,用户可以轻松购买和安装各种专业技能

自动技能生成:大模型将能够自动从文档、视频和人类演示中学习并生成新的技能

技能进化与自我优化:技能将能够根据使用反馈自动优化和改进

跨模态技能:支持文本、图像、音频、视频等多种模态的技能

多 Agent 技能协作:多个 Agent 将能够共享和协同使用技能,完成更复杂的任务

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐