从Prompt到Agent Skills:Anthropic如何定义大模型应用的终极抽象?

2025年10月,Anthropic发布了Agent Skills——一个将AI从通用助手转变为领域专家的新范式。本文深入剖析Agent Skills的设计哲学、技术架构与实践生态,揭示其如何与MCP协同,成为大模型应用的终极抽象。

引言:当“提示词工程”走到尽头

如果你用过Claude、ChatGPT或任何大模型,你一定经历过这样的循环:为了让AI完成一个特定任务,你需要反复调试提示词,把同样的上下文一遍又一遍地塞进对话。每遇到一个新场景,就要重新“培训”一次AI。

Anthropic在2025年10月推出的Agent Skills,试图终结这个循环。Skills将AI从“通用对话者”转变为“领域专家”,通过可复用的知识包,让AI掌握特定的工作流程、企业规范和专业技能。

一、什么是Agent Skills?——一个文件夹就是一个能力

1.1 核心定义

Agent Skills是Anthropic定义的一种模块化能力封装标准。每个Skill是一个包含SKILL.md文件的文件夹,外加可选的脚本、模板和参考资料。

---
name: roll-dice
description: Roll dice using a random number generator. Use when asked to roll a die (d6, d20, etc.), roll dice, or generate a random dice roll.
---

To roll a die, use the following command that generates a random number from 1
to the given number of sides:

```bash
echo $((RANDOM % <sides> + 1))

Replace <sides> with the number of sides on the die (e.g., 6 for a standard
die, 20 for a d20).


这个不到20行的Markdown文件,就是一个完整的Skill——它教会AI如何执行“掷骰子”这个特定任务。

### 1.2 三个层级,渐进式加载

Skills的核心设计哲学是**渐进式披露(Progressive Disclosure)**:信息分阶段加载,而不是一次性塞入上下文窗口。

| 层级 | 内容 | 加载时机 | Token成本 |
|------|------|----------|-----------|
| **第1层:元数据** | YAML frontmatter中的name和description | 启动时始终加载 | 约100 tokens/个 |
| **第2层:指令** | SKILL.md的主体内容 | 任务匹配时加载 | <5k tokens |
| **第3层:资源** | 脚本、模板、参考资料 | 按需加载 | 几乎无限制 |

这种设计意味着你可以安装几十个Skills,而Claude只会在需要时才加载具体指令。未触发的Skill不会消耗任何上下文token。

## 二、Skills vs MCP:一场被误解的“替代战争”

很多人问:Skills会取代MCP吗?答案是否定的。两者解决的是完全不同的问题。

### 2.1 核心区别

| 维度 | Agent Skills | MCP |
|------|-------------|-----|
| **解决什么问题** | “怎么做才对” | “能不能做” |
| **本质** | 声明式配置标准 | 通信协议标准 |
| **内容** | 业务规则、流程、规范 | 工具、数据源、API |
| **运行方式** | Markdown文件,零基础设施 | 需要部署运行的服务器 |
| **维护者** | 业务专家、产品经理 | 工程师、SRE |
| **变更频率** | 高(业务规则常变) | 低(接口相对稳定) |

Anthropic自己的判断标准很清晰:**一个Skill解释如何执行一个流程;MCP是Agent需要访问数据库或文件时调用的工具**。

### 2.2 两者的协同模式

一个经典的协同场景:Skill告诉Agent“部署之前需要检查数据库迁移状态、监控错误率、校验API健康度”,然后Skill通过MCP工具调用`database_mcp.get_migration_status()`等真正执行这些检查。

**Skill提供“知识”(该怎么做),MCP提供“能力”(怎么做到)。**

## 三、如何构建一个Agent Skill?

### 3.1 标准目录结构

pdf-skill/
├── SKILL.md # 核心指令文件(必需)
├── FORMS.md # 表单填写指南
├── REFERENCE.md # 详细API参考
└── scripts/
└── fill_form.py # 可执行脚本


`SKILL.md`包含YAML frontmatter和Markdown指令,是Skill的入口文件。

### 3.2 代码审查Skill实战

```markdown
---
name: code_review_standards
description: 应用团队的代码审查规范。在审查合并请求或分析代码质量时使用。
---

# 代码审查规范

## 审查清单
- **安全性**:检查SQL注入、XSS攻击、权限绕过漏洞
- **性能**:标记N+1查询、缺失索引、内存泄漏问题
- **编码风格**:严格遵循团队规范

## 示例

### 规范写法:参数化查询
```python
cursor.execute("SELECT * FROM users WHERE id = ?", (user_id,))

不规范写法:字符串拼接

cursor.execute(f"SELECT * FROM users WHERE id = {user_id}")

这个Skill让Claude在代码审查时自动加载团队的编码规范,提供一致的审查标准。

### 3.3 在Python中使用Agent Skills

使用`agent-skills`库可以编程化管理Skills:

```python
from agent_skills import SkillDirectory

# 初始化技能目录
skills = SkillDirectory("./workspace/skills")

# 创建技能
skills.create(
    name="analyze_csv",
    code='''
async def analyze_csv(file_path: str) -> dict:
    from generated.servers.filesystem import read_file
    content = await read_file({"path": file_path})
    lines = content.split("\\n")
    headers = lines[0].split(",") if lines else []
    return {
        "rows": len(lines) - 1,
        "columns": len(headers),
        "headers": headers,
    }
''',
    description="Analyze a CSV file and return statistics",
)

# 搜索并执行技能
matches = skills.search("data analysis")
for skill in matches:
    print(f"Found: {skill.name}")

四、Skills的技术生态

4.1 主流框架的Skills支持

平台/框架支持方式状态
Claude API通过/v1/skills端点管理,需配合代码执行工具正式发布
Claude Code自动发现.claude/skills/目录下的Skills正式发布
claude.ai通过Settings > Features上传zip包Pro/Max/Team/Enterprise可用
OpenAI ChatGPT已采用相同格式已支持
OpenAI Codex CLI已采用相同格式已支持
LangChaindeepagents-CLI已集成Skills支持已支持
VS Code (Copilot)通过.agents/skills/目录自动发现已支持

4.2 LangChain + Skills集成

LangChain已经在deepagents-CLI中集成了Skills支持:

# 创建Skills目录并复制示例技能
mkdir -p ~/.deepagents/agent/skills
cp -r examples/skills/web-research ~/.deepagents/agent/skills/

# 列出可用Skills
deepagents skills list

# Agent会自动发现并加载匹配的Skills

4.3 skillkit:轻量级Skills实现

skillkit是一个Python库,将Anthropic的Agent Skills功能带给任何Python Agent:

from skillkit import SkillManager

# 创建管理器,默认扫描./.claude/skills/
manager = SkillManager()

# 发现并列出Skills
manager.discover()
for skill in manager.list_skills():
    print(f"{skill.name}: {skill.description}")

# 调用技能
result = manager.invoke_skill("code-reviewer", "Review function calculate_total()")

五、与MCP的协同:完整架构

在实践中,Skills和MCP构成两层互补的架构:

┌─────────────────────────────────────────────────────────────┐
│                    Agent Skills层                           │
│  编码领域知识、业务流程、决策逻辑                            │
│  - 代码审查规范                                            │
│  - 部署验证流程                                            │
│  - 文档处理标准                                            │
└─────────────────────────────────────────────────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────────┐
│                    MCP服务层                               │
│  提供可执行的能力                                          │
│  - 数据库查询工具                                          │
│  - GitHub API工具                                         │
│  - 监控系统工具                                           │
└─────────────────────────────────────────────────────────────┘

六、总结:从“提示词工程”到“知识工程”

Agent Skills代表了大模型应用开发的一次范式转变:

阶段核心活动特点
Prompt Engineering调整提示词一次性、不可复用、不稳定
Agent Skills打包专业知识可复用、标准化、版本可控

Skills将AI应用开发从“调试提示词”升级为“构建知识包”——这是一个更接近软件工程本质的抽象层次。当一个Skill可以像代码一样被版本控制、被审查、被复用,AI应用的可维护性和可靠性就进入了新的阶段。

Anthropic将Agent Skills设计为可移植的开放标准。不论你使用的是Claude、ChatGPT还是其他兼容的Agent,一个Skill都应该能正常工作。这种跨平台的互操作性,让Skills有望成为大模型应用领域的“通用知识格式”,从根本上改变我们构建AI应用的方式。

更多推荐