总结一下 skills 文件夹的两类核心文件及作用:
- 以 SKILL.md 为核心的知识文档:通过自然语言逻辑 (metadata+文档索引),建立一个树层级的知识文档体系。LLM 在面对任务时,先基于高层次文档 判断此次任务涉及的相关知识文档 (Discovery);再在必要时 动态要求客户端索引&读取相关文档 (Activation)。这样就可以过滤和任务无关的信息,减少完成任务的上下文数量。
- 包含在 skills 体系中的脚本工具:知识文档中除了自然语言形式的任务指导,也会包含一些领域任务工具的使用说明(包括 MCP),扩展 LLM 在领域任务的规范化能力。这些领域任务工具可以以"脚本文件&程序片段"的形式直接由用户以 静态形式给出 (Hard-coded Tools),也可以由 LLM 基于知识文档中提供的信息(库依赖、现有函数工具)针对当前任务来 动态生成 (LLM as a Creator)。
补充:
"Metadata"在技术实现上通常表现为 SKILL.md 文件头部的 YAML Frontmatter(即 --- 包裹的区域)
Discovery 阶段:系统启动时,Agent 只读取这个 YAML 里的 name(名称)和 description(描述)。这些几百个字符的轻量级信息会被注入到 LLM 的 System Prompt 中。
Activation 阶段:只有当 LLM 认为任务与某个 description 匹配时,才会调用工具去读取该 SKILL.md 下方成千上万字的具体 MarkDown 内容。
说白了就MCP和skill都是让模型知道我有一些自动化脚本能够做一些东西,区别就是mcp是云端的自动化脚本,我作为用户不需要写(有可能也不会写),我交钱用网上有的,skill就是用本地上的自动化脚本。 functioncall就是我在给模型一个表单tool
tools告诉他我本地有什么自动化脚本/工具,你看情况告诉我你要用我的哪个脚本还是只是文字回答我的问题,然后我闭眼执行。 至于是本地的skill或者云端的mcp就看个人(数据隐私、编程维护能力、价格等)。
然后skill也考虑到token浪费的问题就做了很多设计什么descripton拉让模型先看目录知道我有啥,然后真具体执行再打开说明书看看要干啥,用哪个脚本查什么数据要跟你交代什么,再不懂就直接打开源代码看看都干的啥,再不懂就跟你说我不行了,这个skill要改一下。改到行为止。
你的需求越具体越特殊越隐私就越不可能从网上找到对口的mcp,skill就是一个可以直接用自然语言寻找和执行的本地脚本,在ai编程的加持下能够让我们不需要编程就能够在底层调动本地自动化脚本来方便我们的使用