Claude Code 有三种正交的扩展机制 —— Skills(操作手册)Hooks(事件钩子)Subagents(独立会话)。它们不是同一件事的三种写法,各自解决不同问题,经常组合使用。

目录


为什么要理解这三者

不少人上手 Claude Code 后有个共同困惑:想让它"每次开发前自动读需求文档"、“改完代码自动跑检查”、“审代码时切换到严格模式”,但翻文档发现有 Skills、Hooks、Subagents 三个东西都好像能做,不知道怎么选。

选错了会出现两种典型问题:

  • 该用 Hook 却用了 Skill:结果 Claude 没在关键节点触发,比如"每次会话开始都要跑一次环境检查",写成 Skill 就得每次用户手动喊 /check-env,忘一次就出错。
  • 该用 Subagent 却用了 Skill:把 Code Review 写成 Skill,Claude 在主对话里读了几十个文件,之后接着写业务代码时上下文里塞满了 review 时读的东西,token 爆炸不说,还容易被 review 时的思路带偏。

搞清楚这三者的边界,本质上是搞清楚一件事:谁来决定触发、在哪个上下文里执行、结果怎么回收


用一个日常场景先建立直觉

想象你是一个技术团队 leader,团队里三个角色:

场景:新同事小李要来做一个"用户登录改造"的需求。

角色 A:SOP 手册
公司有一份《需求开发 SOP》放在共享盘里。小李遇到"要开始做需求了"这个场景,主动翻开手册,按上面写的步骤:先读需求文档、再拉分支、然后编码、最后自测。手册是"死的",什么时候翻、翻哪一节,都由小李自己判断。

这就是 Skill。是给 Claude 看的一份说明书。Claude 判断"当前场景需要用它"时主动去读,然后照着做。

角色 B:门禁系统
公司门口装了个刷卡机,每天早上小李进门必须刷一下。刷卡机是自动的,不需要小李主动想着"我要去刷卡",进门这个动作触发就自动执行。刷卡失败还能把人拦住。

这就是 Hook。绑定在某个"事件"上,事件一发生自动执行,不需要 Claude 决策。

角色 C:外部专家
写完代码后小李把 diff 发到一个专门的 code review 群,群里有个专职 reviewer 老王。老王只做一件事:审代码。他有自己独立的思路和上下文,不参与小李的日常开发,看完丢一份 review 报告回来就完事。

这就是 Subagent。一个独立的 Claude 会话,被主对话临时召唤出来干活,干完只返回结论。

三个角色协同工作:门禁系统(Hook)负责基础设施;SOP 手册(Skill)指导主流程;专家(Subagent)负责需要独立视角的审查环节。它们各司其职,缺一不可。


三种机制的本质区别

Skill:Claude 的操作手册

一个 Markdown 文件(SKILL.md),可选带一些脚本、模板。文件顶部写清楚"什么情况下用我、怎么用、参数怎么给",Claude 判断当前对话匹配就把它读进来,按里面的步骤在当前对话里执行。

关键特征

  • Claude 主动"读手册",读到的内容进入当前上下文
  • 中间过程都留在主对话,可以随时和用户互动
  • 不改变工具集,用的还是 Claude 原本就有的 Read / Edit / Bash 等

Hook:事件驱动的自动脚本

hooks.json 配置文件,把"事件"和"要跑的 shell 命令"绑定起来。比如"会话开始时跑 X 脚本"、“每次 Edit 完某个文件后跑 Y 脚本”。事件一发生,Claude Code 自动执行绑定的命令,Claude 本身不做决策。

关键特征

  • 触发不由 Claude 决定,由事件决定
  • 脚本执行结果可以通过 stdout 反馈回主对话(作为额外上下文)
  • 适合"一定要在某个时机做的事",不能漏

Subagent:一个新开的 Claude

.claude/agents/xxx.md 文件,里面写清楚"这个 agent 叫什么名字、做什么、能用哪些工具、system prompt 是什么"。主对话通过 Agent 工具把它召唤起来,它开一个全新的上下文从零开始工作,完事只返回一段总结。

关键特征

  • 独立上下文,看不到主对话历史(除非主对话把内容塞进 prompt)
  • 工具集可以被限制(比如只给 Read,物理上不能改代码)
  • 可以并发(同时开三个 agent 从不同角度看代码)
  • 只返回最终结论,中间过程不污染主对话

一图看懂:对比表

维度SkillHookSubagent
本质操作手册事件钩子独立会话
触发者Claude 判断触发事件自动触发主对话/用户召唤
执行位置主对话上下文Claude Code 进程外独立子会话
上下文复用主对话全部无(脚本自己拿数据)全新,从零开始
能否交互能,随时问用户不能,无人工介入不能,一次性输入输出
产出去向全部留在主对话stdout 注入主对话只返回一段总结
工具集主对话有啥用啥shell 能做什么就做什么自定义白名单
并发串行事件触发时并发执行可开多个并发
典型形态SKILL.md + 脚本hooks.json + shell 脚本agents/xxx.md
典型场景按套路做一件事每次某事发生必跑独立视角审查

决策树:我该用哪个

回答这三个问题就能选对:

问题 1:触发时机是"事件"还是"意图"?

  • 事件:会话开始文件被编辑工具调用完成Hook
  • 意图:用户想做 XClaude 觉得该做 X → 继续问题 2

问题 2:需要主 Claude 看到过程细节吗?

  • 需要(后续还要基于细节继续工作)→ Skill
  • 不需要(只要一个结论/报告) → Subagent

问题 3(补充):需要并发或独立立场吗?

  • 是(比如同时从 3 个角度审代码,或需要"没被主对话带偏"的新视角) → Subagent
  • 否 → Skill

具体例子走一遍

“每次开会话都要检查本地环境是否装了 Node 20”
→ 事件(会话开始)→ Hook(SessionStart)

“把当前代码改动生成一份 changelog 追加到文件”
→ 意图 + 需要过程留在主对话 → Skill

“审一下我这次改动有没有安全问题”
→ 意图 + 只要结论 + 想要独立视角 → Subagent

“用户输入包含’部署’字样时提醒他先看部署文档”
→ 事件(用户发消息)→ Hook(UserPromptSubmit)

“同时从性能、安全、可维护性三个角度审代码”
→ 意图 + 需要并发 → 多个 Subagent


常见误区

误区 1:用 Hook 做需要 Claude 智能判断的事

有人想在 UserPromptSubmit hook 里"分析用户意图然后自动切换角色"。但 hook 是 shell 脚本,没有 LLM 能力,只能做字符串匹配。

正确做法:hook 只做规则明确的机械动作(记录、打点、简单关键词提醒);智能判断留给 Claude 自己(通过 skill 的 description 匹配或 subagent 的调度)。

误区 2:用 Skill 做"必须每次跑"的事

有人把"环境检查"写成 skill,指望 Claude 每次都调。结果 Claude 觉得"这次问题很简单不用检查"就跳过了,出问题时才发现。

正确做法:任何"漏一次就出错"的机械动作,都必须用 Hook,因为 Hook 由事件驱动,Claude 没法跳过。

误区 3:用 Subagent 做需要主对话保留细节的事

有人把"读所有配置文件并整理"做成 subagent,想着独立上下文节省 token。结果主对话拿到的是一份摘要,后续想引用"配置里第 3 项"时发现细节没留下来,只能让 subagent 重新做一遍。

正确做法:如果后续工作需要基于细节继续推进,就用 Skill 让主对话看到全部;如果只需要一个结论/报告用于决策,才用 Subagent。

误区 4:认为三者互斥,非此即彼

刚学的人容易问"我到底该建 skill 还是 subagent",仿佛只能选一个。实际上一个复杂能力经常是三者组合:Hook 打底、Skill 主流程、Subagent 审查。

正确做法:先按决策树选主要机制,再看是否需要另外两者辅助。


快速参考卡

打印贴墙上用:

┌──────────────────────────────────────────────────────────┐
│  Skill      = Claude 主动读的操作手册                    │
│  Hook       = 事件触发的自动脚本                         │
│  Subagent   = 主对话召唤的独立会话                       │
├──────────────────────────────────────────────────────────┤
│  选哪个 3 连问:                                         │
│    1. 触发是"事件"?  → Hook                             │
│    2. 主 Claude 要看过程?  → Skill                      │
│    3. 只要结论/要独立视角?  → Subagent                  │
├──────────────────────────────────────────────────────────┤
│  经典组合:                                              │
│    Hook 建基础设施 → Skill 跑主流程 → Subagent 做审查   │
└──────────────────────────────────────────────────────────┘

下一步

理解了三者的分工,接下来的三篇文档分别深入讲每一个:

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐