技能是过程性知识的包管理器
每个构建 Agent 的团队最终都会遇到同样的瓶颈。系统提示词(System Prompt)起初只有 400 个 token。接着有人添加了数据库迁移检查清单。然后是复盘模板、部署运行手册、客户邮件风格指南。18 个月后,它变成了一个拥有 9,000 个 token 的巨石,没人敢去改动它,因为修改关于回滚流程的一行内容,竟然会降低 Agent 在支持工单中的语气表现。你构建了一个相当于 50,000 行的 main.c 的提示词——而且每个人都在对其进行静态链接。
直觉的反应是使用 RAG:将运行手册切片、嵌入(embed),然后按需检索。但这会以一种更隐蔽的方式失败。RAG 是为检索“事实”而生的,而事实在被碎片化时可以平滑退化——关于你计费模型的五个相关切片中检索到三个,仍然能告诉 Agent 大部分所需信息。但程序(Procedures)无法平滑退化。检索到 60% 的数据库迁移运行手册并不是 60% 有用,而是意味着一场生产事故。有第 1 到 4 步但缺失了第 5 步(“在切换前验证复制延迟”)比完全没有运行手册更糟,因为 Agent 现在的行为带着一种它尚未赢得的自信。
程序真正需要的是一种完全不同的加载模型:完整的、带有版本号的模块,它们根据任务类型而非语义相似度激活,整体加载而非碎片化加载,并携带其所需的资源。这不是一个检索问题。这是一个依赖管理问题——而行业已经悄然汇聚成了一个看起来完全像包管理器的解决方案。
事实靠检索;程序靠安装
值得内化的区别是陈述性知识(Declarative knowledge)与程序性知识(Procedural knowledge)之间的差异。陈述性知识——你的退款政策是什么、模式(schema)长什么样、客户上周说了什么——是事实形状的。它容忍切片,受益于语义搜索,且陈旧的碎片通常单独无害。RAG 正是为此设计的,并且非常擅长处理它。
程序性知识——我们如何进行数据库迁移、如何写复盘、如何发布版本——则有着完全不同的物理特性:
- 它是顺序性的。 顺序承载意义。一个通过余弦相似度返回步骤的检索系统会很乐意将第 7 步作为最“相关”的切片返回,却忽略了让第 7 步安全执行的前置条件。
- 它是全有或全无的。 部分程序会制造出能力的假象。Agent 并不知道存在一个它从未见过的第 5 步。
- 它由任务触发,而非主题。 你希望加载迁移运行手册是因为 Agent 正在“执行迁移”,而不是因为用户的消息恰好在嵌入向量空间中靠近“数据库”这个词。
- 它捆绑了工件。 真实的运行手册附带脚本、模板和检查清单。检索到的文本片段只能描述验证脚本;而一项技能(Skill)则 能直接交付它。
一旦你理解了这种划分,提示词堆砌(prompt-stuffing)的失败模式也就变得显而易见了。巨石般的系统提示词为每个任务加载了每个程序——你在回答关于按钮颜色的问题时,却在支付复盘模板的 token 成本,而且每个程序都在稀释对其他程序的注意力。RAG 对程序的交付不足;系统提示词则交付过度。正确的粒度是模块。
这种融合如此迅速是有原因的
Anthropic 在 2025 年末发布了 Agent Skills 作为一种格式:一个包含 SKILL.md 文件的文件夹——YAML 元数据加上 Markdown 指令——可选地捆绑脚本、模板和参考文档。在 2025 年 12 月,它成为了一个开放标准,随之而来的采用曲线是近年来开发工具领域最陡峭的:OpenAI 的 Codex、GitHub Copilot、VS Code、Cursor 和 Gemini CLI 在数周内纷纷跟进;大约 40 个兼容平台在六个月内出现。社区目录现在索引的技能数量已达七位数。
格式的传播如此之快并非因为营销。它们之所以能迅速普及,是因为每个人都在内部构建类似的东西,并且很高兴能停止维护私有版本。每个严肃的 Agent 团队都有一种自研机制来“在任务看起来像 X 时加载这些指令”——标准只是赋予了它一个名字和一种文件布局。
让它发挥作用的机制是渐进式披露(Progressive disclosure),它精确地映射了包管理器如何处理依赖元数据与负载。在启动时,Agent 只看到每个技能的名称和一行描述——每个技能只需几十个 token,相当于扫描索引。当任务匹配时,Agent 加载完整的 SKILL.md——即“安装”该包。如果指令引用了更深层的内容(模式参考、边缘情况附录、可执行的验证脚本),Agent 仅在需要时提取它们——即延迟加载(lazy-loading)子模块。一个 Agent 可以拥有数百个可用程序,而仅需为它实际使用的两个程序支付上下文成本。
这就是 RAG 无法讲述的加载故事:通过声明的意向而非嵌入的相似性来激活,以及通过构建实现的原子性——一个技能要么整体加载,要么完全不加载。
你的流程文档现已成为可执行代码——请像对待代码一样对待它
这里有一个大多数组织尚未消化的深远影响:当 Agent 加载并遵循你的运行手册(runbooks)时,你的流程文档就不再仅仅是文档了。它现在是代码,而且正在被执行。然而,几乎没有人对其应用代码规范。
- https://www.anthropic.com/engineering/equipping-agents-for-the-real-world-with-agent-skills
- https://agentskills.io/home
- https://github.com/agentskills/agentskills
- https://www.newsletter.swirlai.com/p/agent-skills-progressive-disclosure
- https://www.firecrawl.dev/blog/agent-skills
- https://agentman.ai/blog/agent-skills-ecosystem-report-2026
- https://snyk.io/blog/toxicskills-malicious-ai-agent-skills-clawhub/
- https://orca.security/resources/blog/ai-agent-skill-supply-chain-security/
- https://safedep.io/agent-skills-threat-model/
- https://blog.alexewerlof.com/p/rag-vs-skill-vs-mcp-vs-rlm
