首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Agent Skills:用“文件夹”封装可复用的 AI 能力

Agent Skills:用“文件夹”封装可复用的 AI 能力

原创
作者头像
用户12339161
发布于 2026-10-10 19:23:42
发布于 2026-10-10 19:23:42
380
举报

2025 年 10 月,Anthropic 在 Claude 3.7 Sonnet 中正式推出 Claude Skills 功能,定位解决通用大模型在垂直场景中“知道但不会做”的问题。两个月后,Anthropic 联合多家生态伙伴在 agentskills.io 开源 Agent Skills Specification V1.0,并发布官方 SDK。到 2026 年 2 月,公开可用的 Agent Skills 已超过 85,000 个,支持该标准的主流平台达 27 家,覆盖开发、设计、办公、电商、金融等领域。TechCrunch 将其称为“AI 领域的 Dockerfile”——让 AI 能力变得可移植、可组合、可版本控制。

什么是 Agent Skills

Agent Skills 是组织好的文件集合,其中包含了代理可组合的程序知识。本质就是一个包含元数据、脚本、模板、参考指令的文件夹:

代码语言:javascript
复制
my-skill/
├── SKILL.md          # 主文件:YAML 元数据 + Markdown 指令
├── scripts/          # 可选:可执行代码(Python、Bash 等)
├── references/       # 可选:规则、规范、参考指南
└── assets/           # 可选:图标、模板等资源

SKILL.md 的 YAML frontmatter 中,name 和 description 是必须字段。description 应包含有助于代理识别相关任务的关键词,因为代理正是依赖这两项元数据来决定是否加载该 Skill。

三层渐进式加载:Skill 的核心机制

Agent Skills 最精巧的设计是渐进式披露。启动时只加载每个 Skill 的 name 和 description,约 30-50 tokens;当代理判断需要该 Skill 时,才加载完整的 SKILL.md 指令;只有在执行过程中真正需要时,才加载 scripts/ 和 references/ 中的资源。这套机制让代理可以同时安装几十个 Skill 而不撑爆上下文窗口。

以下代码展示了 Skill 的发现、加载与执行循环:

代码语言:javascript
复制
import os, re, yaml

class SkillRegistry:
    def __init__(self, skills_dir: str):
        self.skills = {}
        for name in os.listdir(skills_dir):
            path = os.path.join(skills_dir, name, "SKILL.md")
            if not os.path.exists(path):
                continue
            with open(path) as f:
                content = f.read()
            meta = yaml.safe_load(re.match(r"---\n(.*?)\n---", content, re.S).group(1))
            self.skills[meta["name"]] = {
                "description": meta["description"],
                "dir": os.path.dirname(path),
                "loaded": False,
                "content": None,
            }

    def discover(self) -> str:
        """第一层:只返回元数据,供模型判断是否需要"""
        return "\n".join(
            f"- {name}: {s['description']}"
            for name, s in self.skills.items()
        )

    def load(self, name: str) -> str:
        """第二层:按需加载完整指令"""
        s = self.skills[name]
        if not s["loaded"]:
            with open(os.path.join(s["dir"], "SKILL.md")) as f:
                s["content"] = f.read()
            s["loaded"] = True
        return s["content"]

    def run_script(self, name: str, script: str, args: list) -> str:
        """第三层:按需执行脚本"""
        script_path = os.path.join(self.skills[name]["dir"], "scripts", script)
        # 生产环境需沙盒隔离
        import subprocess
        result = subprocess.run(["python", script_path] + args,
                                capture_output=True, text=True, timeout=30)
        return result.stdout

# 使用示例
registry = SkillRegistry("./skills")
system_prompt = f"""可用技能:
{registry.discover()}
判断需要哪个技能后,调用 load_skill 获取完整指令。"""

# 模型返回 {"action": "load_skill", "name": "pdf-toolkit"}
instructions = registry.load("pdf-toolkit")

这套模式的价值在于:Skill 是纯文件,不绑定任何特定模型或框架。你可以为 Claude 写一个 Skill,然后在 OpenAI Codex、Gemini CLI、GitHub Copilot 中直接使用,无需任何改写。

与 MCP 的协作关系

Agent Skills 与 MCP 不是替代关系。MCP 解决的是标准化连接问题,让工具和模型之间的对接有统一协议;Skills 解决的是经验封装问题,把流程、异常处理和复用能力打包成可执行的知识。用一句话概括:MCP 给 Agent 提供“工具”,Skills 给 Agent 灌输“知识”,告诉它该在何时、以何种方式使用这些工具。MCP 是服务契约,Skills 是编排蓝图,两者层级协作,缺一不可。

生态与展望

2026 年 Q1,Skill 市场单月创建量达到 27,720 个。但《Skill 蓝皮书 2026》基于 61,776 条数据的分析显示,54% 的 Skill 从未被看见,基尼系数高达 0.983,比 AppStore 和 npm 都更极端。这意味着 Skill 的分发比创建本身更难——写好一个 Skill 只是起点,让它被正确的人和正确的 Agent 发现,才是真正的挑战。

对开发者而言,Agent Skills 打开了一扇门:你不再需要为每个 AI 平台重复编写工具定义,而是用一套标准化的文件夹,把领域知识封装为可移植、可组合、可版本控制的资产。正如 Dockerfile 让应用交付标准化,SKILL.md 正在让 AI 能力交付标准化。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

目录
  • 什么是 Agent Skills
  • 三层渐进式加载:Skill 的核心机制
  • 与 MCP 的协作关系
  • 生态与展望
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档