深度分析 Claude Skills 相比 MCP 的架构优势,包括集成度、易用性、生态,可能重塑 AI 编程工具格局。
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 文件的 frontmatter YAML 中读取每个 skill 的简短说明。这在 token 效率上表现出色:每个 skill 只占用几十个额外的 token,完整细节只在用户请求 skill 能帮助解决的任务时才加载。
Anthropic 在今早发布的 slack-gif-creator skill 示例中的元数据是这样的:
用于创建针对 Slack 优化的动画 GIF 的工具包,包含尺寸约束验证器和可组合的动画原语。当用户请求从"给我制作一个 Slack GIF,X 在做 Y"之类的描述中为 Slack 创建动画 GIF 或 emoji 动画时,该 skill 就适用。
我刚在 Claude 移动网页应用中对 Sonnet 4.5 试了这个 skill。首先我在设置中启用了 slack-gif-creator skill,然后提示:
Make me a gif for slack about how Skills are way cooler than MCPs
Claude 为我制作了这个 GIF。点击播放(它几乎致癌,所以有点击播放机制):
好吧,这个特定的 GIF 太烂了,但 skills 的妙处在于它们很容易迭代改进。
这是它写的 Python 脚本中的一些值得注意的片段,评论是我加的:
# Start by adding the skill's directory to the Python path
import sys
sys.path.insert(0, '/mnt/skills/examples/slack-gif-creator')
from PIL import Image, ImageDraw, ImageFont
# This class lives in the core/ directory for the skill
from core.gif_builder import GIFBuilder
# ... code that builds the GIF ...
# Save it to disk:
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")
# Use the check_slack_size() function to confirm it's small enough for 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 机制完全依赖于模型能够访问文件系统、导航文件系统的工具以及在该环境中执行命令的能力。
这是当今 LLM 工具的常见模式——ChatGPT 代码解释器早在 2023 年初就是这方面的第一个大例子,后来这种模式通过 Cursor、Claude Code、Codex CLI 和 Gemini CLI 等编码 agent 工具扩展到了本地机器。
这个需求是 skills 与之前其他尝试扩展 LLM 能力(如 MCP 和 ChatGPT 插件)之间最大的区别。这是一个重大的依赖,但令人困惑的是它释放了多少新的能力。
skills 如此强大且易于创建这一事实,再次证明为 LLM 提供安全编码环境的合理性。这里"安全"这个词做了很多工作!我们确实需要弄清楚如何最好地沙盒化这些环境,使得 prompt 注入等攻击造成的伤害控制在可接受的范围内。
早在一月,我对 AI/LLM 做出了一些鲁莽的预测,包括"agents"会再次失败:
我认为 2025 年我们会看到大量关于 agents 的炒作,但我预期结果会让大多数对这个术语感到兴奋的人感到巨大失望。我预期许多资金会被浪费在追逐几个不同的、定义不清的梦想上,这些梦想共享这个名称。
我完全错了。无论你选择使用许多相互冲突的定义中的哪一个,2025 年确实是"agents"的年代(我最终定居在"工具在循环中")。
从后来看,Claude Code 的名称取得不好。它不是纯粹的编码工具:它是用于通用计算机自动化的工具。任何你可以通过在计算机上输入命令实现的事情,现在都可以由 Claude Code 自动化。它最好被描述为通用 agent。Skills 让这一点变得更加明显和明确。
我发现这个技巧的潜在应用令人眼花缭乱。只是用我数据新闻的思维方式思考这个问题:想象一个充满 skills 的文件夹,涵盖如下任务:
从哪里获得美国人口普查数据以及如何理解其结构
如何使用适当的 Python 库将不同格式的数据加载到 SQLite 或 DuckDB
如何在线发布数据,作为 S3 中的 Parquet 文件或作为表推送到 Datasette Cloud
一个由经验丰富的数据记者定义的 skill,讲述如何最好地在新数据集中找到有趣的故事
一个描述如何使用 D3 构建干净、易读数据可视化的 skill
恭喜,你刚刚构建了一个"数据新闻 agent",可以发现和帮助发布关于美国人口普查新数据的故事。而你只用了一个充满 Markdown 文件的文件夹和也许几个示例 Python 脚本。
Model Context Protocol 自去年 11 月初发布以来吸引了巨大的关注。我喜欢开玩笑说它之所以火爆的原因之一是每家公司都知道他们需要一个"AI 战略",而构建(或宣布)MCP 实现是达到这个目的的简单方法。
随着时间推移,MCP 的局限性开始显现。最重要的是 token 使用方面:GitHub 官方的 MCP 本身就臭名昭著地消耗几万个 token 的上下文,一旦你在此基础上添加了几个,就几乎没有空间供 LLM 做有用的工作了。
自从我认真对待编码 agents 以来,我对 MCP 的兴趣就减弱了。几乎所有我可能用 MCP 实现的东西都可以用 CLI 工具来处理。LLM 知道如何调用 cli-tool --help,这意味着你不必花许多 token 描述如何使用它们——模型可以在需要时稍后弄清楚。
Skills 有完全相同的优势,现在我甚至不需要实现一个新的 CLI 工具。我可以放入一个 Markdown 文件描述如何做一个任务,只在额外的脚本有助于提高可靠性或效率时才添加它们。
Skills 最令人兴奋的事情之一是它们有多容易分享。我预期许多 skills 将实现为单个文件——更复杂的将是一个包含几个更多文件的文件夹。
Anthropic 有 Agent Skills 文档和 Claude Skills 食谱。我已经在思考我可能自己构建的 skills 想法,比如关于如何构建 Datasette 插件的想法。
我喜欢 skills 设计的另一件事是完全没有任何东西阻止它们与其他模型一起使用。
你现在可以直接获取一个 skills 文件夹,指向 Codex CLI 或 Gemini CLI 并说"读 pdf/SKILL.md 然后为我创建一个描述这个项目的 PDF",它会工作,尽管这些工具和模型没有内置的 skills 系统知识。
我预期我们会看到 Skills 的寒武纪大爆发,这会让今年的 MCP 热潮看起来平凡无奇。
我看到过一些对 skills 的反对意见,说它们太简单了,甚至不算一个功能。许多人已经尝试过把额外的说明放在 Markdown 文件中并告诉编码 agent 在继续任务前阅读该文件的技巧。AGENTS.md 是一个建立得很好的模式,该文件已经可以包含"在尝试创建 PDF 之前阅读 PDF.md"的指示。
skills 设计的核心简洁性是为什么我对它如此兴奋的原因。
MCP 是一个完整的协议规范,涵盖主机、客户端、服务器、资源、提示、工具、采样、根、引发和三种不同的传输方式(stdio、可流化的 HTTP 和最初的 SSE)。
Skills 是带有极少 YAML 元数据的 Markdown 和一些可选脚本,无论你在环境中能让什么可执行。它们感觉更接近 LLM 的精神——放入一些文本并让模型搞清楚。
它们将困难的部分外包给 LLM 框架和相关的计算机环境。鉴于过去几年我们对 LLM 运行工具能力所学到的一切,我认为这是一个非常明智的策略。