根据文档,我来为你总结**子代理(Sub-agents)和技能(Skills)**的主要区别:
核心区别对比
| 方面 | 子代理 (Sub-agents) | 技能 (Skills) |
|---|---|---|
| 本质 | 专门化的 AI 代理 | 专业功能/知识包 |
| 定义方式 | ✅ 编程方式(推荐)或文件系统 | ❌ 只能通过文件系统定义 |
| 位置 | .claude/agents/*.md | .claude/skills/*/SKILL.md |
| 上下文 | 独立上下文,与主代理隔离 | 在主代理上下文中执行 |
| 并行执行 | ✅ 支持多个子代理并发运行 | ❌ 不支持 |
| 编程 API | ✅ 通过 agents 参数定义 | ❌ SDK 不提供编程 API |
子代理 = 另一个 AI
子代理本质上是另一个具有推理能力的 AI 代理:
- 有自己的系统提示定义角色和行为
- 有独立的上下文,不会污染主对话
- 可以限制工具访问
- 适合:代码审查、测试执行、安全扫描等需要独立推理的任务
agents: {
'code-reviewer': {
description: '代码审查专家',
prompt: '您是代码审查专家...', // 独立的系统提示
tools: ['Read', 'Grep'], // 工具限制
model: 'sonnet' // 可指定不同模型
}
}
技能 = 知识 + 指令 + 资源
技能是打包的专业功能:
- 包含指令、脚本和支持资源
- 在代码执行环境中运行
- 更像是"说明书 + 工具包"
- 适合:处理 PDF、Excel、特定领域的操作流程
.claude/skills/processing-pdfs/
└── SKILL.md # 包含 YAML 前置内容和 Markdown 指令
简单类比
| 概念 | 类比 |
|---|---|
| 子代理 | 请一个专家同事帮你做某件事(他有自己的思考) |
| 技能 | 给 Claude 一本操作手册让他按步骤执行 |
何时使用哪个?
- 用子代理:需要独立推理、上下文隔离、并行处理的场景
- 用技能:需要特定领域知识、固定操作流程、可复用的专业功能