AI学习吧
📍 源码七号站 人工智能 Agent Skills 实战手册:从原理拆解到多平台搭建,让 AI 智能体真正学会一项专业技能

Agent Skills 实战手册:从原理拆解到多平台搭建,让 AI 智能体真正学会一项专业技能

摘要:Anthropic 2025年底推出的Agent Skills机制,将SOP、参考文档和可执行脚本打包成“技能文件夹”,智能体按需加载,解决了长提示词撑爆上下文、注意力涣散、工具调用混乱三大痛点。本文拆解原理结构、六条铁律、端到端实战,一份技能在Claude Code、Trae、CodeBuddy等平台不改一行代码都能跑,相比MCP和Function Calling更值得投入。
字号 100%
行距 2.05
当前可见 20% 的内容
本文由 莫潇羽@源码七号站(www.fuyuan7.com)撰写,转载请注明出处。

快速摘要

Agent Skills 是 Anthropic 在 2025 年底推向主流视野的智能体能力扩展机制。一句话说清楚:它把一个领域的标准作业流程(SOP)、参考资料、可执行脚本打包成一个"技能文件夹",智能体在真正用得到的时候才会逐层加载。 它解决的是过去我们写超长提示词带来的三个老毛病——上下文窗口被撑爆、注意力涣散、工具调用混乱。本文按"原理拆解—结构剖析—编写规范—六条铁律—端到端实战—多平台适配—踩坑提示"的顺序一次说透,核心实战部分会落到一个真实可跑的"会议总结助手"案例:用户丢进去一段开会的对话记录,Skill 自动产出标准化纪要、按需引用公司财务手册做合规提醒,再调用脚本把纪要同步到云端。同一份 Skill 不改一行代码,在 Claude Code、Trae、CodeBuddy、Codex、OpenCode 上都能跑起来,这也是 Skills 比 MCP、比 Function Calling 更值得投入时间的根本原因。如果你最近在折腾智能体却始终卡在"能跑但不稳"那一步,这篇就是为你写的。想看完整拆解,往下翻。


一、提示词工程到了天花板,Skills 才是下一站

我最初做智能体的时候踩过一个特别经典的坑。给一个对话助手写系统提示词,洋洋洒洒堆了快两千字,角色、口吻、知识范围、不允许做什么、要遵循的格式、调用工具的判断条件,通通塞进去。本地跑几个简单测试,效果看着不错。真把它放到一个稍微复杂点的业务流里——客户问了一个跨场景的问题,要先查订单,再判断状态,再决定推什么话术——它当场就懵了,要么忽略掉某个关键判断,要么把不该调的工具叫了一遍,要么输出格式跑偏。

折腾几轮我才意识到一个事:这不是提示词写得不够好,而是单靠一段长文本去控制多维度、非线性的复杂工程逻辑,本身就是个错配。

1.1 长提示词的三个固有缺陷

把这个错配拆开看,有三个非常具体的问题。

第一个是注意力稀释。 大模型底层是 Transformer 的注意力机制,这一点接触过原理的朋友都熟悉。注意力是一种有限资源,上下文越长,模型对每一段信息分配到的"心思"就越少。你可能感觉它读完了你那两千字的提示词,但真到推理的时候,中间那部分的细节经常被吃掉。这就是大家在长对话里偶尔看到模型突然"忘了之前的设定"的根因。

第二个是步骤失控。 你试图用一段线性的文字去描述一套有分支、有循环、有条件判断的流程,结果就是模型把它当成"参考建议"而不是"严格步骤"。它会自作主张地跳过某一步,或者把第三步先做了再回头补第一步。任务越复杂,这种失控就越明显。

第三个是工具调用混乱。 Function Calling 这个机制本身没问题,但是当你的智能体可以调用的工具达到十几二十个,每个工具的命名又占用大量 token,模型很容易选错工具,或者把同一个工具反复叫好几次。这里头还有个更隐蔽的成本问题——就算有些工具这次根本用不到,只要它们的定义被注入到上下文里,就要持续消耗 token。 这一笔账很多人没算过。

1.2 Skills 是怎么对症下药的

Anthropic 在 2025 年 10 月那篇 Equipping Agents for the Real World with Agent Skills 工程博客里提出的解法,本质就是把"线性的、笼统的提示词"拆成"结构化的、可按需加载的能力包"。

具体的对症点有这么几条。把 SOP 单独写成一份 Markdown 说明书,流程要素清清楚楚,而不是混在闲聊的提示词里。把外部知识下沉到 reference 目录,只有任务真正用到的时候才读进上下文,这样既保留专业深度,又不浪费 token。把确定性的逻辑写成可执行脚本(Python、Bash 等),让脚本去跑那些"每次都要重复做、必须可靠"的活,而不是每次都让大模型重新生成代码。

这三件事合起来,就是 Skills 这个机制的核心价值——它让智能体既能像专家一样"懂规矩",又能像工程师一样"能复用",还能在不污染上下文的前提下"按需扩展"。 把这套机制理解透了,你后面写出来的智能体应用,稳定性和成本都会比纯提示词方案上一个台阶,这点我自己在源码七号站做几个内部项目时反复验证过。

再多说一句,提示词工程并没有过时,它只是有了边界。面对简短的、单轮的、灵活的任务,一段写得好的提示词依然是最优解;但面对那些需要稳定输出、需要复用、需要团队多人共维的智能体应用,Skills 把"工程化"这件事真正落了地。理解这层差异,才能避免一个常见误区:看到新工具就想着替代老工具。在莫潇羽的实践里,提示词、Function Calling、MCP、Skills 经常在同一个智能体里同时存在,各自负责最适合自己的那一部分工作。

二、Agent Skills 究竟是什么:一份给智能体看的"专业说明书"

理论铺垫到这,该把 Skills 的定义讲清楚了。我尽量不用官方那种学术化的说法,换成接地气的解释。

2.1 一句话定义

一个 Skill 就是一个文件夹,文件夹里放着一份给智能体看的说明书(SKILL.md)、一些可执行的脚本(scripts/),以及一些供它查阅的参考资料(reference/)。 智能体启动时只会扫到文件夹的"门牌号",真要干活的时候才会推门进来翻具体内容。

打个生活化的比方。想象你家厨房里有一台微波炉,微波炉面板上有"一键解冻"这种快捷指令——这就像传统的 Function Calling,功能单一、按一下就响应。厨房里还放着各种刀具——这是 MCP,通用性强,但你得自己拿、自己用、自己指挥它怎么切。Skills 则像贴在冰箱上的菜谱:它把一道菜从备料、火候、刀工到摆盘的每一步都写清楚,你只要按谱子走,新手也能做出大致不离谱的成品。

这个类比里有几个关键点要再强调一下。Function Calling 是"按钮",MCP 是"工具",Skills 是"流程"。三者不是替代关系,而是配合关系。 一个成熟的智能体应用里,菜谱(Skill)告诉智能体先干什么后干什么,菜谱里某一步说"切丝"的时候,智能体会去拿厨房的刀(MCP)。这个组合拳才是工业级智能体的常态。

2.2 Skills 与 MCP 的边界划分

这是个高频问题,我专门拆开讲。

维度

MCP

Agent Skills

核心目标

让模型能调用外部工具、访问外部数据

让模型按标准流程做事

配置形式

基于 JSON 协议,需要部署服务器

基于文件夹,纯文本就能写

共享方式

复制 JSON 配置、修改连接信息

打包文件夹、丢给别人用

上下文占用

工具定义常驻在系统提示中

渐进式加载,默认只占元数据

是否需要外网

通常需要,因为要连服务

不必,Skill 内容全部本地化

跨平台移植

受协议实现影响

同一份 Skill 跨多个平台运行

理解了这张表,你就明白为什么 Skills 推出后社区里有"Skills 比 MCP 更值得投入"的声音了。不是 MCP 不好,而是 Skills 解决了一个 MCP 没解决好的问题——专业流程的封装与复用。莫潇羽@源码七号站这边的实践经验是:有内部数据要访问就上 MCP,有标准流程要复用就上 Skills,二者经常同时存在于一个智能体里。

举一个 Skills 和 MCP 联手干活的真实例子。我们做过一个"销售订单异常处理助手",流程是这样的:Skill 里写明 SOP——先核对订单状态、再检查物流信息、最后判断要不要触发售后流程。但订单数据、物流接口、售后系统都在公司内网,智能体没法直接访问。这时候 MCP 就上场了:订单数据库通过 MCP 暴露查询接口,物流系统通过 MCP 提供查询能力,售后工单系统通过 MCP 接受创建请求。智能体执行 SOP 的每一步时,通过 MCP 拿到所需的数据,再按 Skill 的规则做判断。这种 Skills + MCP 的组合形态,在企业级智能体里非常常见,也是莫潇羽强烈推荐的工程范式。两套机制各司其职,谁也不抢谁的活。

2.3 Skills 的三大组成

每一个 Skill 在物理结构上是这样的:

my-skill/
├── SKILL.md          ← 必需,说明书 + YAML 元数据
├── scripts/          ← 可选,可执行的脚本
│   └── upload.py
├── reference/        ← 可选,知识库 / 参考资料
│   └── company-finance-manual.md
├── templates/        ← 可选,模板文件
│   └── report-template.md
└── examples/         ← 可选,示例输入输出
    └── sample.md

SKILL.md 是唯一必须存在的文件,其余目录都按需选用。这里面有几个细节要注意。

文件夹的名字会成为 Skill 的命名标识,智能体在加载列表里看到的就是这个名字。scripts/ 里的文件优先放可执行代码,这部分内容默认不会进上下文,只有智能体决定要跑它的时候才会执行,这一点跟把代码塞进 SKILL.md 是本质区别。reference/ 里放的是"模型需要查阅的资料",注意,不是塞给用户看的,是塞给模型在干活时查阅的,所以语气和组织方式要往"工具书"的方向写。

graph TD
    A[智能体收到任务] --> B{扫描可用 Skills}
    B -->|读取 YAML 元数据| C[L1 元数据层]
    C --> D{当前任务匹配吗?}
    D -->|不匹配| E[跳过该 Skill]
    D -->|匹配| F[L2 主体说明加载]
    F --> G{需要参考资料吗?}
    G -->|不需要| H[直接执行]
    G -->|需要| I[L3 资源按需加载]
    I --> J{需要跑脚本吗?}
    J -->|否| K[输出结果]
    J -->|是| L[沙箱执行脚本]
    L --> K
    H --> K

这张流程图就是 Skills 工作机制的全貌,后面几章我们会把每一层都拆开来讲。

三、拆解一个标准 Skill 的内部结构

光看目录树不够直观,我们直接看 SKILL.md 的真实模样,然后逐字段说清楚每一处的写法。

3.1 YAML Frontmatter 的写法规范

每一个 SKILL.md 的开头都有一段 YAML 元数据,被两组三个减号包起来,这段就是 L1 加载层的全部内容。

---
name: meeting-summarizer
description: >-
  This skill should be used when the user provides raw meeting
  transcripts and asks for structured meeting minutes, action
  items, or wants to sync the summary to a server. Also triggers
  on words like "总结会议"、"会议纪要"、"同步到云端".
---

# 会议总结助手

## 总结规则
...

这里有几条规范是经过踩坑得到的硬经验,莫潇羽建议你照抄。

name 字段只能用小写字母、数字和短横线,不能有空格,长度不超过 64 个字符。命名要有动名词感,比如 meeting-summarizerpdf-extractor,直接告诉智能体这个技能"是做什么的"。

description 字段是整个 Skill 里最重要的一行字,这话不夸张。因为智能体决定"要不要加载这个 Skill"完全是基于这个字段的描述。 Anthropic 给出的字符上限是 200 个字符以内,但写得越精准越好。三个原则:用第三人称(写"This skill should be used when..."而不是"Use this skill when...")、写清楚"做什么"和"什么时候用"、包含关键的触发词。

举几个反面例子让你对照感受一下。

# 反面案例 1:太笼统
descrip
🔒
该内容仅对更高等级用户组开放,请升级您的账户等级以查看完整内容
部分文章时效属性较强,请谨慎解锁发布日期比较早的文章
您当前:游客 · 可见 20% 内容 · 升级至 注册用户 可见 30%
👀
游客
可见 20%
✓ 当前
注册用户
注册用户
可见 30%
社区精英
社区精英
可见 100%
仅解锁本文,永久有效。如需PDF珍藏版,请联系站长获取。 当前单篇价格 ¥9.9
✏️ 发表评论

请先登录后发表评论

前往登录
📊 站点统计
今日发布3 篇
文章总数1292 篇
昨日发布2 篇
本月发布3 篇
建站时间408 天
🔍 搜索
📅 日历
« 2026 » « 09 »
 123456
78910111213
14151617181920
21222324252627
282930    
站长微语

联系站长

微信:165255185
AIGC 技术社区
致力于解码 AI前沿技术 与经验分享
纯粹的技术交流社区

💡 欢迎您的建议与反馈,让社区变得更好

快速通道
联系站长
站长微信二维码
AI交流群
AI交流群二维码
仍在路上

那些寒夜里追赶过的方向

那些冷眼下没放弃的理想

一篇一篇写到现在

仍在路上

"不羁放纵爱自由"

—— 致敬 Beyond
持续创作中 莫潇羽 · 源码七号站