Agent Skill “渐进式披露” 的加载分层模型
区分两个概念:
- 静态加载:启动 Agent 时加载全部 Skill(传统方案)
- 渐进式分层加载:初始只加载基础层,随任务推进逐层解锁、动态注入 Skill 元信息

🧩 三层加载模型
“渐进式披露”通过以下三个层级实现:
| 层级 | 内容 | 加载时机 | Token 消耗 | 作用 |
|---|---|---|---|---|
| Level 1: 元数据 (Metadata) | Skill 的名称 (name) 和简介 (description) |
Agent 启动时常驻内存 | ~100 tokens/个,非常轻量 | 作为“索引”或“目录”,让 Agent 知道有哪些能力可用 |
| Level 2: 核心指令 (Instructions) | SKILL.md 文件中的完整操作流程、最佳实践 |
当 Level 1 匹配成功,Skill 被“触发”时加载 | 通常 < 5000 tokens | 提供完成任务所需的“操作手册” |
| Level 3: 附属资源 (Resources) | 参考文档、脚本、模板等 | 按需读取,仅在执行具体操作时访问 | 几乎无上限,且不占用上下文 | 作为“弹药库”,按需调用,不占用上下文窗口 |
正是这种设计,让 Agent 可以在拥有海量 Skills 的情况下,依然保持上下文的轻量高效。一个 Skill 的典型目录结构如下:
skill-name/ ├── SKILL.md # 包含 Level 1 (YAML头部) 和 Level 2 (正文) ├── references/ # Level 3: 补充文档 ├── scripts/ # Level 3: 可执行脚本 └── assets/ # Level 3: 模板、图片等资源
先明确边界:
元索引 = 检索层数据(轻量,用于 Agent 路由、意图匹配、召回候选 Skill) Skill 完整脚本 = 执行层数据(大文本、流程、Prompt、代码,按需加载)
“Skill 元索引”(即轻量级元数据)
并没有一个统一的标准存储位置,其具体位置取决于你所使用的 Agent 框架或工具。
不过,这些元索引的来源是固定的:它们都是从每个 Skill 目录下的 SKILL.md 文件头部 YAML 格式的元数据(Frontmatter)中提取、编译而成的。
在具体实践中,元索引主要有以下几种存储形式:
📄 形式一:独立的 Markdown 索引文件 (INDEX.md)
这是一种广泛采用的方式,通过一个独立的 Markdown 文件来集中管理所有技能的摘要信息。
-
位置与原理:通常位于一个约定的目录下,例如
memory/skills/INDEX.md。Agent 在启动时会读取这个轻量级的索引文件,只加载技能的名称和摘要,而完整的技能指令则在需要时才加载。 -
工作机制:索引文件可以手动创建,也可以通过工具(如
skill-create.js)自动扫描并生成。 -
项目应用:例如在
agent-skills项目中,就采用了memory/skills/INDEX.md这种模式。
📁 形式二:结构化数据文件 (JSON / YAML / DB)
另一种常见方式是将元数据存储在结构化的数据文件中,以便于程序进行检索和管理。
-
JSON 文件:可以存储所有技能的元数据列表,或作为缓存文件来加速索引。例如,
skills_index.json就是一个常见的技能索引文件。 -
YAML 文件:同样可用于存储结构化的元数据,例如
skills-index.yaml文件。 -
SQLite 数据库:对于技能数量非常大的场景,会使用 SQLite 这类嵌入式数据库来存储和检索元数据。例如,
skill-split项目就将技能存储在 SQLite 数据库中。
🧠 形式三:运行时内存索引
在 Agent 运行时,元数据常被加载到内存中,以提升检索效率。
-
工作原理:Agent 启动时扫描目录,解析所有
SKILL.md文件,将提取的元数据构建成一个内存中的索引。 -
优势:这种方式能提供极快的检索速度,并且可以按需刷新。
⚙️ 特定框架的实践
-
Claude Code(官方):没有独立的索引文件,而是在启动时直接扫描
~/.claude/skills/和项目下的.claude/skills/目录,即时加载所有SKILL.md中的元数据。 -
skillhub:其 CLI 工具会生成一个
AGENTS.md文件,并在其中写入技能的元数据索引区块。 -
OpenSkills:其
SkillManager组件会维护一个_metadata_index列表,用于存放所有已发现技能的元数据。
🚀 高级优化:分层路由树 (Routing Tree)
当 Skills 数量增多(比如几十上百个),仅靠 Level 1 的元数据匹配可能仍会低效。SkillTree 这类工具引入了 ROOT → ROUTER → SKILL 的树形路由结构。
-
工作方式:Agent 首先读取一个轻量的
ROOT.md路由表,根据用户意图向下导航到对应的ROUTER.md,最终才精确定位并加载所需的叶子SKILL.md。 -
核心优势:将“大海捞针”式的匹配,变成了按图索骥的导航,进一步避免了一次性扫描所有 Skill 带来的开销。
💎 总结:为什么这很重要?
Agent Skill 的加载分层模型之所以是突破性设计,是因为它:
-
节约成本:避免将海量无关信息填入有限的上下文窗口,直接节省了 Token 消耗。
-
提升效果:让 Agent 的“工作台”更整洁,能专注于当前任务,减少干扰,提升决策质量。
-
实现无限扩展:理论上,你可以为 Agent 装备无限的 Skills,而无需担心上下文被撑爆。
更多推荐



所有评论(0)