【simonwillison】Claude Skills 很棒,可能比 MCP 更重要

转载

Anthropic 今天早上推出了 Claude Skills,这是一种让模型获得新能力的新模式:

Claude 现在可以使用 Skills 来提升其在特定任务中的表现。Skills 是包含指令、脚本和资源的文件夹,Claude 可以在需要时加载它们。

Claude 只会在与当前任务相关时访问某个 skill。当被使用时,skills 会让 Claude 在专门任务上表现得更好,比如处理 Excel 文件或遵循你组织的品牌指南。

他们的工程博客有更详细的解释。还有一个新的 anthropics/skills GitHub 仓库。

(我上周五逆向工程并写了关于这个功能的文章时,无意中抢先了他们的宣布!)

Skills 在概念上极其简单:一个 skill 就是一个告诉模型如何做某事的 Markdown 文件,可以选择性地附上额外的文档和预写好的脚本,模型可以运行这些脚本来帮助它完成 skill 所描述的任务。

Claude 的新文档创建能力,伴随着九月发布的新代码解释器功能,结果证明完全是使用 skills 实现的。那些现在在 Anthropic 的仓库中可用,涵盖 .pdf、.docx、.xlsx 和 .pptx 文件。

还有一个额外的细节使这成为一个功能,而不仅仅是磁盘上的一堆文件。在会话开始时,Claude 的各种工具可以扫描所有可用的 skill 文件,并从 Markdown 文件的前言 YAML 中读取每个 skill 的简短解释。这非常节省 token:每个 skill 只占用几十个额外的 token,只有在用户请求 skill 可以帮助解决的任务时才会加载完整的详细信息。

试用 slack-gif-creator skill

这是一个 Anthropic 今天早上发布的示例 slack-gif-creator skill 的元数据:

用于创建为 Slack 优化的动画 GIF 的工具包,具有大小约束验证器和可组合的动画原语。当用户从"为我制作一个 X 做 Y 的 Slack GIF"这样的描述中请求动画 GIF 或表情动画时,此技能适用。

以下是它编写的 Python 脚本中的一些值得注意的片段,注释是我的:

python 复制代码
# 首先将技能的目录添加到 Python 路径
import sys
sys.path.insert(0, '/mnt/skills/examples/slack-gif-creator')

from PIL import Image, ImageDraw, ImageFont

# 这个类位于技能的 core/ 目录中
from core.gif_builder import GIFBuilder

# ... 构建 GIF 的代码 ...

# 将其保存到磁盘:
info = builder.save('/mnt/user-data/outputs/skills_vs_mcps.gif',
                    num_colors=128,
                    optimize_for_emoji=False)

print(f"GIF created successfully!")
print(f"Size: {info['size_kb']:.1f} KB ({info['size_mb']:.2f} MB)")
print(f"Frames: {info['frame_count']}")
print(f"Duration: {info['duration_seconds']:.1f}s")

# 使用 check_slack_size() 函数确认它对于 Slack 足够小:
passes, check_info = check_slack_size('/mnt/user-data/outputs/skills_vs_mcps.gif', is_emoji=False)
if passes:
    print("✓ Ready for Slack!")
else:
    print(f"⚠ File size: {check_info['size_kb']:.1f} KB (limit: {check_info['limit_kb']} KB)")

这相当不错。Slack GIF 需要最大 2MB,所以 skill 包括一个验证函数,模型可以使用它来检查文件大小。如果太大,模型可以再试一次让它更小。

Skills 依赖于编码环境

skills 机制完全依赖于模型能够访问文件系统、导航文件系统的工具以及在该环境中执行命令的能力。

这是当今 LLM 工具的常见模式------ChatGPT 代码解释器是2023 年初的第一个重要例子,后来这个模式通过编码代理工具扩展到本地机器,如 Cursor、Claude Code、Codex CLI 和 Gemini CLI。

这个要求是 skills 与其他先前扩展 LLM 能力的尝试(如 MCP 和 ChatGPT 插件)最大的区别。这是一个重要的依赖,但令人有些困惑的是它解锁了多少新能力。

skills 如此强大且易于创建这一事实,是支持为 LLM 提供安全编码环境的又一个论据。那里的"安全"一词做了很多工作!我们真的需要找出如何最好地沙盒化这些环境,使得诸如提示注入之类的攻击被限制在可接受的损害范围内。

Claude Code 作为通用代理

今年一月我对 AI/LLM 做出了一些鲁莽的预测,包括"代理"将再次失败:

我认为我们将在 2025 年看到更多关于代理的泡沫,但我预计结果会让大多数对这个术语感到兴奋的人大失所望。我预计很多钱将在追逐几个不同的、定义不清的、共享这个名称的梦想时损失掉。

我完全错了。无论你决定使用哪一个许多相互冲突的定义(我最终选择了"循环中的工具"),2025 年真的是"代理"的一年。

Claude Code 事后看来命名不当。它不仅仅是一个编码工具:它是一个通用计算机自动化的工具。你通过向计算机输入命令可以实现的任何事情,现在都可以由 Claude Code 自动化。它最好被描述为[通用代理]。Skills 使这一点更加明显和明确。

我发现这个技巧的潜在应用令人有些眼花缭乱。只是用我的数据新闻思维来思考这一点:想象一个充满 skills 的文件夹,涵盖以下任务:

  • 从哪里获取美国人口普查数据以及如何理解其结构
  • 如何使用适当的 Python 库将不同格式的数据加载到 SQLite 或 DuckDB
  • 如何在线发布数据,作为 S3 中的 Parquet 文件或作为表推送到 Datasette Cloud
  • 由经验丰富的数据记者定义的技能,讨论如何在新数据集中找到有趣的故事
  • 描述如何使用 D3 构建清晰、可读的数据可视化的技能

恭喜,你刚刚构建了一个"数据新闻代理",可以发现并帮助发布关于美国人口普查数据新鲜发布的报道。而你用的是一个充满 Markdown 文件的文件夹,可能还有几个示例 Python 脚本。

Skills 与 MCP 的比较

模型上下文协议去年十一月最初发布以来吸引了巨大的关注。我喜欢开玩笑说它起飞的原因之一是每个公司都知道他们需要"AI 战略",而构建(或宣布)一个 MCP 实现是勾选那个框的简单方法。

随着时间的推移,MCP 的局限性开始显现。最显著的是在 token 使用方面:GitHub 的官方 MCP 本身就著名地消耗数万个 token 的上下文,一旦你添加了更多,LLM 就几乎没有空间来做实际有用的工作了。

自从我开始认真对待编码代理以来,我对 MCP 的兴趣一直在减弱。我可能通过 MCP 实现的几乎所有事情都可以由 CLI 工具来处理。LLM 知道如何调用 cli-tool --help,这意味着你不必花费很多 token 来描述如何使用它们------模型可以在需要时自己弄清楚。

Skills 具有完全相同的优势,只是现在我甚至不需要实现新的 CLI 工具。我可以放一个 Markdown 文件来描述如何做任务,只有在有助于使事情更可靠或更高效时才添加额外的脚本。

Skills 的到来

关于 Skills 最令人兴奋的事情之一是它们多么容易分享。我预计许多 skills 将作为单个文件实现------更复杂的将是一个包含更多文件的文件夹。

Anthropic 有 Agent Skills 文档和一个 Claude Skills Cookbook。我已经在思考我可能自己构建的 skills 的想法,比如如何构建 Datasette 插件的技能。

关于 skills 设计的另一件我喜欢的事情是,完全没有什么阻止它们与其他模型一起使用。

你现在就可以获取一个 skills 文件夹,将 Codex CLI 或 Gemini CLI 指向它,并说"阅读 pdf/SKILL.md 然后为我创建一个描述这个项目的 PDF",它会工作,尽管那些工具和模型没有内置的 skills 系统知识。

我预计我们将看到 Skills 的寒武纪大爆发,这将使今年的 MCP 热潮相形见绌。

简单就是重点

我看到一些人对 skills 的反对,认为它们太简单,几乎不算一个功能。很多人尝试过将额外指令放入 Markdown 文件并告诉编码代理在继续任务之前读取该文件的技巧。AGENTS.md 是一个成熟的模式,该文件已经可以包含"在尝试创建 PDF 之前阅读 PDF.md"的指令。

skills 设计的核心简单性就是为什么我对它如此兴奋。

MCP 是一个完整的协议规范,涵盖主机、客户端、服务器、资源、提示、工具、采样、根、引出和三种不同的传输(stdio、可流式 HTTP 和最初的 SSE)。

Skills 是带有少量 YAML 元数据的 Markdown,以及在环境中可以执行的任何可选脚本。它们感觉更接近 LLM 的精神------扔进一些文本,让模型弄明白。

它们将困难的部分外包给 LLM 工具链和相关的计算机环境。考虑到我们在过去几年中学到的关于 LLM 运行工具的能力,我认为这是一个非常明智的策略。


相关推荐
yaocheng的ai分身8 小时前
【Anthropic新发布】Cowork:Claude Code 适用于你的其他工作
claude
yaocheng的ai分身10 小时前
【转载】每个人都应该更多地使用 Claude Code
claude
flutter11 小时前
从零开始创建一个属于自己的 Claude Code Plugin
claude
奇舞精选1 天前
Claude Code 配置 Figma MCP 实战指南
ai编程·claude
林炳然1 天前
解构 Claude Code 的“手”与“眼”:完整功能列表解析
agent·claude·vibecoding
小小呱呱蛙1 天前
Claude Code 自下而上分析(Slash/Sub Agents/Skills/MCP)带来的启发
agent·claude·mcp
302AI1 天前
大白话聊一聊:Skills就是给AI用的APP
agent·ai编程·claude
XinZong2 天前
【Claude】获取Claude API Key的多种方式全攻略:从入门到精通,再到详解教程!(claude-3.5-haiku-20241022)
openai·claude
win4r2 天前
🚀告别Vibe Coding!用Superpowers让Claude Code写出工程级代码,一次通过零报错!遵循TDD最佳实践!支持Codex和OpenCo
aigc·ai编程·claude
AI首席情报员_阿布2 天前
Claude Skills vs MCP:区别与实战指南
claude