四、你追求的从来不是更强的模型,而是更好的 Skill

10 阅读9分钟

AI Agent Skill 完全解读:它是什么、解决什么问题、为什么不可或缺

一、Skill 解决什么问题

用过 Codex、Claude Code 或 Cursor 的人可能都遇到过这个问题:工具很强,但每次都要反复解释上下文——"用我们的 API 规范"、"按这个流程来"、"别忘了测试"。

根本原因是模型的知识截止于训练数据,它不知道你公司的代码规范,也不知道你的发布流程。每次交流其实都相当于你在给一个"聪明的实习生"做入职培训。

实际拆解下来是三个问题:

缺乏专业性。 通用模型知道很多,但不知道你家的东西。你的 API 设计规范、数据库 schema、部署流程它一概不知。每次重新解释,效率低且容易遗漏。

缺乏一致性。 没有约束,AI 容易走最短路径——跳过 spec、跳过测试、跳过安全审查。代码能用但质量差,其实是没规范约束。

缺乏可复用性。 写一次 prompt 只能用一个对话。下次要么重写,要么翻历史记录,等于每次都从零开始。

这三个问题指向同一个答案:你需要一套可复用的、结构化的知识包,让 AI 直接加载你的上下文,而不是每次从头教起。这就是 Skill。

但 Skill 远不止是"给 AI 写 prompt"那么简单。这篇文章从定义、设计哲学到最佳实践,把这件事拆清楚。

二、什么是 Skill?

一句话:Skill 是一个文件夹,里面有一个 SKILL.md 文件,加上可选的脚本、参考文档和资源。

my-skill/ ├── SKILL.md # YAML 元数据 + 指令 ├── scripts/ # 可执行的脚本 ├── references/ # 按需加载的文档 ├── assets/ # 模板、图标等资源 └── ...

SKILL.md 分两部分:

  • YAML Frontmatter:name 和 description,Agent 靠它判断"什么时候该用这个 Skill"
  • Markdown Body:实际指令,只在 Skill 被触发后才加载

官方定义如下:

Open Standard(由 Anthropic 提出,Codex 等采用):"A lightweight, open format for extending AI agent capabilities with specialized knowledge and workflows."

OpenAI 官方:"Folders of instructions, scripts, and resources that AI agents can discover and use to perform at specific tasks. Write once, use everywhere."

Codex skill-creator 文档:"Think of them as 'onboarding guides' for specific domains or tasks — they transform Codex from a general-purpose agent into a specialized agent equipped with procedural knowledge that no model can fully possess."

最后这个比喻最到位——把 Skill 看作 AI 的"入职指南"。一个资深工程师入职新公司,也需要了解团队的代码规范、发布流程和工具链。Skill 做的就是这件事。

三、为什么 Skill 如此关键

Skill 最精妙的设计不在"能做什么",而在怎么做

渐进式加载

如果每个 Skill 的完整指令都塞进上下文,装 10 个就撑爆了。

Skill 的方案是渐进式加载,分三步:

发现阶段:Agent 启动时只读 name 和 description → 遇到匹配的任务

激活阶段:加载完整的 SKILL.md 指令 → 开始干活

执行阶段:按指令执行,按需跑脚本、读参考文件

完整指令只在实际需要时才加载。装几十个 Skill,上下文开销只取决于当前任务需要的那些。这和操作系统的虚拟内存是一个思路——按需分页,而不是全量加载。

上下文窗口是公共资源

Codex skill-creator 文档里有句话说得很好:

"The context window is a public good. Skills share it with system prompt, conversation history, other Skills' metadata, and the actual user request."

上下文窗口有限,竞争者很多。所以写 Skill 要遵循一个原则:只写模型还不知道的信息。 不要在 Skill 里教 AI 写代码,教它写你们公司的代码。

过程性知识

Skill 提供的是过程性知识(procedural knowledge)——做事的流程、判断标准、该注意的坑。这些是模型训练数据里没有的,只能靠人类经验沉淀。

生态标准正在形成

这个格式由 Anthropic 提出,已被 OpenAI Codex、Cursor 等多个工具采纳。OpenAI 维护着 40+ 个 curated skill,覆盖代码审查、安全实践、Figma 设计、Notion 知识管理等领域。Google 的 Addy Osmani 也开源了 40+ 个生产级 engineering skills。

当 AI Agent 从"玩具"走向"工具",扩展性就成了关键问题。Skill 是当前最好的答案。

四、如何写好 Skill

五大原则

1. 简洁为要

每段话都要问自己:"这值多少 Token?"能用示例说明的,就别用文字解释。

2. 设定合适的自由度

需要开放性 → 给文字指令;

有预设路径 → 给带参数的模板;

易错操作 → 给具体脚本。

3. description 是第一位的

这是 Agent 判断"该不该用"的唯一依据。把"何时使用"的信息全放在 description 里,不要放正文——正文在触发后才加载。

4. 保护验证完整性

用真实任务测试 Skill,不要让测试者知道"这是个测试"。否则你测出来的只是"答案匹配度",不是真实的泛化能力。

5. 具体、可验证、经实战、最小化

来自 Addy Osmani 的四字真言。每条 Skill 都要能用这四条拷问自己。

实战拆解:Sentry Skill

Sentry 是一个监控平台,开发者用它追踪生产环境的崩溃和异常。这个 Skill 的目标是:让 AI 直接在命令行下查 Sentry,不需要打开网页。

下面直接打开这个 Skill 文件,一段一段看。


① Frontmatter——决定 AI 什么时候出手

yaml name: "sentry" description: > "Use when the user asks to inspect Sentry issues or events, summarize recent production errors, or pull basic Sentry health data via the Sentry CLI; perform read-only queries using the sentry command."

description 罗列了每一种可能触发这个 Skill 的场景。为什么写这么全?因为这是 AI 判断的唯一依据。需要清晰具体。


② Quick Start——防止 AI 在低级问题上浪费 Token

Quick start

  • 如果未登录,让用户运行 sentry auth login
  • CLI 会自动检测 org/project,失败了再手动指定
  • 默认值:时间范围 24h,环境 production,限制 20 条
  • 处理输出时始终用 --json

这段话给了ai明确指令,遇到什么问题执行什么操作,尽量不让ai去猜测


③ 核心任务——用具体命令代替抽象描述

核心任务(用 Sentry CLI)

  1. 列出未解决的问题

sentry issue list --query "is:unresolved environment:production" --period 24h --limit 20

  1. 查看问题详情

sentry issue view {ABC-123} --json

  1. AI 根因分析

sentry issue explain {ABC-123}

  1. AI 修复方案

sentry issue plan {ABC-123}

不是空泛地说"请用 CLI 查问题",而是直接给带占位符的命令模板。AI 不需要查文档、猜参数,直接填空就能跑。

这 4 条命令的关系也不是随机的:

命令作用流程位置
issue list列出问题① 发现问题
issue view {ID}查看详情② 了解细节
issue explain {ID}AI 根因分析③ 定位原因
issue plan {ID}AI 修复方案④ 给出方案

它完整复现了一个开发者排查问题的全流程。好的核心任务列表有一条叙述线索,像下棋一样一步一步走。


④ 兜底方案——给 AI 留退路

兜底:通用 API

sentry api /api/0/organizations/{your-org}/ --method GET

核心任务覆盖 80%,但总有覆盖不到的。兜底的思路是给一条"万能钥匙"——直接调 Sentry 的原始 API,让 AI 自己去拼参数、解析结果。所以这个 Skill 的执行逻辑是:

用户提问 → 匹配核心任务?→ 是:执行模板命令 → 否:走兜底,调 API 自己搞定

好的 Skill 不仅要告诉 AI 怎么走,还要告诉它走不通怎么办。


⑤ 黄金测试输入——明确验收标准

markdown Example prompt: "List the top 10 open issues for prod in the last 24h." Expected: ordered list with titles, short IDs, counts, last seen.

这就是一份验收标准。AI 看到就知道:如果用户说的类似这句话,输出应该长那样。


小结

一句话总结这个 Skill 好在哪里:它把"一个懂 Sentry 的工程师排查问题会怎么做"完整教给了 AI。

  • ✅ Frontmatter 说清楚何时触发
  • ✅ Quick Start 消除低级不确定性
  • ✅ 核心任务直接给模板命令
  • ✅ 兜底覆盖边界情况
  • ✅ 黄金测试提供验收标准

编写流程

  1. 定 scope:解决什么问题,覆盖哪些场景
  2. 写 description:精确描述功能和触发条件
  3. 搭骨架:SKILL.md + 可选的 scripts/references/assets
  4. 写 Quick Start:最重要信息放最前面
  5. 写核心指令:用具体示例代替抽象描述
  6. 定义兜底:处理边界情况
  7. 加黄金测试:验证 Skill 是否正常工作
  8. 测试:用真实任务跑一遍

五、一些思考

Skill 是"人类知识的结构化"

模型掌握了海量陈述性知识(事实、概念、语言),但训练数据中缺少过程性知识——做事的流程、判断的标准、团队的约定。Skill 本质上是一种知识压缩:把人类在特定领域的经验和判断,压缩成 AI 可以理解和执行的指令。这是从"知道"到"做到"的关键一步。

"Write once, use everywhere" 的愿景

OpenAI 对 Skill 的期望是"写一次,到处用"。当 Agent Skills 成为开放标准,你写的一个调试 skill 可以在 Codex 上用、在 Claude Code 上用、在 Cursor 上用。围绕"AI 能力扩展"的生态正在形成。

上下文管理的艺术

渐进式加载给我的启发是:在 AI Agent 时代,上下文管理是核心能力。 不是把所有东西塞进上下文,而是让 Agent 知道"什么东西在什么场景需要加载"。这个思路可以延伸到 RAG 系统、插件系统、工具链集成。

六、结语

Skill 解决了一个根本性问题:如何让通用的 AI 在特定场景下可靠地工作。

如果你只用 AI 写简单代码片段,你不需要 Skill。但如果你想让 AI 成为团队的一员——遵循你们的规范、使用你们的流程、融入你们的工程文化——你需要的不是更强的模型,而是更好的 Skill。

写一个 Skill,就是把你对这个领域的理解和判断,打包成 AI 可执行的"知识资产"。这件事值得投入。