专注于分布式系统架构AI辅助开发工具(Claude
Code中文周刊)

Anthropic Skills-AI从对话工具到可编程平台的关键一步

#Claude Skills

引言:一个被低估的转折点

当Anthropic在2025年10月宣布Skills功能时,大多数人可能只是把它当成"Claude又加了个新功能"。但如果你仔细观察,你会发现这不是简单的功能叠加,而是AI工程化进程中的一个关键转折点

这让我想起了软件工程史上的几个类似时刻:

  • 从汇编语言到C语言的飞跃
  • 从手写SQL到ORM框架的演进
  • 从原生开发到npm/pip包管理生态的爆发

每一次转折,本质都是同一件事:把不可维护的散装知识,变成可组合的标准化组件

Skills正在对AI做同样的事情。

作为一个在云服务领域摸爬滚打多年的技术负责人,我见过太多"看起来很炫"但实际没用的技术。但Skills不一样——它解决的是AI工程化的核心矛盾:如何让AI的能力可积累、可复用、可维护

这篇文章不会教你怎么用Skills(官方文档已经足够好),我想做的是:用软件工程的视角,深度剖析Skills的技术本质、设计哲学,以及它为什么重要。


第一部分:技术本质 – Skills到底是什么?

1.1 从Prompt到Skill:范式的本质转变

要理解Skills,我们先得理解它要解决的问题。

传统AI工作流的痛点

想象一下,你想让Claude帮你处理一个复杂的Excel报表,按照公司的规范生成财务分析。传统方式是什么?

你需要写一个几百行的prompt:
- 定义Excel的格式要求
- 说明财务指标的计算公式
- 规定图表的样式规范
- 列举各种边界情况的处理方式
- 提供示例输出
...

然后你会发现:

  1. 维护灾难:每次公司规范调整,你得找到并修改所有相关的prompt
  2. 无法复用:团队其他人做类似任务,只能复制你的prompt或者重新写一遍
  3. 不可靠:Claude可能每次生成的公式都不一样,你无法保证输出的一致性
  4. 无法积累:你调教AI的经验,只存在于一个个孤立的对话中

这就像我们在软件工程早期的状态:每个程序员都在手写汇编,代码无法复用,知识无法积累。

Skills带来的范式转变

传统方式:
用户 → 写详细Prompt → Claude理解 → 生成输出(不确定)

Skills方式:
用户 → 简单任务描述 → Claude扫描Skills库 → 匹配相关Skills → 
加载(指令+工具+代码) → 专业输出(可靠)

看到区别了吗?核心转变是:

  1. 从"每次告诉AI怎么做"变成"给AI预装能力包"
  2. 从"自然语言描述"变成"结构化知识+可执行代码"
  3. 从"黑盒生成"变成"可控组件组合"

这不是量变,是质变。

1.2 架构设计:文件夹即能力

根据Anthropic的描述,一个Skill本质上是一个文件夹,包含:

my-skill/
├── SKILL.md          # 技能的核心描述和指令
├── tools/            # 可调用的工具脚本
├── resources/        # 相关资源文件
└── examples/         # 示例和模板

这个设计极其优雅,因为它遵循了一个Unix哲学:一切皆文件

SKILL.md的核心作用

我猜测SKILL.md大概包含这些内容:

# Skill名称

## 触发条件
描述什么情况下应该激活这个Skill
(可能是关键词匹配、任务类型识别、或者更智能的语义理解)

## 能力描述
这个Skill能做什么,有什么限制

## 指令集
具体的操作指令、规则、约束条件

## 工具调用
可以使用的代码工具和调用方式

## 资源引用
需要加载的文档、模板、配置文件

关键在于:SKILL.md不是给人看的文档,而是给AI执行的"程序"

这就像:

  • Dockerfile定义容器
  • package.json定义JS项目
  • requirements.txt定义Python依赖

SKILL.md定义了一个"AI能力单元"。

1.3 按需加载的实现猜测

最精妙的设计在于:Skills不是把所有东西都塞进context,而是按需加载

我推测实现机制可能是这样的:

第一阶段:轻量级扫描

用户输入 → Claude快速扫描所有SKILL.md的元信息(触发条件、能力描述)
→ 匹配相关Skills → 计算相关性分数 → 选出Top-K个Skills

这一步是轻量的,可能只读取SKILL.md的前几行,不加载完整内容。

第二阶段:精准加载

确定需要的Skills → 加载完整的SKILL.md → 加载必要的工具和资源
→ 将Skills的上下文注入到当前任务 → 执行

这一步才真正消耗context,但已经过滤掉了无关内容。

第三阶段:智能组合

如果多个Skills都相关 → Claude协调它们的使用顺序
→ 处理Skills之间的依赖关系 → 组合执行

这就像Linux的动态链接库机制:程序启动时不加载所有库,只在需要时加载特定的.so文件。

为什么这个设计重要?

因为它解决了AI的"context长度诅咒"问题:

  • 如果每个Skill都要预加载,context很快就爆了
  • 如果完全不加载,AI就没有专业能力
  • 按需加载是唯一的平衡点

这是一个O(1)的查找 + O(k)的加载的设计,而不是O(n)的暴力搜索。


第二部分:Linus式品味分析

作为一个长期信奉Linus Torvalds技术哲学的人,我看到Skills的设计时,第一反应是:这是有Good Taste的设计

什么是Good Taste?Linus在一次演讲中说:好的代码不是聪明地处理各种特殊情况,而是消除特殊情况

让我们用这个标准审视Skills。

2.1 消除特殊情况:统一的格式

糟糕的设计(假设):

- Claude应用里用一种格式定义技能
- API里用另一种格式
- Claude Code里又是第三种格式
- 每种场景都有特殊的配置方式

Skills的实际设计

一个统一的SKILL.md格式,到处都能用

这就是消除特殊情况。你不需要学习三套系统,不需要维护三份文档,不需要处理三种兼容性问题。

构建一次,到处运行——这不就是Java当年的承诺吗?但这次,Anthropic真的做到了。

2.2 数据结构优先:Skills作为"能力对象"

Linus有个著名的观点:"坏程序员关心代码,好程序员关心数据结构"。

Skills的核心就是定义了一个优雅的数据结构:

# 伪代码表示
class Skill:
    metadata: {
        name: str
        description: str
        triggers: List[str]
    }
    instructions: str
    tools: List[ExecutableCode]
    resources: List[File]

    def match(self, user_task) -> float:
        """计算与任务的相关性"""

    def load(self) -> Context:
        """加载到context"""

    def execute(self, task) -> Result:
        """执行任务"""

有了这个数据结构,很多问题就自然解决了:

  • 版本管理?每个Skill有版本号,Git轻松管理
  • 依赖关系?Skills之间可以声明依赖
  • 冲突检测?对比metadata就能发现冲突
  • 能力发现?扫描所有Skills的metadata即可

好的数据结构让复杂的问题变简单——这就是Linus所说的品味。

2.3 简洁执念:自动匹配 vs 手动选择

想象两种设计:

设计A(糟糕)

用户每次任务前,必须手动选择要使用的Skills
就像每次调用函数前,你得手动include所需的库

设计B(Skills的实际设计)

用户只说任务,Claude自动匹配Skills
就像现代IDE的自动import

这又是一次"消除特殊情况":用户不需要知道"我现在该用哪个Skill",系统自动处理。

但这里有个微妙之处:自动匹配不是简单的"智能化",而是把复杂度推给了系统,而不是用户

这是好设计的标志:让复杂的事情在幕后发生,让简单的接口暴露给用户

2.4 向后兼容:不破坏现有工作流

Skills最聪明的一点:它是增强,不是替代

  • 你不用Skills,Claude照常工作
  • 你部分使用Skills,现有prompt依然有效
  • Skills和传统prompt可以混用

这就是Linus的另一条铁律:"Never break userspace"(永远不破坏用户空间)。

Linux内核30年来一直遵循这个原则:新功能可以加,但不能让旧程序跑不起来。

Skills也是同样的智慧:渐进式增强,而非革命性重构


第三部分:工程价值 – 解决了什么真问题?

技术分析归技术分析,但作为一个技术负责人,我更关心:这玩意到底能解决什么实际问题?

3.1 痛点1:Prompt的维护性灾难

举个真实场景:

我们团队用Claude做代码review,初期我写了一个很长的prompt,定义了代码规范、安全检查项、常见问题等等。效果很好。

然后问题来了:

  1. 团队其他人也想用,我得把prompt复制给他们
  2. 代码规范更新了,我得通知所有人修改prompt
  3. 不同项目有不同要求,大家开始各自魔改prompt
  4. 半年后,没人记得"标准版本"是什么样的

这就是Prompt的维护性灾难

如果用Skills呢?

创建一个 code-review.skill/
├── SKILL.md          # 代码规范、检查规则
├── tools/
│   └── security_checker.py  # 安全检查脚本
└── resources/
    └── team_standards.md    # 团队规范文档

提交到Git仓库
团队成员通过版本控制共享
更新时只需Pull最新版本

突然,一切变得可维护了:

  • ✅ 单一可信源(Single Source of Truth)
  • ✅ 版本控制
  • ✅ 团队协作
  • ✅ 持续改进

这不是AI能力的提升,而是工程化能力的提升

3.2 痛点2:生成式AI的不可靠性

生成式AI有个根本性问题:你无法保证输出的一致性

同样的输入,Claude可能生成不同的Excel公式、不同的代码实现、不同的文档格式。对于需要精确性的场景(财务报表、数据分析、系统配置),这是灾难性的。

Skills的解法:该用代码的地方用代码

Skills可以包含可执行代码,这意味着:

# 在Skill中嵌入Python代码
def calculate_financial_metrics(data):
    """
    财务指标计算 - 这是确定性的
    不用AI生成,用传统代码保证正确性
    """
    revenue = sum(data['sales'])
    cost = sum(data['expenses'])
    profit_margin = (revenue - cost) / revenue
    return {
        'revenue': revenue,
        'profit_margin': profit_margin
    }

这样,工作流变成:

  1. Claude理解用户意图(这需要AI)
  2. 调用Skill中的代码计算数据(这用传统编程)
  3. Claude生成报告文本(这需要AI)

混合模式:AI干AI擅长的,代码干代码擅长的

这解决了一个根本性问题:不是所有事情都该用生成式AI做。有些事情,传统编程更可靠、更快速、更便宜。

Skills提供了这个混合的框架。

3.3 痛点3:企业知识的沉淀困境

公司花了大量精力调教AI,让它理解业务流程、品牌规范、技术架构。但这些知识都散落在:

  • 各个员工的对话历史里
  • 邮件线程里
  • 文档的各个角落里
  • 某个人的大脑里

无法形成企业级的知识资产

Skills改变了这一点:

企业可以建立私有Skills库:
├── brand-guidelines.skill/     # 品牌规范
├── security-compliance.skill/  # 安全合规检查
├── report-templates.skill/     # 报告模板
├── code-standards.skill/       # 代码标准
└── onboarding.skill/           # 新员工入职指导

这些Skills是:

  • 版本化的企业知识
  • 可复用的最佳实践
  • 可持续改进的资产
  • 可审计的合规工具

企业在AI时代的知识管理,从"隐性知识"变成了"显性资产"。


第四部分:技术类比 – 软件工程的视角

理解一个新技术的最好方式,是找到它在已知领域的类比。Skills让我想到了几个经典的软件工程概念。

4.1 Skills ≈ Package Manager(包管理器)

npm、pip、cargo做的事情是什么?

1. 标准化:定义包的格式(package.json、setup.py)
2. 发现:提供包的搜索和浏览(npmjs.com)
3. 分发:自动下载和安装
4. 依赖管理:解决包之间的依赖关系
5. 版本控制:管理不同版本的兼容性

Skills正在做同样的事情,只是对象从"代码包"变成了"AI能力包":

1. 标准化:SKILL.md定义格式
2. 发现:anthropics/skills市场(已提到)
3. 分发:通过版本控制共享
4. 依赖管理:Skills可以声明依赖其他Skills
5. 版本控制:Git管理版本

我大胆预测:未来可能会出现类似的命令:

# 安装一个Skill
skill install financial-analysis

# 更新所有Skills
skill update

# 查看已安装的Skills
skill list

# 发布自己的Skill
skill publish my-custom-skill

甚至可能有一个Skills的中央仓库,像npm registry一样。

这意味着什么?

想想npm对JavaScript生态的意义:

  • 爆发式的社区贡献
  • 标准化的代码复用
  • 快速迭代的能力

Skills可能对AI生态做同样的事情。

4.2 Skills ≈ Plugin System(插件系统)

VSCode为什么这么成功?因为它的插件系统:

  • 核心编辑器保持简洁
  • 功能通过插件扩展
  • 第三方开发者可以贡献插件
  • 用户按需安装

Claude + Skills = 同样的模式:

  • Claude核心保持通用性
  • Skills提供专业能力
  • 企业和开发者可以创建自定义Skills
  • 用户自动加载相关Skills

插件系统的成功要素

  1. 稳定的API:插件不会因为核心更新而失效
  2. 隔离性:插件之间互不干扰
  3. 可发现性:用户能轻松找到需要的插件
  4. 简单的开发流程:降低贡献门槛

Skills是否具备这些要素?

  • ✅ 稳定的API:SKILL.md的标准格式
  • ❓ 隔离性:还不确定,Skills之间会冲突吗?
  • ✅ 可发现性:anthropics/skills市场
  • ✅ 简单开发:内置的skill-creator辅助创建

基本具备了成功插件生态的条件。

4.3 Skills ≈ 领域特定语言(DSL)?

这个类比更抽象,但可能更深刻。

什么是DSL?是为特定领域设计的语言,比如:

  • SQL:数据查询语言
  • HTML/CSS:网页描述语言
  • Dockerfile:容器定义语言

SKILL.md是不是一种AI能力定义语言

它定义的不是"如何计算"(传统编程),而是:

  • 什么时候该做什么(触发条件)
  • 做事的规则和约束(指令集)
  • 可以使用的工具(代码和资源)

这是一种声明式的能力定义

为什么这很重要?

因为声明式比命令式更高级:

  • SQL:你说"我要什么数据",数据库决定怎么查
  • Dockerfile:你说"容器长什么样",Docker决定怎么构建
  • SKILL.md:你说"这个能力是什么",Claude决定怎么用

抽象层次的提升,是技术进步的标志

从这个角度看,Skills不只是功能添加,而是定义了一种新的抽象:能力即声明


第五部分:深度猜测 – 技术实现的可能性

作为一个技术人,我忍不住要猜测Skills在内部是怎么实现的。以下纯属推测,但可能接近真相。

5.1 Skills的匹配机制

问题:用户输入一个任务,Claude怎么知道该用哪个Skill?

简单方案(我猜Anthropic不会用):

关键词匹配:
SKILL.md里定义关键词列表,用户输入包含关键词就触发
→ 太粗糙,会有大量误匹配

更可能的方案

语义相似度匹配:
1. 每个Skill的description生成embedding向量
2. 用户输入也生成embedding
3. 计算余弦相似度,选出Top-K
4. 用小模型快速做一次精确性判断

这是一个两阶段检索(Two-stage Retrieval)的经典架构:

  • 第一阶段:向量搜索,快速筛选候选
  • 第二阶段:精确匹配,确定最终选择

进一步优化的可能

主动学习:
Claude在使用过程中记录:
- 哪些任务匹配了哪些Skills
- 用户是否手动调整过匹配结果
- 哪些Skills经常一起使用

基于这些数据,不断优化匹配模型

这就像搜索引擎的点击率优化,是一个持续改进的过程。

5.2 Context的动态管理

问题:Context窗口有限,怎么在加载Skills的同时,不影响对话的连贯性?

我的猜测

Claude内部可能有一个Context分区机制:

[系统Prompt区]       - 固定,不可修改
[Skills上下文区]     - 动态加载,当前任务相关的Skills
[对话历史区]         - 保留最近N轮对话
[当前任务区]         - 用户当前输入和Claude的工作空间

优先级:
系统Prompt > Skills上下文 > 当前任务 > 对话历史

当Context快满时:
1. 首先压缩对话历史
2. 然后卸载不再相关的Skills
3. 必要时总结当前任务状态,释放空间

这就像操作系统的内存管理:

  • 工作集理论:只保留当前需要的"页面"
  • LRU淘汰:最近最少使用的先卸载
  • 按需加载:需要时再加载回来

5.3 代码执行的安全隔离

Skills可以包含可执行代码,这带来一个巨大的安全问题:怎么保证恶意代码不伤害系统?

必须有的机制

沙箱执行环境:
- 类似Docker容器的隔离
- 限制文件系统访问
- 限制网络访问
- 限制计算资源(CPU、内存)
- 超时自动终止

可能的实现

# 伪代码
class SkillExecutor:
    def execute_code(self, skill_code):
        # 在隔离环境中执行
        sandbox = Sandbox(
            max_memory=100MB,
            max_cpu_time=5s,
            network_access=False,
            file_system=read_only
        )

        result = sandbox.run(skill_code)

        if result.timeout:
            raise SkillExecutionError("Skill执行超时")
        if result.error:
            raise SkillExecutionError(f"Skill执行失败: {result.error}")

        return result.output

这跟现代云函数(Lambda、Cloud Functions)的隔离机制类似。

更深的问题:如何审核第三方Skills?

如果未来有一个公开的Skills市场,Anthropic必须:

  • 静态代码分析,检测恶意模式
  • 动态沙箱测试,观察行为
  • 社区评审和举报机制
  • 官方认证和信任等级

这是一个巨大的工程挑战,也是Skills生态能否成功的关键。

5.4 Skills的组合与冲突

问题:如果两个Skills都匹配当前任务,怎么办?

场景1:互补型组合

任务:生成一份销售报告
匹配到的Skills:
- excel-formatter.skill:处理Excel格式
- sales-analysis.skill:销售数据分析
- company-branding.skill:公司品牌规范

理想行为:三个Skills协同工作
1. sales-analysis分析数据
2. excel-formatter格式化输出
3. company-branding应用品牌元素

这需要一个Skills协调机制

class SkillOrchestrator:
    def coordinate(self, matched_skills, task):
        # 分析Skills之间的关系
        dependencies = self.analyze_dependencies(matched_skills)

        # 构建执行DAG(有向无环图)
        execution_plan = self.build_dag(dependencies)

        # 按拓扑序执行
        for skill in execution_plan:
            result = skill.execute(task)
            task.update(result)  # 每个Skill的输出作为下一个的输入

场景2:冲突型碰撞

任务:生成代码
匹配到的Skills:
- python-style.skill:Python风格指南(要求用下划线命名)
- java-style.skill:Java风格指南(要求用驼峰命名)

这两个Skills冲突了!

可能的解决方案:

  1. 优先级机制:每个Skill有权重,高优先级的覆盖低优先级
  2. 用户选择:检测到冲突时,询问用户
  3. 上下文推断:根据任务内容判断(代码是Python就用Python-style)

这又回到了软件工程的经典问题:依赖冲突解决

npm的解决方案是:允许同一个包的多个版本共存,通过node_modules的嵌套结构隔离。

Skills可能也需要类似的机制。


第六部分:对未来的想象

技术的价值在于它开启的可能性。Skills会把我们带向哪里?

6.1 短期影响(6个月-1年)

Skills市场的兴起

  • 类似Chrome应用商店、VSCode插件市场
  • 个人开发者可以发布Skills
  • 企业购买垂直领域的专业Skills
  • 可能出现"Skills开发"作为一种新职业

企业级应用的爆发

  • 每个企业都会建立私有Skills库
  • Skills成为企业AI知识管理的标准方式
  • 咨询公司开始提供"企业Skills定制服务"

教育和培训的转变

  • 从"教你怎么写prompt"变成"教你怎么设计Skills"
  • 出现Skills工程师认证
  • 大学可能开设"AI能力工程"课程

6.2 中期演化(2-3年)

AI应用的开发模式转变

现在的AI应用开发:

编写复杂的prompt → 调用API → 后处理输出 → 集成到应用

未来的AI应用开发:

组合现成的Skills → 配置组合逻辑 → 直接部署

就像Web开发从"手写HTML"变成"组合React组件"。

垂直领域的专业化

  • 出现"医疗Skills包"、"法律Skills包"、"金融Skills包"
  • 这些Skills包含领域知识、合规检查、专业工具
  • 购买一个领域Skills包,就能让AI成为该领域的专家

Skills的依赖管理生态

# 未来可能的SKILL.md
name: advanced-financial-analysis
version: 2.1.0
dependencies:
  - excel-processor: ^1.5.0
  - data-visualization: ^3.2.0
  - accounting-standards: 2.0.1

这是完整的包管理生态。

6.3 长期想象(5年+)

AI能力的商品化

  • Skills成为可交易的数字商品
  • 企业的核心竞争力之一,是其私有Skills库
  • 可能出现Skills的版权、专利问题

AI的"操作系统化"

Claude本身 = 操作系统内核
Skills = 应用程序
用户任务 = 进程

类比:
Android系统 → Claude平台
Google Play → Skills Market
APK文件 → SKILL.md包

AI不再是一个"智能助手",而是一个可编程的计算平台

"AI即服务"的新形态

  • 企业不再自己训练大模型
  • 而是购买基础模型 + 订阅Skills服务
  • Skills提供商成为新的云服务商

想象一下AWS的场景:

  • EC2 = 计算资源
  • S3 = 存储资源
  • Claude = AI资源
  • Skills Marketplace = AI能力资源

这是云计算的下一个演化阶段。

6.4 潜在的风险

技术乐观主义要警惕,我们也得思考风险:

风险1:锁定效应(Vendor Lock-in)

  • 如果大量业务依赖Claude的Skills
  • Anthropic提价或改变政策怎么办?
  • Skills能否迁移到其他AI平台?

风险2:安全性担忧

  • 第三方Skills的代码如何审计?
  • 企业的私密数据会不会泄露?
  • 恶意Skills的防御机制是否足够?

风险3:复杂度爆炸

  • 当一个任务匹配了20个Skills
  • Skills之间的依赖关系形成巨大的图
  • 系统会不会变得不可维护?

风险4:知识产权纠纷

  • Skills中包含的企业知识,版权归谁?
  • 员工离职带走Skills,算商业机密泄露吗?
  • Skills的授权和分发模式如何设计?

这些问题没有简单答案,但必须提前思考。


结论:这只是开始

回到开头的问题:Skills是不是AI工程化的转折点?

我的答案是:是的,而且它的意义被低估了

Skills做对了什么?

  1. 标准化:定义了AI能力的标准格式
  2. 模块化:让AI能力可组合、可复用
  3. 工程化:用软件工程的方法管理AI能力
  4. 生态化:为社区贡献和商业化奠定基础

它标志着什么?

从"调教AI"到"工程化AI能力"的转变
从"孤立对话"到"知识资产"的转变
从"黑盒工具"到"可编程平台"的转变

对我们意味着什么?

作为技术从业者,我们需要:

  • 学习"能力工程"的思维方式
  • 思考如何把团队知识封装成Skills
  • 关注Skills生态的演化
  • 警惕潜在风险,提前规划

最后的思考

软件工程用了50年,从汇编走到今天的高级语言和包管理生态。

AI工程化会更快。

Skills可能就是那个启动按钮。


参考资料

  1. Anthropic官方博客:Claude Skills: Customize AI for your workflows
  2. Linus Torvalds on Good Taste in Coding(TED演讲)
  3. Unix哲学:《The Art of Unix Programming》, Eric S. Raymond
  4. 包管理器的演化历史:npm、pip、cargo的设计哲学
  5. Plugin系统的成功案例:VSCode Extension API设计

后记

这篇文章写作时(2025年10月20日),Skills功能刚推出不久。我的很多猜测可能不准确,但思考的方向应该是对的。

如果你对Skills有更深的理解,或者有实际使用经验,欢迎讨论。

技术的乐趣,就在于探索未知。

赞(0)
未经允许不得转载:Toy Tech Blog » Anthropic Skills-AI从对话工具到可编程平台的关键一步

评论 抢沙发

十年稳如初 — LocVPS,用时间证明实力

10+ 年老牌云主机服务商,全球机房覆盖,性能稳定、价格厚道。

老品牌,更懂稳定的价值你的第一台云服务器,从 LocVPS 开始