news 2026/2/9 9:57:54

大模型开发者必学!Agent Skills技术解析与实践案例(收藏级教程)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
大模型开发者必学!Agent Skills技术解析与实践案例(收藏级教程)

Agent Skills是Anthropic提出的渐进式披露提示词管理机制,分为元数据、指令和资源三层,实现按需加载,大幅降低Token消耗。本文以Claude Code为例,详细介绍了Skills的安装、创建和使用方法,包括实战案例"字幕转markdown笔记",并对比了Skills与MCP的区别。Skills适合轻量化、提示词驱动的能力扩展,是大模型开发者构建智能体的实用工具。


前言

Agent Skills最近非常火!它最初只是 Claude 中的一个功能模块,但在最近两个月里,随着越来越多开发者体验到其强大与便捷,Codex、Cursor、OpenCode 等主流 AI 编程工具也相继加入了对 Agent Skills 的支持。就连我日常使用最频繁的字节跳动旗下工具 Trae,也于近期集成了这一能力。

2025 年 12 月 18 日,Anthropic 正式将 Agent Skills 发布为开放标准,标志着它正与 MCP 一样,朝着通用化、跨平台化的规范方向发展。如果大家还不熟悉 Agent Skills,也无需担心——本文将带大家系统梳理其技术原理,解析关键设计模式,并通过实战代码为大家完整解读Agent Skills的核心内容。

这里同样宣传一下笔者正在编写的合集:《大模型训练指南》,该合集预计会有50期内容,将系统拆解从数据处理、模型训练到强化学习与智能体开发的全流程,并带大家从零实现模型,帮助大家掌握大模型训练的全技能,真正掌握塑造智能的能力!

PS:鉴于后台私信越来越多,我建了一些大模型交流群,大家在日常学习生活工作中遇到的大模型知识和问题都可以在群中分享出来大家一起解决!如果大家想交流大模型知识,可以关注我并回复加群。

一、 Agent Skills 介绍

如果用一句话概括,Agent Skills 就像一份“带目录的说明书”。更专业地说,它是一种渐进式披露的提示词管理机制

该规范将提示词分为三个层次:

  • 元数据(Metadata)
  • 指令(Instruction)
  • 资源(Resource)

其中,只有元数据层默认被加载到大模型的上下文中,其余两层均为按需加载。大家可以这样理解:

  • 元数据

    如同书的目录,告诉模型有哪些可用的能力;

  • 指令

    如同书的正文,详细说明在某一能力下如何执行某项任务;

  • 资源

    如同书的附录,提供对某一能力的必要的补充材料(如代码示例、数据模板等)。

智能体在执行时,首先仅载入“目录”(元数据),随后根据实际需求,再决定是否查阅该目录下的“正文”(指令)与“附录”(资源)。

与传统的完整 Prompt 或 MCP 方式相比,Agent Skills 最显著的优势在于大幅降低了 Token 消耗与提示词的复杂度,使智能体的能力扩展更加轻量与高效。

当然,仅理论描述仍显抽象。接下来笔者将通过一个 Claude Skills 的实际案例,带大家直观理解 Agent Skills 是如何运作的。

二、Claude Code使用Skills基本流程

既然 Skills 规范由 Anthropic 公司提出,笔者就以 Claude Code 为例,首先介绍其基本用法。

2.1 claude code安装教程

1. 环境准备:首先大家需要安装

Node.js 18或更新的版本环境。还需要安装Git,流程笔者就不再赘述,大家可以参考笔者以前文章 不写一行代码! VsCode+Cline+高德地图MCP Server 帮你搞定和女友的出行规划(附原理解析)

2. 安装 Claude Code:在命令行中执行以下命令进行全局安装claude:npm install -g @anthropic-ai/claude-code命令, 安装完成后,可通过claude --version验证是否安装成功。

3. 配置大模型(国内开发者):由于 Claude 模型访问限制,国内开发者通常可将其它模型接入 Claude Code。此处以****智谱大模型为例:在C:\Users{你的用户名}.claude目录下(若无则新建),创建settings.json文件,并填入以下配置:

{ "env": { "ANTHROPIC_AUTH_TOKEN": "你注册的智谱api key(大家可以买套餐注册)", "ANTHROPIC_BASE_URL": "https://open.bigmodel.cn/api/anthropic", "API_TIMEOUT_MS": "3000000", "CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": 1 } }

4. 完成基础配置:在C:\Users{你的用户名}目录下,创建.claude.json文件并写入以下内容,配置完成后,请重新启动命令行窗口以使环境变量生效:

{ "hasCompletedOnboarding": true }

5. 启动与使用:新建一个项目目录,通过命令行进入该目录后,执行claude命令即可启动。首次在某个目录使用时,系统可能会询问是否信任该目录,选择YES即可。

2.2 Claude Code中使用skills

下面笔者将通过一个实战案例(思路参考自 @技术爬爬虾)来演示如何创建并使用一个 Skill。

1. Skill 的目录结构:在 Claude Code 项目中,Skills 存放在项目目录/.claude/skills/路径下。每个 Skill 都是一个独立的文件夹,其中必须包含一个名为SKILL.md的定义文件(注意大写)。此文件包含了该 Skill 的元数据层指令层。此外,文件夹内还可存放其他辅助文件,它们构成了 Skill 的资源层。

2. 创建 Skill 文件夹与文件:在项目根目录(例如笔者这里是skill-project)下,依次创建.claude\skills\字幕转markdown文件夹,并在其中创建SKILL.md文件(注意名称必须为SKILL.md,大小写都要一致)。

3. 编写 Skill 元数据:SKILL.md文件中首先写入元数据,元数据用于描述 Skill 的基本信息,需用---包裹。它会被优先加载到大模型上下文中,相当于“能力目录”。

--- name: srt字幕转markdown笔记 description: 把srt字幕文件转换为markdown笔记 ---

4. 编写 Skill 指令:SKILL.md文件中元数据后面紧接着编写指令部分,指令部分定义了 Skill 的具体操作逻辑和详细要求,采用 Markdown 格式编写。

你是专业的字幕文本处理助手,任务是将sRT 字幕完整转换为 Markdown 笔记,并添加标点、段落格式和必要的截图占位符。要求 如下: 1.**内容完整保留**:禁止任何删减、总结或省略,必须逐字保留 SRT 所有文字。 2.**语言规则**:使用中文书写,保留必要的英文专有名词。 3.**段落结构**: -仅使用一个层级的段落 -每个段落标题使用## 标题 -第一段为引言,不使用标题 -只需要划分2-3个段落 4. **标点与排版**: -为每句话添加合适标点 -适当划分自然段 5.**截图占位符规则(按需插入)** -当某句符合以下任一条件时,在句末添加截图标记: -代码讲解 -UI 交互操作 -包含"这么、这里、这儿"等视觉指代词 -提及网址/链接/地址(包括 GitHub、API endpoint等) -任何借助视觉材料更易理解的内容 -形式必须严格为:

Screenshot-[hh:mm:ss]

-仅在真正有助理解时插入,不可滥用 比如:

原始SRT
00:02:08,600–>00:02:09,800
安装这个工具

6. **输出文件格式**: - 生成内容保存为单个Markdown 文件,命名为:

项目根目录/xxx.md

5. 查看与测试 Skill:在项目目录下打开命令行并输入/skills,即可看到已定义好的 Skill。

6. 运行 Skill: 将需要转换的.srt字幕文件拖入 Claude Code 命令行。此时,大模型仅加载了SKILL.md中的元数据(“目录”),识别出这是一个字幕文件,并询问是否使用对应的 Skill。当大家确认使用后,Claude Code 才会将SKILL.md中详细的指令部分(“正文”)加载到上下文中,并开始执行转换任务。这就是“渐进式披露提示词”机制的核心体现:按需加载,显著节省 Token,这样大家是不是就理解了Skills设计的核心概念啦!

2.3 Claude Code skills进阶用法

一个 Skill 的强大之处在于可以集成各种资源文件(脚本、文档、图片等),以实现更复杂的自动化工作流。下面笔者就继续优化字幕转markdown skills,让其功能变得更强大!

1.资源层的组织:可以在 Skill 文件夹内创建子目录(如scripts,references,assets)来分类存放资源文件,使结构更清晰。资源文件可以是 可执行脚本、补充说明文档,也可以是图片等其它资源,标准做法是将可执行Python文件放到scripts子文件夹中,把文档放到references这个子文件夹里面,把图片等其它资源放到assets子文件夹里面。

2.添加可执行脚本:字幕转markdown这个 Skill 的目录下,创建一个scripts子文件夹,并放入一个 Python 脚本screenshot.py。该脚本的功能是:根据 Markdown 中生成的截图标记(如Screenshot-[00:03:12]),调用ffmpeg从对应的视频文件中截取相应时间点的画面,并将标记替换为实际的图片链接。

import argparse import json import logging import os import re import subprocess from pathlib import Path from typing import Iterable, List, Optional, Tuple def write_note(filename: str, markdown: str) -> Path: path = Path(f"output/{filename}.md") path.parent.mkdir(parents=True, exist_ok=True) path.write_text(markdown, encoding="utf-8") logging.info("Saved note backup: %s", path) return path # ---------- 截图 ---------- def extract_screenshot_markers(markdown: str) -> List[Tuple[str, int]]: """ 找到 Screenshot-00:03:12 或 Screenshot-[00:03:12] 形式的标记。 """ pattern = r"(?:\*?)Screenshot-(?:\[(\d{2}):(\d{2}):(\d{2})\]|(\d{2}):(\d{2}):(\d{2}))" results: List[Tuple[str, int]] = [] for match in re.finditer(pattern, markdown): hh = match.group(1) or match.group(4) mm = match.group(2) or match.group(5) ss = match.group(3) or match.group(6) total_seconds = int(mm) * 60 + int(ss) results.append((match.group(0), total_seconds)) return results def generate_screenshot(video_path: Path, output_dir: Path, timestamp: int) -> Path: """ 调用 ffmpeg 截图,返回图片路径。 """ output_dir.mkdir(parents=True, exist_ok=True) mm = timestamp // 60 ss = timestamp % 60 filename = f"screenshot_{mm:02d}_{ss:02d}.jpg" output_path = output_dir / filename cmd = [ "ffmpeg", "-ss", str(timestamp), "-i", str(video_path), "-frames:v", "1", "-q:v", "2", str(output_path), "-y", ] logging.info("生成截图:time=%s, file=%s", timestamp, output_path) subprocess.run(cmd, check=False, capture_output=True) return output_path def replace_screenshots( markdown: str, video_path: Optional[Path], output_dir: Path, image_base_url: str, ) -> str: """ 将 Screenshot 标记替换为实际图片链接;没有视频时保持原样。 返回修改后的 markdown。 """ if not video_path: logging.info("未提供视频文件,保留 Screenshot 标记不变。") return markdown matches = extract_screenshot_markers(markdown) for idx, (marker, ts) in enumerate(matches): try: img_path = generate_screenshot(video_path, output_dir, ts) url = f"{image_base_url.rstrip('/')}/{img_path.name}" markdown = markdown.replace(marker, f"![]({url})", 1) except Exception as exc: # pylint: disable=broad-except logging.warning("生成截图失败(%s):%s", marker, exc) return markdown def main(): logging.basicConfig( level=logging.INFO, format="%(asctime)s [%(levelname)s] %(message)s", ) parser = argparse.ArgumentParser(description="将 SRT/视频转换为 Markdown 笔记") args = parser.parse_args() logging.info("环境变量加载完成。") #从当前工作目录自动查找对应的 SRT 和 MP4 文件 cwd = Path.cwd() md_path: Path video_path: Path # 附件文件夹 image_base_url = "assets" screenshots_path = Path(f"output/{image_base_url}") md_candidates = sorted(cwd.glob("*.md")) if not md_candidates: raise RuntimeError("当前目录没有找到任何 .md 文件,请把字幕文件夹导出并且放到根目录下。") if len(md_candidates) > 1: logging.warning("当前目录中发现多个 .srt,将使用第一个:%s", md_candidates[0]) md_path = md_candidates[0] mp4_candidates = sorted(cwd.glob("*.mp4")) if mp4_candidates: preferred: Optional[Path] = None video_path = preferred or mp4_candidates[0] if len(mp4_candidates) > 1 and preferred is None: logging.warning("当前目录中发现多个 .mp4,将使用第一个:%s", video_path) else: logging.info("当前目录未发现 .mp4,将保留 Markdown 中的 Screenshot 标记不变。") video_path = None # 读取 markdown 文件内容 markdown = md_path.read_text(encoding="utf-8") logging.info("读取 Markdown 文件:%s", md_path) processed_md = replace_screenshots(markdown, video_path=video_path, output_dir=screenshots_path, image_base_url=image_base_url) logging.info("截图处理完成") # 备份替换后的 Markdown 内容 output = write_note("note_processed", processed_md) info = { "output": str(output), "screenshots_dir": str(screenshots_path), "video_used_for_screenshot": str(video_path) } print(json.dumps(info, ensure_ascii=False, indent=2)) if __name__ == "__main__": main()

3. 更新指令以调用资源:SKILL.md的指令部分末尾,添加调用该脚本的步骤:

7.**后续处理**: markdown生成完毕以后,调用 python scripts/screenshot.py 对视频进行截图,执行python脚本时不需要传递任何参数
  1. 运行完整的 Skill 工作流:

  2. 将待处理的视频文件.mp4也放入项目根目录。

  3. 在 Claude Code 中,再次拖入.srt字幕文件。

  4. Claude Code 将首先执行“字幕转Markdown”任务,生成一份带有Screenshot-[hh:mm:ss]标记的笔记。

  5. 接着,它会自动执行python scripts/screenshot.py命令。关键点在于:脚本代码本身不会作为提示词上下文传递给大模型,Claude Code 只是作为执行环境去运行它。这再次体现了 Skills 机制在降低上下文消耗上的优势。

  6. 脚本运行后,最终生成一份包含实际截图链接的、图文并茂的 Markdown 笔记。

三、 Skills和MCP的区别

许多读者询问笔者:同样出自 Anthropic,Skills 与 MCP(Model Context Protocol)究竟有何不同?
实际上,Skills 与 MCP 是两个目标不同、互为补充的规范。它们虽有部分功能重叠,但设计侧重点和使用场景有显著差异:

  • Skills

    核心在于提示词的管理与组织,通过“渐进式披露”机制,以轻量、结构化方式扩展模型能力。

  • MCP

    核心在于工具与服务的标准化接入,旨在为模型提供统一、安全的外部工具调用能力。

简单类比:

  • Skills 如同“带目录的说明书”

    ——逐步展开,按需提供详细操作指引。

  • MCP 如同“标准化工具箱”

    ——提供一系列即插即用的工具,模型可直接调用。

若大家对 MCP 的具体实现与原理感兴趣,可进一步阅读笔者之前的文章:《理论+代码一文带你深入浅出MCP:人工智能大模型与外部世界交互的革命性突破》。

为更直观对比,以下从几个维度总结二者的主要区别:

维度Agent SkillsMCP
侧重点提示词的结构化组织与渐进式加载外部工具与服务的标准化调用
类比带目录的说明书标准化工具箱
Token 消耗低(仅按需加载指令与资源)较高(需携带工具描述与调用逻辑)
核心主体Markdown 文件(SKILL.md)软件包/服务(含协议与实现)
编写与部署难度低(文件级配置,易于本地管理)较高(需遵循协议,常涉及服务端开发)

总的来说,Skills 更适合轻量化、提示词驱动的能力扩展,而MCP 更适合复杂、需频繁调用外部工具或服务的场景。在实际项目中,二者亦可结合使用,例如通过 MCP 提供工具,再通过 Skills 组织调用这些工具的提示词流程,从而实现更高效、可维护的智能体架构。

四、总结

本篇分享了Agent Skills核心概念。它通过元数据、指令和资源三层结构实现渐进式披露,显著降低Token消耗。以Claude Code为例,详细演示了Skills的创建、使用及进阶集成方法,帮助大家快速掌握Skills的核心概念和开发技巧,助力大家构建更强大的智能体!

AI大模型从0到精通全套学习大礼包

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

只要你是真心想学AI大模型,我这份资料就可以无偿共享给你学习。大模型行业确实也需要更多的有志之士加入进来,我也真心希望帮助大家学好这门技术,如果日后有什么学习上的问题,欢迎找我交流,有技术上面的问题,我是很愿意去帮助大家的!

如果你也想通过学大模型技术去帮助就业和转行,可以扫描下方链接👇👇
大模型重磅福利:入门进阶全套104G学习资源包免费分享!

01.从入门到精通的全套视频教程

包含提示词工程、RAG、Agent等技术点

02.AI大模型学习路线图(还有视频解说)

全过程AI大模型学习路线


03.学习电子书籍和技术文档

市面上的大模型书籍确实太多了,这些是我精选出来的


04.大模型面试题目详解

05.这些资料真的有用吗?

这份资料由我和鲁为民博士共同整理,鲁为民博士先后获得了北京清华大学学士和美国加州理工学院博士学位,在包括IEEE Transactions等学术期刊和诸多国际会议上发表了超过50篇学术论文、取得了多项美国和中国发明专利,同时还斩获了吴文俊人工智能科学技术奖。目前我正在和鲁博士共同进行人工智能的研究。

所有的视频由智泊AI老师录制,且资料与智泊AI共享,相互补充。这份学习大礼包应该算是现在最全面的大模型学习资料了。

资料内容涵盖了从入门到进阶的各类视频教程和实战项目,无论你是小白还是有些技术基础的,这份资料都绝对能帮助你提升薪资待遇,转行大模型岗位。


智泊AI始终秉持着“让每个人平等享受到优质教育资源”的育人理念‌,通过动态追踪大模型开发、数据标注伦理等前沿技术趋势‌,构建起"前沿课程+智能实训+精准就业"的高效培养体系。

课堂上不光教理论,还带着学员做了十多个真实项目。学员要亲自上手搞数据清洗、模型调优这些硬核操作,把课本知识变成真本事‌!


如果说你是以下人群中的其中一类,都可以来智泊AI学习人工智能,找到高薪工作,一次小小的“投资”换来的是终身受益!

应届毕业生‌:无工作经验但想要系统学习AI大模型技术,期待通过实战项目掌握核心技术。

零基础转型‌:非技术背景但关注AI应用场景,计划通过低代码工具实现“AI+行业”跨界‌。

业务赋能 ‌突破瓶颈:传统开发者(Java/前端等)学习Transformer架构与LangChain框架,向AI全栈工程师转型‌。

👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/5 17:45:58

MySQL 被干成老二了?

MySQL 和 PostgreSQL 的讨论是这几年的热门话题,任何无脑抨击其中一方或者吹捧另外一方的行为都是不可取的。 这俩必须是好兄弟,技术圈有一句话挺精髓的:“以前 PostgreSQL 靠 MySQL 刷存在感,现在 MySQL 靠 PostgreSQL 刷存在感…

作者头像 李华
网站建设 2026/2/6 17:04:24

性能测试核心概念与要点梳理

性能测试核心概念与要点梳理 一、什么是性能测试? 1. 核心概念 性能测试是为了发现系统性能问题或获取系统性能相关指标而进行的测试。 场景:在真实环境、特定负载条件下。 方法:通过工具模拟实际软件系统的运行及操作,并监控…

作者头像 李华
网站建设 2026/2/5 8:19:00

从山东菏泽到硅谷:测试员的全球远程协作晋升术

地缘壁垒的消融与机遇重构 "当Jenkins流水线在菏泽凌晨三点自动触发,我的测试报告已同步出现在硅谷晨会大屏——距离不再是能力的量尺。" —— 李明,前菏泽本地化测试员,现硅谷Fintech公司QA Lead 2020-2025年全球远程测试岗位增长…

作者头像 李华
网站建设 2026/2/8 16:54:30

颠覆认知的社保新规:开发者不可不知的权益壁垒

2025年9月1日实施的《最高人民法院关于审理劳动争议案件适用法律问题的解释(二)》第十九条明确规定:任何"自愿放弃社保"的协议均属无效,用人单位未依法缴纳社保时,劳动者有权解除劳动合同并获得经济补偿。 这…

作者头像 李华
网站建设 2026/2/7 4:49:39

渗透测试怎么学?从零基础入门到精通,看完这一篇就够了

作为一个新手,我怎么安排自己学习渗透测试?感觉渗透测试好难啊,从哪里学起?渗透测试知识点那么多,我到底应该先学习什么?我是转行从业者(有经验/没有经验),都要从头学起吗…

作者头像 李华
网站建设 2026/2/5 0:01:17

OpCore Simplify:实现技术民主化的OpenCore智能配置引擎

OpCore Simplify:实现技术民主化的OpenCore智能配置引擎 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 在x86架构计算机上安装macOS&…

作者头像 李华