理解Skill

文章目录

    • [1.Skill 是什么](#1.Skill 是什么)
    • [2.Skill 的组成部分](#2.Skill 的组成部分)
      • [2.1. 知识文档 --- SKILL.md](#2.1. 知识文档 — SKILL.md)
      • [2.2. 加载器 --- skill_loader.py](#2.2. 加载器 — skill_loader.py)
      • [2.3. 底层依赖 --- Tool 系统](#2.3. 底层依赖 — Tool 系统)
    • [3.完整的 Skill 流程](#3.完整的 Skill 流程)
    • [4.Skill和 Tool、MCP 的区别](#4.Skill和 Tool、MCP 的区别)
    • 5.代码

1.Skill 是什么

Skill = 知识文档 + Tool 执行能力。它不是独立的新技术,而是把Tool 包装在一个"按需加载知识"的框架里。

来自:什么是Skill?

Skill是包含指令、脚本和资源的文件夹,Claude 可以动态加载这些文件夹来改进专业任务的性能。技能教会 Claude 如何以可重复的方式完成特定任务,无论是使用您公司的品牌指南创建文档、使用您组织的特定工作流程分析数据,还是自动化个人任务。

设计目标:节省 token 。LLM 的上下文窗口有限,不该把所有领域知识(PDF 处理、图片编辑、音视频转换等)都塞进 system prompt。Skill 的做法是:用到时才加载(渐进式加载)

来自:使用MCP的代码执行:构建更高效的agent

MCP 为代理连接多种工具和系统提供了基础协议。然而,一旦连接过多服务器,工具定义和结果可能会消耗过多令牌,降低代理效率。随着MCP使用规模的扩大,有两种常见模式会增加agent成本和延迟:

1.工具定义会让上下文窗口过载;

2.中间工具的结果会消耗额外的token。


2.Skill 的组成部分

2.1. 知识文档 --- SKILL.md

每个 Skill 是一个 Markdown 文件,结构分两部分:

markdown 复制代码
---
name: pdf
description: 当用户想处理 PDF 时激活此 Skill
---
这里是实际的知识内容...
  • YAML 元数据 (两个 -- 之间):Skill 的名称、描述、触发条件
  • 正文:领域知识(API 用法、代码示例、最佳实践)

2.2. 加载器 --- skill_loader.py

skill_loader.py 只有 23 行,核心逻辑:

def load(path: str) -> tuple[dict, str]: # 1. 读文件 # 2. 检查是否以 --- 开头(没有就直接返回全文) # 3. 用 --- 分割,取 parts[1] → YAML 元数据,parts[2] → 正文 # 4. 返回 (metadata, body)

返回的 metadata 用来判断是否该激活此 Skillbody 是注入到 LLM 上下文的实际知识。

2.3. 底层依赖 --- Tool 系统

Skill 本身不包含执行逻辑,它只是给 LLM 提供"知识"。LLM 看完知识后,如果需要操作文件、执行命令,还是通过 ToolExecutor 调用内置工具(read/write/bash 等)。


3.完整的 Skill 流程

复制代码
用户:"帮我提取这个 PDF 里的表格"
    │
    ▼
① 检测关键词 → 匹配到 "pdf" Skill
    │
    ▼
② 加载 skills/pdf/SKILL.md
   → metadata.name = "pdf"
   → body = "## pdfplumber...extract_tables()..."
    │
    ▼
③ 把 body 注入到 system prompt
   "你是 PDF 专家,参考以下指南:
    ### Extract Tables
    with pdfplumber.open(...) as pdf:
        tables = page.extract_tables()..."
    │
    ▼
④ LLM 根据知识,决定调用 Tool
   比如:bash({"command": "pip install pdfplumber"})
        → ToolExecutor 执行 → 结果返回 LLM
    │
    ▼
⑤ LLM 最终给出回答

注意:④是可选步骤。如果用户只是问"PDF 有几种提取表格的方法",LLM 只靠 SKILL.md 的知识就能回答,不需要调用工具。


4.Skill和 Tool、MCP 的区别

概念 解决什么问题 怎么说
Tool LLM 需要执行本地操作 "给你一个函数,你可以调用它"
MCP LLM 需要调用远程服务 "给你一个远程 API,你可以调用它"
Skill LLM 不懂某个领域知识 "给你一份文档,你先读懂了再干活"

一句话Tool 给 LLM MCP 给 LLM 远程手Skill 给 LLM 大脑的参考资料

5.代码

skill_loader.py:

python 复制代码
"""Skill 加载模块"""

import yaml

def load(path: str) -> tuple[dict, str]:
    """解析 SKILL.md 文件,返回 (metadata, content)。"""
    with open(path, "r", encoding="utf-8") as f:
        content = f.read()

    if not content.startswith("---"):
        return {}, content

    # 找到第二个 ---
    parts = content.split("---", 2)  # 只分割成三部分:前导空字符串、metadata、剩余内容
    if len(parts) < 3:
        return {}, content

    # 划分元数据和正文
    metadata = yaml.safe_load(parts[1])
    body = parts[2].strip()

    return metadata or {}, body

if __name__ == "__main__":
    import sys
    from pathlib import Path

    # 默认测试文件(相对于脚本所在目录)
    script_dir = Path(__file__).parent
    test_file = script_dir / "skills/pdf/SKILL.md" 

    if len(sys.argv) > 1:
        test_file = Path(sys.argv[1])

    print(f"Loading: {test_file}")
    print("=" * 50)

    meta, body = load(str(test_file))

    print("METADATA:")
    for k, v in meta.items():
        display = f"{v[:60]}..." if isinstance(v, str) and len(v) > 60 else v
        print(f"  {k}: {display}")

    print(f"\nCONTENT (first 300 chars):\n{body[:300]}...")

skill.md文件:

markdown 复制代码
---
name: pdf
description: Use this skill whenever the user wants to do anything with PDF files. This includes reading or extracting text/tables from PDFs, combining or merging multiple PDFs into one, splitting PDFs apart, rotating pages, adding watermarks, creating new PDFs, filling PDF forms, encrypting/decrypting PDFs, extracting images, and OCR on scanned PDFs to make them searchable. If the user mentions a .pdf file or asks to produce one, use this skill.
license: Proprietary. LICENSE.txt has complete terms
---

# PDF Processing Guide

## Overview
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

参考:

1.什么是Skill?

2.Code execution with MCP: Building more efficient agents.

3.https://github.com/lasywolf/Learn-OpenClaw

相关推荐
云安全助手4 分钟前
2026年企业级Claude中转服务深度评测:安全、稳定与速度的终极答案
人工智能·安全·claude·ai大模型
o561-6o623o7鹿10 分钟前
陈,机能实验室整体解决方案 人体生理实验整体解决方案 基础医学机能实验室建设
人工智能
代码柏拉图23 分钟前
Agent Skill 制作手册 01:入门篇
人工智能
珂朵莉MM33 分钟前
第七届全球校园人工智能算法精英大赛-算法巅峰赛产业命题赛第3赛季优化题--束搜索
人工智能·算法
智慧物业老杨33 分钟前
智慧物业合同周期管理系统:从风险预警到智能交接的全流程数智化落地方案
java·人工智能·python
科技AI训练师33 分钟前
2026高压清洗泵厂家选择指南:判断标准与选购要点
大数据·人工智能
Front思34 分钟前
AI前端工程师需要具备能力+
前端·人工智能·ai
Percent_bigdata35 分钟前
“模数共振”开启产业AI新阶段,重新定义数据治理
大数据·人工智能
AI品信智慧数智人38 分钟前
告别传统导游!伴游小助手,AI智能解锁全新旅行体验✨
人工智能·旅游
乐维_lwops1 小时前
从 “救火运维” 到 “自动驾驶”:运维智能体到底解决了什么?
运维·人工智能·运维智能体