转载请注明出处,本文仅用于学习交流,不对之处,恳请指正 ,部分图片摘取网络,如有侵权请联系
Skill
Skill 是在智能体工具中为 AI 赋予特定能力的机制,使用的前提是——该智能体必须具备一定的运行环境。目前常见的智能体有 Claude Code、Codex、OpenClaw 等。
智能体如何发现 Skill
有几个关键点:
- Skill 是标准化的 —— 规范化的文件格式让 Agent 框架层能够统一收集相关信息
- 运行工具能够为 AI 注入上下文 —— Agent 框架层决定向 AI 暴露哪些 Skill 的元信息
- AI 自行决定是否读取 —— AI 层根据元信息决定是否进一步调用该 Skill
- 运行环境能够执行 Skill 中说明的内容 —— 这是 Skill 能够生效的基础条件
Skill 的本质
Skill 也可以简单地认为是一种 Prompt,不要被“可按需加载的指令”“资源和可选脚本”等名词吓到
Skill 的内容最终也是以文本的形式被注入到 AI 的上下文中,与你手动编写的 Prompt 在结果上没有区别——你告诉 AI 去查看某个文件,只要运行条件允许,它就会读取该文件并将内容纳入上下文。
Skill 实际上是为 AI 准备的一套标准化的可执行流程,它的一个重要作用就是减少你反复输入内容相近的 Prompt。如果你为它准备好了对应的脚本或指令,它就能按照这套流程去执行。
值得一提的是,Skill 的很多能力依托于 Function Calling(即 AI 调用外部工具或函数的能力),向量数据库等复杂的 AI 能力同样如此,此处不展开。
Skill 的引用
当你将 Python、Bash 等可执行脚本放在某个目录下,并在 Skill 中说明如何使用它,这就是引用的一种形式。
有一种常见的引用方式是在 Skill 同级目录下设置 references 目录(OpenAI 规范,Claude 可能有不同的目录结构),根据不同的背景需求存放二级说明文件。例如:某个操作在 Windows 上应该执行什么命令,在 Linux 上又应该执行什么命令。
Skill 与 Instructions 有什么不同
先搞清"Instructions"这个概念在 AI 背景下的演变:
- 最初使用的是 System Prompt,用于为 AI 定义角色、设置规则,但
system这个 role 名称本身语义模糊,无法清晰表达"这条消息是谁注入的" - 后来 OpenAI 在新的 API 中引入了 Developer Message,用
developer这个词更明确地表达“这是平台开发者注入的指令”,而非终端用户的输入,在权限层级上也更清晰地体现了 platform > user 的优先级 - 随着智能体大量兴起,OpenAI 推出了 Responses API,其中引入了
instructions字段作为更动态的指令注入方式。它可以与 Prompt Caching(即 Prefix Cache)等机制配合,并支持在不同任务阶段动态注入不同的系统指令 - 后来,OpenAI 更是提供了基于 WebSocket 的 Responses API 模式,有效地降低长链路、工具调用密集型智能体工作流中的延迟。
有意思的是,Developer Message 与 Instructions 可以同时存在,这在实践中非常有用:Developer Message 用于角色与系统规则的定义,Instructions 用于动态指令的注入。
默认 Instructions 与 Skill 的区别
Codex 的 AGENTS.md、Claude Code 的 CLAUDE.md 等属于默认 Instructions,它们与 Skill 有一个本质区别:
- 默认 Instructions 总是被附加在 AI 的上下文中
- Skill 通常只向 AI 暴露 title 和 description 之类的元信息,并由 AI 自行决定是否进一步读取
这样设计的原因是:如果将所有 Skill 的完整内容永远附带在上下文中,会造成上下文体积过大,并引入不必要的内容干扰。
另外,在一个足够优秀的 Agent 中,通常不需要在 Instructions 中手动声明"我有哪些 Skill、如何使用",因为框架层会自动将标准化的 Skill 元信息注入到上下文中。
Skill 跟 Prompt 的区别
这里又绕回来了,前面说 Skill 本身可以看作 Prompt 的一种,现在又说跟 Prompt 不同。所以在开始论述之前我需要说明清楚:
- Developer Message 或 System Prompt: Agent 中定义的固定的一些背景信息
- Instructions: 同样来自 Agent 的注入,但是可以更动态一点
- User Prompt: 通常指的是我们手动输入的部分
- Skill: 规范化的技能文件,通常定义了某种流程或规范
那么实际上这里都是 Prompt,而分类上属于四种不同的 Prompt。我说的不同是指 Skill 跟另外三个的不同——通常不想要每次附着在上下文中,而是靠 AI 自行判断是否读取,有效地节约上下文长度,减少上下文污染。而且在当前任务的上下文中,它能够让 AI 更加专注去做“当下这件事情”。

文章评论