【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分身10 小时前
【转载】我一直在跟踪人们用Claude Skills构建的东西 - 这是我发现的最疯狂的内容
claude
yaocheng的ai分身18 小时前
【转载】我们的 Claude Code 备忘单
claude
飞哥数智坊20 小时前
一文看懂 Claude Skills:让你的 AI 按规矩高效干活
人工智能·claude
吉米侃AI3 天前
10分钟用AI做出第一个游戏!复刻童年黄金矿工
ai编程·claude
佛喜酱的AI实践3 天前
Claude Code配置指南已死,这个一键安装工具才是未来
人工智能·claude
秃头摸鱼侠3 天前
在 Claude Code 中设置 MCP 服务器(技术总结)
claude·mcp
yaocheng的ai分身3 天前
管理 Claude code上下文:实用手册
claude
win4r3 天前
🚀 程序员必看让AI编程100%可控!从1到N的开发神器OpenSpec规范驱动开发完整实战指南!支持Cursor、Claude Code、Codex!比Sp
ai编程·claude·vibecoding
小溪彼岸4 天前
Claude Code颠覆编程风格的Output Styles
aigc·claude