Skills 的渐进式引用机制是什么?
在 Agent 系统里,Skills 可以理解成一组“可复用的能力包”。
比如:
PDF 处理技能
Excel 分析技能
网页抓取技能
图片识别技能
邮件发送技能
每个 Skill 里面可能不只有一句说明,而是会包含很多内容:
技能名称
技能描述
使用场景
调用方式
参数说明
示例文档
辅助脚本
注意事项
如果每次对话都把这些内容全部塞给大模型,问题就很明显:
Token 浪费
上下文变长
模型注意力分散
响应速度变慢
成本升高
所以 Skills 通常不会一次性全部加载,而是采用一种更聪明的方式:
渐进式引用。
一、什么是渐进式引用?
渐进式引用,就是不要一上来把所有内容都喂给模型。
而是分层加载:
第一层:只加载元数据
第二层:任务匹配后加载主文档
第三层:需要细节时再加载附件
一句话理解:
先让模型知道“有哪些技能”,
再让模型决定“要不要用某个技能”,
最后按需读取“这个技能的详细资料”。
这就像去图书馆查资料。
你不会一进门就把整本书背下来。
你会先看书名和简介,判断这本书有没有用。
确定有用之后,再翻目录和正文。
如果还不够,再去看附录、案例和配套资料。
Skills 的渐进式引用也是这个思路。
二、第一层:只加载元数据
第一层加载的是最轻的信息。
比如:
name: pdf-processor
description: 处理 PDF 文件的技能
这一层内容非常短,可能只有几十个 Token。
它的作用不是让模型马上执行复杂任务,而是让模型先知道:
系统里有一个 PDF 处理技能
这个技能大概是干什么的
什么场景可能用得上它
比如用户说:
帮我提取这个 PDF 里的表格
模型看到 pdf-processor 的描述后,就知道这个任务可能要用 PDF 技能。
如果用户只是普通聊天,那这个 Skill 就不会继续加载。
所以第一层解决的是:
快速发现技能,低成本匹配任务。
三、第二层:匹配后加载主文档
当模型判断某个 Skill 和当前任务相关时,系统才会加载这个 Skill 的主文档。
主文档一般会写得更详细,比如:
# PDF 处理技能
## 能力说明
可以提取 PDF 文本、表格和结构化字段。
## 使用指南
当用户上传 PDF 并要求解析内容时使用。
## 输入输出
输入 PDF 文件,输出文本、表格或 JSON 数据。
这一层内容比元数据多,但还不算特别重。
它主要告诉模型:
这个技能具体能做什么
什么时候应该用
怎么使用它
有什么限制
也就是说,第一层只是“技能名片”,第二层才是“技能说明书”。
四、第三层:需要示例时再加载附件
有时候,主文档还不够。
比如用户的需求比较复杂:
帮我从 PDF 表单里提取姓名、电话、地址,并输出 JSON。
这时候模型可能需要更具体的参考内容。
比如:
examples/extract-form.md
scripts/pdf-helper.py
这些就是第三层内容。
第三层不是默认加载,而是按需加载。
只有当模型需要:
具体示例
辅助脚本
复杂格式说明
特殊处理逻辑
系统才会把这些附件读进来。
这样可以避免一开始就把大量示例、脚本、说明全部塞进上下文。
五、为什么要这样设计?
因为大模型的上下文虽然越来越长,但并不代表可以随便塞内容。
内容越多,问题越多:
成本更高
速度更慢
重点更容易被稀释
无关信息会干扰模型判断
渐进式引用的核心价值就是:
用最少的上下文,让模型找到最合适的技能。
真正需要的时候,再逐步补充资料。
这是一种非常典型的“按需加载”设计。
六、这套机制的执行流程
完整流程可以这样理解:
用户提出任务
↓
系统加载所有 Skill 的元数据
↓
模型判断哪个 Skill 相关
↓
加载相关 Skill 的主文档
↓
模型继续判断是否需要示例或脚本
↓
按需加载附加文件
↓
完成任务
比如 PDF 场景:
用户上传 PDF
↓
模型看到 pdf-processor 元数据
↓
判断需要使用 PDF 技能
↓
加载 PDF 技能主文档
↓
发现需要表单提取示例
↓
加载 examples/extract-form.md
↓
执行 PDF 解析任务
这就是渐进式引用。
七、它和普通 Prompt 有什么区别?
普通 Prompt 更像是:
不管用不用,先全部塞进去。
而 Skills 渐进式引用更像是:
先放目录,需要哪章再翻哪章。
这两种方式差别很大。
普通 Prompt 适合简单场景。
但如果技能很多、文档很多、示例很多,就必须用渐进式引用。
否则上下文会越来越臃肿。
八、一句话总结
Skills 的渐进式引用机制,本质上就是:
先加载少量元数据做任务匹配,
再加载主文档理解技能用法,
最后按需加载示例、脚本和附件。
它解决的核心问题是:
既让模型知道有哪些能力,
又避免一次性塞入太多无关内容。
所以可以把它理解成:
元数据负责发现技能,
主文档负责指导使用,
附件负责补充细节。
最终目的只有一个:
让大模型用更少的 Token,找到更准确的能力,并完成更复杂的任务。