在Claude Code里同时使用Subagents和Skills,会发现它们根本不互换——各解决不同问题,组合起来才能设计更好的工作流。
痛点:复杂任务污染对话窗口
对话变长后,token消耗会让Claude推理能力下降。把heavy lifting放到subagent里,只返回摘要,主上下文保持干净。但加上Skills之后,能力又上了一个台阶。
组合模式一:Subagent with Skills(角色预加载)
在subagent frontmatter的skills:字段列出要注入的skill。Skill内容在subagent启动时就注入,不等auto-discovery,领域知识在第一个turn就存在。
---
name: api-developer
model: sonnet
tools: Read, Write, Edit, Bash
skills:
- api-conventions
- error-handling-patterns
- auth-patterns
---
You are a senior backend engineer.
Implement endpoints following the preloaded conventions.
Subagent是主角,skills是参考资料,提前baked in。适用场景:code reviewer(总是加载style guide)、migration agent(总是加载schema conventions)、deployment agent(总是加载infra runbook)。
组合模式二:Skill with context: fork(任务隔离执行)
在skill frontmatter加context: fork。Skill内容变成task prompt,spawn一个subagent执行,agent:字段指定用哪个subagent类型。
---
name: deep-research
description: Research a topic thoroughly across the codebase.
context: fork
agent: Explore
---
Research $ARGUMENTS thoroughly:
1. Find all relevant files and patterns
2. Identify how this is used across the project
3. Summarize findings with file references
适用场景:任务太verbose不想污染主会话;或者已有skill想隔离运行,不用新建agent文件。
约束:skill必须有明确指令,context:fork才有意义。如果skill只含guideline没有actionable prompt,subagent收到guideline但没有可执行任务,返回空。
两者如何选择
Subagent with skills是定义一个角色,需要领域知识从头就存在。Skill with context:fork是有一个任务,不想在主会话里内联执行。
如果已有skill想隔离运行,直接在skill里加context: fork,不用新建agent文件——skill是复用单元,fork只是执行上下文。
Skill是技能的原子单元,Subagent是执行隔离的容器。当skill需要隔离执行时加fork,当subagent需要领域知识时加skills——这不是折中,是各自的比较优势。