给 Claude 扩能力时,Skills 和 Agents 最容易混。它们的根本差异其实就一个字——上下文:Skill 把指令「装进」你当前的对话,Agent 则在一个「隔离的」上下文里独立干活。这篇讲清楚两者的本质、关键特性、怎么选,以及它们如何组合。
给 Claude 扩展能力时,Skills(技能)和 Agents(子智能体)是最容易被搞混的一对。它们看起来都像「让 Claude 多会一件事」,但底层是两个完全不同的东西。一句话先记住它们的根本差异——就一个字:上下文。Skill 把指令装进你当前的对话;Agent 则在一个隔离的上下文里独立干活,干完只把结论递回来。
一、Skills 是什么
Skill 是一段可复用的「指令 / 知识模块」,本质就是一个放在 .claude/skills/ 下的 Markdown 文件(SKILL.md),里面写好某个固定流程或领域知识——比如「怎么写规范的提交信息」「怎么审查 PR」。
- 怎么触发:Claude 会按相关性自动加载;你也可以显式调用(用户可见的技能会以
/名字的斜杠命令出现,如/commit、/review-pr)。 - 怎么运行:内联在当前对话里执行,和你共享同一个上下文。
- 干什么用:把「标准化流程」「最佳实践」「领域知识」封装起来,需要时即时调用。
关键特性:渐进式披露(progressive disclosure)。 Skill 平时只把一句「描述」放在上下文里占位;只有当任务真的相关时,Claude 才去读完整的
SKILL.md。这样你可以挂几十个 Skill,却几乎不浪费上下文——用到才加载。
二、Agents(子 Agent)是什么
Agent 是一个独立运行的「子 Claude 实例」,有自己隔离的上下文窗口。主 Claude 通过 Agent 工具把一个任务派发出去,子 Agent 自己去调工具、读文件、推理,干完只把一份结论返回给主会话。
- 怎么触发:由主 Claude 通过 Agent 工具启动。
- 怎么运行:独立执行,可并行、可后台;主会话只在它结束时拿到结果。
- 干什么用:复杂、耗时、可并行的任务——深度代码探索、多文件检索、并行调研等。
关键特性:上下文隔离。 子 Agent 翻了 50 个文件,这些「过程噪声」不会涌进主上下文——主 Claude 只收到「结论」。这既保住了主会话的上下文整洁,又能让多个子 Agent 真正并行。
三、核心区别:一张表看懂
| Skills | Agents(子 Agent) | |
|---|---|---|
| 上下文 | 共享当前对话 | 独立隔离的上下文 |
| 执行方式 | 内联、即时 | 异步、可并行 |
| 谁在执行 | 当前 Claude 实例 | 独立的子 Claude 实例 |
| 返回什么 | 直接改变当前对话的行为 | 只回传一份结论摘要 |
| 典型场景 | 标准化流程(提交、审查、套路) | 委托调查、并行任务、深度探索 |
| 本质改变的是 | 当前上下文知道什么 / 怎么做 | 由谁、在哪执行 |
把最后一行记住就够了:Skill 改变「当前这个 Claude 知道什么」,Agent 改变「换一个 Claude、在别处去做」。
四、用上下文模型对比,一眼看清
flowchart TB
subgraph SK["Skill:内联进当前上下文"]
direction LR
C1["主对话上下文"] -->|"按需加载 SKILL.md"| C1b["主对话上下文
(多了那段指令)"]
end
subgraph AG["Agent:另起一个隔离上下文"]
direction LR
M["主对话上下文"] -->|"派发任务"| S["子 Agent
独立上下文
自己调工具/读文件"]
S -->|"只回传结论"| M2["主对话上下文
(只多了结论,无过程噪声)"]
end
style C1b fill:#dbe9ff,stroke:#2563eb
style S fill:#ffe9d5,stroke:#b71d18
style M2 fill:#d6f5e3,stroke:#1f9e57
- Skill 是做加法:在你当前的上下文里加一段指令。
- Agent 是做隔离:把活儿搬到另一个上下文里干,只把成品搬回来。
五、怎么选:一个决策流
flowchart TD
Q["我要扩展 Claude 的能力"] --> A{"这是一段
固定流程 / 知识吗?"}
A -->|"是"| SK["用 Skill
封装成可复用指令"]
A -->|"否"| B{"任务重、耗上下文、
或想并行吗?"}
B -->|"是"| AG["用 Agent
派给隔离的子实例"]
B -->|"否"| INLINE["直接在对话里说就行
不必抽象成 Skill/Agent"]
style SK fill:#dbe9ff,stroke:#2563eb
style AG fill:#ffe9d5,stroke:#b71d18
场景对照:
| 你想做的事 | 用哪个 | 为什么 |
|---|---|---|
| 统一团队的提交信息格式 | Skill | 固定套路,内联即时执行最顺 |
| 每次审查 PR 走同一套清单 | Skill | 标准化流程,复用性强 |
| 在大仓库里深挖某个功能怎么实现 | Agent | 会翻很多文件,隔离上下文避免污染主会话 |
| 同时调研 3 个独立模块 | Agent | 可并行,墙钟时间大幅缩短 |
| 只是这一次让它改个变量名 | 都不用 | 直接说,别为一次性小事造抽象 |
六、别忽略:它们可以组合
Skill 和 Agent 不是二选一,而是能叠在一起用——这是很多人没意识到的:
- Agent 里可以用 Skill:你派出去的子 Agent,同样能加载相关 Skill。比如派一个「代码审查 Agent」,它内部照样可以用
/review-pr这套 Skill。 - Skill 可以指挥派 Agent:一个 Skill 的指令里,完全可以写「遇到 N 个独立子任务时,并行派发子 Agent 去做」。
换句话说:Skill 定义「怎么做」,Agent 决定「谁来做、在哪做」,两者正交,可自由组合出更强的工作流。关于多个 Agent 并行协作的玩法,可以看 多 Agent 并行开发的原理 那篇。
七、放进更大的图景:三种扩展轴
给 Claude 扩能力,其实有三条正交的轴,别混为一谈:
| 扩展方式 | 给的是什么 | 一句话 |
|---|---|---|
| Skills | 知识 / 流程 | 让它懂怎么做一件事 |
| Agents | 委派 / 隔离 | 让它把活儿分出去并行做 |
| MCP | 外部工具 / 数据 | 让它能读你的系统、调你的接口 |
三者常常一起用:用 MCP 接上你的项目,用 Skill 封装审查流程,再用 Agent 把大任务并行拆出去。
一句话总结
Skills 像一本「操作手册」——需要时翻开,照着做,内联在你当前的工作里;Agents 像一个「派出去办事的助手」——给它一个任务,它在别处独立完成,回来只交结果。
选择标准就一句:封装「怎么做」用 Skill,委派「谁去做、在哪做」用 Agent;而它们最强的用法,是组合起来——让会用手册的助手们,并行地把事办漂亮。
