当 AI agent 从“偶尔帮我做一次”走向“反复按同一套方法完成工作”,只靠每次重新写 Prompt 很快就会变得笨重:步骤要重复说明,输出格式要重新约定,参考资料和脚本也散落在不同地方。Agent Skills 试图解决的,正是这类可复用工作流的组织问题。
Skill 把某类任务的方法、约束和配套资源收拢成一个可以按需加载的能力包。它不会凭空给 agent 增加文件权限或网络接口,却能让 agent 在已有工具之上,知道什么时候该做什么、按什么顺序做,以及结果应当如何交付。
从一次指令到一套方法
Prompt 很适合表达眼前这一次任务,例如“把这篇英文文章整理成中文笔记”。但当同类任务不断出现,真正影响结果的往往不止这一句话:
- 应该先识别主题,还是先逐段翻译;
- 哪些信息需要保留原文证据;
- 输出应当包含摘要、术语、例句,还是延伸问题;
- 遇到 PDF、网页或扫描件时分别使用什么工具;
- 哪些步骤需要人工确认,哪些可以自动完成。
这些内容更接近一份长期维护的操作方法。Skill 的价值就在于把它们从某次对话里提取出来,沉淀为 agent 能够再次识别和调用的工作流。
可以先用一句不那么严肃的类比建立直觉:agent 像一位通用能力很强的新同事,Prompt 是这次交代的任务,Skill 则更像经过维护的 SOP、模板和资料包。它并不替代人的判断,但能减少每次都从空白处重新解释的消耗。
一个 Skill 长什么样
按照 Agent Skills 规范,一个 Skill 至少是一个包含 SKILL.md 的目录;脚本、参考资料和静态资源都是可选内容。最常见的结构可以写成:
article-reading/
├── SKILL.md
├── scripts/
├── references/
└── assets/
其中,SKILL.md 是入口。它由 YAML frontmatter 和 Markdown 正文组成,必需字段是 name 与 description:前者标识 Skill,后者同时说明“它能做什么”和“什么时候应该使用”。正文则负责描述步骤、输出要求、边界条件和常见例外。
---
name: article-reading
description: Read long-form articles and turn them into structured Chinese notes. Use when the user asks for article digestion, source-aware summaries, or vocabulary extraction.
---
# Article Reading
1. Identify the article's central question.
2. Extract the argument and supporting evidence.
3. Preserve source anchors for important claims.
4. Produce a structured Chinese note.
这个例子是依据公开规范整理的最小示意,并非官方模板的逐字复制。真实 Skill 可以只保留一份短小的 SKILL.md,也可以按需要增加三类资源:
scripts/:把稳定、机械或需要确定性结果的步骤交给程序;references/:存放只有特定任务才需要读取的详细规则、术语和领域资料;assets/:保存模板、示例、图片或其他交付资源。
Skill 的完整程度不取决于文件数量,而取决于这些内容是否真的帮助 agent 稳定完成任务。一句话能说明白的规则,没有必要拆成一座目录迷宫。
Skill 如何被发现和加载
如果所有 Skill 的正文、参考资料和脚本说明都在任务开始时塞进上下文,Skill 越多,留给真实任务的空间反而越少。因此,Agent Skills 采用渐进式加载,也就是 progressive disclosure。
OpenAI 的 Codex Skills 文档说明,Codex 会先看到 Skill 的名称、描述和路径;当任务与某个 Skill 匹配时,再读取完整的 SKILL.md。Agent Skills 规范还把后续资源放在第三层:只有任务确实需要时,才继续读取 references/、assets/,或执行 scripts/ 中的程序。
flowchart LR
A["用户任务"] --> B["扫描 Skill 元数据"]
B --> C{"名称与描述匹配?"}
C -- "否" --> D["继续处理任务"]
C -- "是" --> E["读取 SKILL.md"]
E --> F{"需要更多资源?"}
F -- "否" --> G["按工作流执行"]
F -- "是" --> H["按需读取 references / assets\n或运行 scripts"]
H --> G
这套机制很像查阅一本工具书:先看目录判断是否相关,再打开对应章节;只有碰到具体问题,才继续翻到附录。它使 Skill 可以携带更深的知识,同时避免所有细节长期占据上下文,也解释了为什么 description 不能只是一句随意的简介。它既面向读者,也承担触发线索的作用:描述过于宽泛,agent 很难判断何时调用;描述只说“处理文档”,也不如明确写出 PDF、表单、文本提取等具体任务来得可靠。
Prompt、Skill、Tool 与 MCP 的边界
Skill 经常与 Prompt、Tool、MCP 一起出现,混淆通常来自它们都在影响 agent 的行为,却处在不同层次。
| 概念 | 回答的问题 | 典型载体 | 主要作用 |
|---|---|---|---|
| Agent | 谁在理解目标并组织任务 | 运行中的智能体系统 | 决策、协调与执行 |
| Prompt | 这一次要做什么 | 当前输入与上下文 | 表达眼前任务和要求 |
| Skill | 这类事通常怎样做 | SKILL.md 与配套目录 | 沉淀可复用的方法、约束和资源 |
| Tool | 具体动作怎样完成 | API、函数、命令或连接器 | 搜索、读写、计算、运行命令等 |
| MCP | 外部能力怎样标准化接入 | MCP server 与协议接口 | 向 agent 暴露工具、资源和上下文 |
如果把任务理解成一次实验,Skill 更像实验方案,Tool 是仪器,MCP 是把外部仪器和数据源接进工作台的接口。Prompt 则说明这一次要研究什么,以及有哪些临时要求。
因此,Skill 管方法,Tool 管动作,MCP 管接入。Skill 可以指导 agent 调用工具,也可以附带脚本,但它本身并不等于某个工具,更不应被理解成新的权限来源。
这与上一篇讨论的 Codex 操作 Obsidian 的能力分层是同一条逻辑:MCP 让 Codex 能够进入知识库,Skills 则把 Markdown、Canvas 或长期整理流程中的经验交给它。权限和能力已经接入之后,方法层才开始决定结果是否稳定、是否符合长期维护习惯。
Skills 保存的是可复用方法,却不负责让 Codex 跨任务记住个人偏好与长期背景。如果还需要分清方法、记忆和强制规则之间的关系,可以继续阅读:Codex Memories 是什么:记忆、规则与实时上下文如何分工。
用文章精读看一遍完整协作
假设任务是:“阅读一篇英文技术文章,整理成可以长期复习的中文笔记,并提取重要术语。”
这时各层可以这样配合:
- Prompt 说明本次文章、读者基础和特别关注的问题;
- Skill 规定先识别核心问题,再梳理论证与证据,最后整理术语和延伸问题;
- Tool 负责读取网页或 PDF、识别图表、查询术语和写入文件;
- MCP 把网页、知识库或其他外部资源以统一方式提供给 agent;
- Script 可以承担批量清洗文本、提取固定字段等确定性步骤。
当这套方法还只是一次尝试时,把要求留在 Prompt 里已经足够;当它开始反复出现,并且每次都需要相似的步骤、格式和审查标准时,才值得抽成 Skill。先让流程在真实任务里长出来,再把稳定部分写进 Skill,通常比一开始就设计一份面面俱到的“万能能力包”更可靠。
Skill 也需要供应链意识
Skill 看起来以文字说明为主,却可能影响工具选择、文件读写、网络访问和脚本执行。安装第三方 Skill 时,只看名称和介绍并不够,至少还应检查:
SKILL.md是否包含越出任务范围的指令;- 脚本会读取、修改或上传哪些数据;
- 引用资料是否可靠、是否已经过时;
- 是否要求额外软件、网络访问或敏感权限;
- 高风险操作是否保留人工确认与可回退路径。
更稳妥的心态是:把第三方 Skill 当作一项会影响 agent 行为的依赖来审查。即使它没有附带脚本,工作流本身仍可能诱导 agent 访问不必要的数据,或把原本需要确认的操作包装成默认步骤。
什么时候值得自己写一个 Skill
并不是所有常用 Prompt 都需要升级成 Skill。下面几种信号同时出现时,才更值得动手:
- 同一类任务已经重复发生;
- 结果质量明显依赖固定步骤或领域知识;
- 输出需要遵守长期稳定的格式;
- 任务经常调用同一组工具或参考资料;
- 失败模式已经能够被描述和检查。
开始编写之前,可以先回答五个问题:
- 这个 Skill 对应的任务边界是什么?
- 哪些用户表达或输入特征应当触发它?
- 哪些步骤必须执行,哪些只是可选策略?
- 什么样的输出才算完成,如何验证?
- 它需要哪些工具、资源和权限,风险在哪里?
把这些问题说清楚之后,再决定是否需要脚本、参考资料和资源文件。Skill 的目标不是把所有经验都装进去,而是让一类任务从“每次临场发挥”逐渐变成可执行、可检查、可维护的方法。
结语
Skill 最有价值的地方,不是让 agent 看起来掌握了更多名词,而是让那些已经在真实工作中证明有效的方法能够被保存、复用和继续修订。
如果只保留一句总结,可以记成:
Prompt 交代这一次任务,Skill 沉淀这一类任务的方法;Tool 完成具体动作,MCP 负责把外部能力接进来。
当这几层各自站在合适的位置,AI 才更有机会从“能回答”走向“能按方法做事”。
评论
由 GitHub Discussions 提供支持。