Anthropic 最近有一篇工程向长文:Building agents: When to fold subagents into your main agent loop。核心判断很直白——很多企业把「每个团队 / 每种问题」都做成子 Agent,再叠一个编排层,结果上下文来回摘要丢失、延迟翻倍、品牌语气也不统一;换成「一个主循环 + Skill 渐进披露 + 工具」往往又快又稳。
X 上开发者讨论把它概括成「别再堆子 Agent,收成 Skill」。结合 Claude Code 的现实用法,我们核对了官方建议、在本地搭了一组「Skill vs 子 Agent」最小文件,并对照本站刚测过的 security-audit(刻意保留多 Agent 隔离)说明:什么时候该折进去,什么时候不该。
先说结论:
- 默认形态:一个主会话、一份系统提示、按需加载的 Skill、少量工具;计划由「正在干活的同一个模型」边做边改。
- 子 Agent 仍适合:上下文会被过程垃圾撑爆、必须并行新鲜窗口、或权限/指令互相打架时。
- 在 Claude Code 里,「折进去」通常等于:把子 Agent 的步骤写成
SKILL.md,只在触发时加载正文;不要一上来就Agent派工。 - 我们搭的最小示例:Skill 正文 233 字、子 Agent 定义 128 字;但 Skill 在会话开始只暴露 name + description(约 60 字量级),正文按需加载——这就是渐进披露。
- 反例:security-audit 这种要「猎手写、验证者反驳」的流程,隔离本身就是产品能力,硬折进主循环会丢掉独立反驳。
官方到底建议什么
文章里对企业多 Agent 的批评可以收成四类病:
- 上下文在子 Agent 之间电话传话,细节丢失
- 子 Agent 按组织架构疯长,标准不统一
- 系统提示变成 Frankenprompt,语气和规则互相打架
- 延迟:有客户对比多 Agent 编排与单循环,单循环大约快一倍
他们建议的目标态:
- 一个模型、一个上下文窗口、开放式工具循环
- 每轮可并行一批工具,结果回到同一模型再决定下一步
- 流程与领域知识放进 Skill;硬限制(校验、审批)放进工具
- 一次只折一个子 Agent,靠端到端 eval 决定去留
官方也列了仍然该留子 Agent 的条件:主循环已能量化地被上下文拖垮;任务必须并行且用完即弃;或单一 Agent 选不好工具 / 指令冲突。
映射到 Claude Code:CLAUDE.md、Skill、Subagent
| 机制 | 何时进上下文 | 适合 | 别用来 |
|---|---|---|---|
| CLAUDE.md | 几乎总在 | 项目命令、边界、验证标准 | 塞长篇流程百科 |
| Skill | 名称/描述常驻,正文按需 | 可重复的多步流程 | 一次性闲聊提示 |
| Subagent | 独立窗口,只回最终摘要 | 深搜、日志海、只读审查 | 每个小步骤都派一个 |
写 Skill 的细则见 怎么写 SKILL.md;装通用 Skill 见 Agent Skills 怎么用。子 Agent 要省额度时,可把执行模型配成 Haiku:配置 Haiku 5.5 子 Agent。
最小对照:把「PR 前检查」收成 Skill
假设你原来有一个 pr-reviewer 子 Agent,主会话动不动就 Agent 出去做「跑测试 + 看 diff」。按官方思路,若步骤短、还要你在主对话里接着改,就应收成 Skill。
我们在空项目里放了两份最小文件(只为对照结构,不绑定某一框架):
---
name: pr-check
description: 在提交或开 PR 前做一次本地检查:跑测试、看 diff、列出风险点。用户说「提交前检查」「PR 前检查」时用。
---
按下面顺序做,结果写回主对话,不要另起子 Agent:
1. 用 git status / git diff 看改了什么
2. 跑项目里已有的测试命令(从 package.json 或 README 找)
3. 用三条以内要点说明:通过了什么、失败了什么、建议提交前再改什么
对比旧的子 Agent 头:
---
name: pr-reviewer
description: 独立审查当前改动并返回摘要
tools: Read, Grep, Bash
---
你是只读审查员。检查当前 git diff,返回:风险列表、测试建议、是否建议合并。不要修改文件。
体积对照(本机 wc 级统计):Skill 全文 233 字符 / 11 行;子 Agent 128 字符 / 8 行。差别不在谁更短,而在 加载时机:Skill 会话开始只挂 name + description(我们这段 description 约 60 字),正文等任务匹配或你输入 /pr-check 再进主上下文;子 Agent 则新开窗口,中间推理你看不见,只剩摘要。
迁移口诀:
- 把子 Agent 系统提示里的「步骤」搬进 Skill 正文
- 把「必须打外部系统」的动作变成 MCP / 工具,而不是另一个 Agent
- 主会话自己跑流程时,Skill 里写明「不要另起子 Agent」
- 需要隔离噪声时再用
context: fork或真正的 Subagent——官方 Skills 文档支持 Skill 在 fork 的 Explore 里跑研究任务
什么时候不要折:security-audit 反例
本站刚用第三方 Key 跑过 Cloudflare 的 security-audit skill:DVNA 一轮 standard 用了 49 个 Agent,专门让「没写过这条候选的新 Agent」去反驳。这里的多 Agent 不是组织架构幻觉,而是 验证独立性。若折进单一主循环,写候选和反驳的是同一段上下文,评审价值会塌。
所以决策表可以更硬一点:
| 信号 | 倾向 |
|---|---|
| 步骤要你边看边改、共享刚读过的文件 | Skill + 主循环 |
| 只要一份摘要,中间输出是噪声 | Subagent |
| 必须并行且互不污染 | Subagent / fork |
| 第二个 Agent 的存在是为了「没见过上一手」 | 保留隔离,不要折 |
和 Claude Code 近期能力怎么配合
- 2.1.310 包装里已有
ProposeSkills工具类型:可从记忆/过程提案新 Skill 或改进旧 Skill——适合当你准备「折子 Agent」时先让模型起草SKILL.md,再人工审。 - 长任务后台看日志用 Monitor(见 Monitor 2.1.310 教程),不必再开一个「日志子 Agent」。
- 官方迁移套件挂在
/claude-api相关 skill 上(build-eval、hillclimb等),偏 Claude API / Agent SDK 工程;纯 CLI 工作流先从「一个 Skill 替代一个派工」做起即可。
实操检查清单
- 列出你过去一周真正派过的子 Agent 名称与触发原因
- 对每个问:若正文在主会话展开,质量会更好还是更乱?
- 更好 → 写成 Skill,description 写清触发词;更乱 → 留下,并收紧 tools
- 一次只迁一个,迁完用同一批真实任务回归
配置第三方 Key 仍按 接入教程;想让 Claude 与 Codex 互审计划和代码,见 claudex-loop 实测——那是「保留两家模型」而不是「一家里叠十个子 Agent」。
常见问题
折进主循环会不会把上下文撑爆?
Skill 的正文按需加载;工具可用 tool search / 延迟加载。官方提到他们曾把更先进模型上的 Claude Code 系统提示砍掉八成以上,其中就包括把能力改成渐进披露。真撑爆时再对「深搜 / 日志海」开子 Agent。
Skill 和 Subagent 能组合吗?
能。Skill 可 context: fork 到 Explore;Subagent 也可 skills: 预加载知识。官方把前者叫「Skill 带着任务去隔离环境」,后者叫「隔离助手带着手册上岗」。
这和「多模型路由」冲突吗?
不冲突。文章批评的是同一产品里按组织架构复制子 Agent;跨 Claude / Codex 的分工仍可按任务类型选客户端,只是各自内部先保持单循环干净。



