工具调用Agent架构核心机制速答 · 约 6 分钟更新 2026-09-28

Claude Code 这类 Coding Agent 的 Skills、Subagents、Hooks 分别是什么?

一句话结论

这三者是构建复杂Agent的基础机制,Skills是打包提示词和脚本的可复用能力包,Subagents是隔离上下文执行专项任务的独立子代理,Hooks是在工具调用等特定事件触发强制规范的生命周期拦截器。

先这样答

Claude Code 这类 Coding Agent 通过 Skills、Subagents 和 Hooks 这三个核心机制来组织和管理复杂的代码任务。从整体分工来看,Skills 解决的是 Agent 会什么的问题,Subagents 管理的是谁来做的分发逻辑,而 Hooks 则是保障系统必须守的规矩。这三者配合,将原本依赖单一提示词的生成过程,解耦为模块化、可干预的工程管线。

Skills 表现为可复用的能力包。开发者可以将一套特定的提示词、执行脚本以及相关的参考文档打包,形成一个按需加载的模块。当 Agent 在运行中判断当前任务需求与某个 Skill 匹配时,就会动态启用该模块。与 MCP 工具提供硬性的外部接口不同,Skills 提供的是包含领域知识和操作流程的软能力。Subagents 是拥有独立上下文的子代理。面对多步骤任务,主 Agent 会派生出专项子体,例如专门负责代码检索或安全审查的代理。它们各自拥有独立的对话窗口与系统提示,完成任务后将结果精简回传给主循环。这种设计的最大价值在于实现了上下文的严格隔离,防止主 Agent 记忆混乱,同时也支持并行处理。

Hooks 作为生命周期钩子,主要用于在指定事件发生时触发外部脚本以执行强制规范。常见的触发节点包括工具调用前、调用后以及会话停止时。通过 Hooks,开发者可以在 Agent 不感知的情况下,强制插入代码格式检查、高危权限拦截或自动化测试等流程,确保输出结果符合工程标准。这套机制通过明确的边界划分,让代码生成任务的扩展性和安全性得到了保证。

面试官会怎么追问

  • 「Skills 和 MCP 工具在实际开发中应该怎么做选择?」 如果任务需要查询数据库或操作本地文件系统,应该封装为 MCP 接口供 Agent 调用。如果任务是要求 Agent 遵循某种特定的代码风格或处理某一类具有固定逻辑的重构任务,则应该将其封装为包含提示词和参考文档的 Skills。
  • 「为什么要用 Subagents 进行上下文隔离,直接在一个长窗口里做不行吗?」 在一个长窗口中处理复杂任务会导致注意力分散和指令遗忘,尤其是当检索到的长代码片段占满上下文时。使用 Subagents 可以让专项任务在干净的上下文中执行,主 Agent 只接收处理后的最终结论,从而保持主循环的决策清晰。
  • 「Hooks 在拦截到错误或权限越界时,通常怎么处理?」 Hooks 触发的外部脚本在检测到异常时,可以直接中断当前的工具调用流程,并向 Agent 返回包含错误原因的系统消息。Agent 接收到这个反馈后,会根据错误提示重新调整参数或修改代码,从而实现基于规则的自动纠错。

回答的坑

  • 把 Skills 和 MCP 混为一谈,错误地认为两者都是提供 API 接口,正确方向是强调 Skills 侧重于提示词和流程知识的打包。
  • 把 Hooks 理解为 Agent 主动调用的工具,正确方向是指出 Hooks 是在底层生命周期由事件被动触发的强制干预机制,Agent 本身不决定其执行时机。
—— 本题完 ——