08.04概念更新于 2026年9月17日

Skill、Tool、Workflow 与 Subagent

四者的边界与选择方法。

08.04 · 课时讲解

Skill、Tool、Workflow 与 Subagent

Tool 是手,Skill 是手艺,Workflow 是流水线,Subagent 是派出去的同事。

1 / 11

一句话理解:Tool 是手,Skill 是手艺,Workflow 是流水线,Subagent 是派出去干活的同事。先问清楚“到底缺什么”,再决定用哪种形态。

导论里的「Agent、Skill、Tool 与 Workflow」建立了基本概念。这一课解决的是评审需求时真正会遇到的问题:一个能力摆在面前,到底该做成 Skill、Tool、Workflow 还是 Subagent?

选错形态的代价很具体。把权限控制写进 Skill,等于只是“请求”模型别越界,而不是强制;把一个需要判断的排查过程写成固定 Workflow,遇到新情况就会卡住;给每个小步骤都开一个 Subagent,成本翻几倍,信息还在交接中丢失。

四者对比

维度 Tool Skill Workflow Subagent
本质 一个可调用的能力接口 一套按需加载的方法、知识与脚本 预先写好的执行路径 拥有独立上下文的子 Agent
解决什么 Agent “能不能”作用于外部系统 Agent “会不会”把事情做好 固定流程“每次都一样” 上下文隔离、并行、权限收窄
谁决定何时使用 模型在循环中选择 模型按描述判断,或用户手动调用 代码或触发器 主 Agent 委派,或用户指定
确定性 执行确定,是否调用不确定 指令由模型理解执行,结果会有差异 高 低,本身就是一个 Agent
对主上下文的影响 工具定义与返回结果 描述常驻,触发后加入正文 通常只返回结果 只有最终摘要返回主上下文
客服工单场景的例子 get_ticket(ticket_id) 工单排查 SOP 与工单分类表 每晚 2 点批量拉取超时未响应的工单 翻 200 条历史工单记录,只返回结论

除了这四个,还有几个经常一起出现的“邻居”:

  • System Prompt / 项目说明文件(如 CLAUDE.md):每次对话都加载,放“永远都要遵守”的规则。Claude Code 文档给的经验法则是:每个会话都要知道的放这里,只是偶尔需要的参考资料或流程做成 Skill。
  • MCP:一种把 Tool 标准化接入的协议,详见「为什么需要 MCP」。它提供连接,Skill 教 Agent 怎么用好这些连接。
  • Hook:在工具调用前后等生命周期节点必然执行的程序逻辑,详见「Hooks 与生命周期」。

把四者和它们的“邻居”放进同一个 Agent 系统,各自的位置和关系如下:

Agent 能力全景:Workflow、常驻指令、Skill、Agent Loop、Subagent、Hook 与 Tool 的关系 Workflow 层 定时任务 事件触发 固定流水线 用户对话 /name 手动调用 代码决定何时触发、 按什么顺序执行 Agent 主循环 · 模型决定下一步做什么 常驻指令 · 每次都加载 System Prompt 角色 · 输出格式 CLAUDE.md 永远要遵守的规则 AGENT LOOP ① 观察 ② 推理 ③ 行动 ④ 验证 逐轮决策 SKILL · 会做:按需加载的方法包 名片 始终常驻 SKILL.md 触发后读取 附属文件 用到才读 方法 · 知识 · 脚本 业务专家维护,改标准不用改代码 委派与行动:隔离上下文 · 程序强制 · 外部连接 Subagent · 分身 独立上下文,只回传摘要 Hook · 权限 · 审批 红线由程序强制 Tool / MCP · 能做 连接外部系统 外部系统 工单 · 订单 委派 / 回传摘要 能做 · Tool Agent 能不能作用于外部系统 · 模型在循环中选择调用 · 执行确定,是否调用不确定 会做 · Skill 方法、知识与脚本 · 模型按描述判断或用户手动调用 · 描述常驻,触发后才读正文 必做 · Workflow 固定流程每次都一样 · 由代码或触发器决定 · 红线交给 Hook、权限与审批,而不是 Prompt 分身 · Subagent 上下文隔离、并行、收窄权限 · 由主 Agent 委派 · 只有最终摘要回到主上下文
图 1 · 能力全景:Workflow 管触发,Skill 管方法,Tool 管连接,Subagent 管隔离,红线交给程序

选择方法:五个问题

拿到一个能力需求,按顺序问:

选择能力形态的五个问题:每个“是”指向一种形态 1 · 缺的是连接外部系统的能力? 查工单、建工单、读数据库 Tool / MCP 提供连接 是 否 2 · 缺的是方法、标准或业务知识? 怎么判断异常原因、口径怎么算 Skill 每次都需要则放常驻指令 是 否 3 · 步骤固定,必须每次一模一样? 定时对账、上线前必跑的检查 Workflow / 脚本 / Hook 代码决定路径 是 否 4 · 中间信息多,主任务只要结论? 或需要并行、需要单独收窄权限 Subagent 隔离上下文,只回传摘要 是 否 5 · 违反这条规则会造成损失吗? 不能改生产配置、不能自动退款 程序强制 权限 · Hook · 审批 是
图 2 · 五个问题按顺序问,每个“是”都指向一种形态;第 5 问对所有能力都适用

第 5 问值得单独强调。Claude Code 文档在比较 Hook 和 Skill 时说得很清楚:在 Skill 或说明文件里写“不要编辑 .env”,只是一个请求;用 Hook 在工具调用前拦截,才是强制执行。必须每次都成立的规则,要交给程序。这与「程序校验优先」是同一个原则。

同一个客服工单场景的拆分

以一个「客服工单处理 Agent」为例,把各部分放到合适的位置:

客服工单处理 Agent 的拆分:触发层 Workflow 与 Agent 主循环中的各个部件 触发层 Workflow 每晚 02:00 定时任务 拉取超时未处理工单 逐条交给 Agent Agent 主循环 · 模型决定下一步 常驻指令 · System Prompt 角色、输出格式、结论必须引用证据 Skill · ticket-triage 排查顺序 · 工单分类表 · 响应时长脚本 Tools · 内部 MCP Server,全部只读 get_ticket / get_order / get_customer … Subagent · ticket-log-analyzer 翻大量历史工单,只回传“是否批量爆发” Hook / 权限:任何写操作(回复用户、升级工单)调用前都需要人工审批
图 3 · 连接放 Tool,方法放 Skill,固定触发放 Workflow,脏活交给 Subagent,红线交给程序

各部分的归属一目了然:连接放在 Tool,方法放在 Skill,固定触发放在 Workflow,脏活累活交给 Subagent,红线交给程序。以后要改排查标准,业务专家只需改 Skill;要换数据源,研发只需改 MCP Server,两边互不影响。

常见的组合方式

这几种形态不是互斥的,实际系统里经常组合使用:

组合 怎么配合 例子
Skill + MCP MCP 提供连接,Skill 说明怎么用好 MCP 连上数据仓库,Skill 写清表结构、口径和“排除测试账号”的规则
Skill + 脚本 Skill 负责判断,脚本负责确定性计算 SEO Skill 调用 check_page.py 提取标签,再由模型按规则判定
Skill 在 Subagent 中运行 把 Skill 放进隔离上下文执行 Claude Code 中设置 context: fork 的调研类 Skill
Subagent 预加载 Skill 子 Agent 启动时就带上领域知识 Claude Code 子 Agent 定义里的 skills 字段,启动时注入完整 Skill 内容
Workflow 调用 Agent 固定流程中的某一步交给 Agent 判断 见「混合架构」

Subagent 与上下文隔离的更多设计细节,在「Subagent 与上下文隔离」展开。

常见误区

  • “用 Skill 来做权限控制。” Skill 里的“禁止”是给模型的指令,模型可能不遵守,也可能被注入攻击绕过。权限必须由工具层和运行系统控制。
  • “流程重要,所以写成 Skill,让它每次都照做。” Skill 由模型理解执行,天然存在差异。真正需要逐字一致的步骤(比如财务对账),应该写成脚本或 Workflow,再让 Skill 去调用。
  • “每个步骤都开一个 Subagent,分工更清楚。” 每个 Subagent 都是一次完整的 Agent 运行,成本和延迟成倍增加,交接时还会丢信息。只有当隔离、并行或权限收窄带来的收益明确时才用。
  • “把 SOP 写进工具描述里。” 工具描述应该只说明这个工具做什么、参数是什么。排查顺序、判断标准这类跨工具的方法,属于 Skill。

产品经理检查清单

评审一份 Agent 能力设计时,逐条确认:

  • 每一项能力都说明了它属于 Tool、Skill、Workflow、Subagent 还是常驻指令,并给出了理由。
  • 所有“绝对不能做”的规则都有程序层面的保障,而不是只写在 Prompt 或 Skill 里。
  • 业务专家可以在不改代码的情况下更新方法和标准。
  • 使用 Subagent 的地方,都能说清楚隔离或并行换来了什么。
  • 固定、高频、必须一致的步骤没有交给模型自由发挥。

练习

把「SEO 诊断」的完整人工流程拆解归类(约 45 分钟):

  1. 写出 10 个步骤,例如:拉取站点地图、逐页抓取、提取标签、判断标题是否合格、检查 canonical、汇总问题、按优先级排序、生成报告、创建修复任务、下周复查。
  2. 为每一步填写:
步骤 归类(Tool / Skill / Workflow / Subagent / 常驻指令) 理由 是否需要程序强制
例:逐页抓取 200 个页面 Subagent + Tool 中间输出量大,主任务只需要问题汇总 否
  1. 找出你最犹豫的一步,写下两种方案各自的风险。更系统的步骤归类方法见「步骤归类」。

延伸阅读

下一步

下一课「写好一个 Skill」会讲清楚:描述怎么写才能准确触发,正文写什么、不写什么,以及怎么用评测驱动 Skill 迭代。

试试:上下文、MCP、沙箱、Prompt 注入、外链