当 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 正文组成,必需字段是 namedescription:前者标识 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。下面几种信号同时出现时,才更值得动手:

  • 同一类任务已经重复发生;
  • 结果质量明显依赖固定步骤或领域知识;
  • 输出需要遵守长期稳定的格式;
  • 任务经常调用同一组工具或参考资料;
  • 失败模式已经能够被描述和检查。

开始编写之前,可以先回答五个问题:

  1. 这个 Skill 对应的任务边界是什么?
  2. 哪些用户表达或输入特征应当触发它?
  3. 哪些步骤必须执行,哪些只是可选策略?
  4. 什么样的输出才算完成,如何验证?
  5. 它需要哪些工具、资源和权限,风险在哪里?

把这些问题说清楚之后,再决定是否需要脚本、参考资料和资源文件。Skill 的目标不是把所有经验都装进去,而是让一类任务从“每次临场发挥”逐渐变成可执行、可检查、可维护的方法。

结语

Skill 最有价值的地方,不是让 agent 看起来掌握了更多名词,而是让那些已经在真实工作中证明有效的方法能够被保存、复用和继续修订。

如果只保留一句总结,可以记成:

Prompt 交代这一次任务,Skill 沉淀这一类任务的方法;Tool 完成具体动作,MCP 负责把外部能力接进来。

当这几层各自站在合适的位置,AI 才更有机会从“能回答”走向“能按方法做事”。

参考资料