欢迎光临
我们一直在努力

Anthropic《Building agents》深度解读:何时把 Subagent 折叠回主 Agent 循环

Anthropic《Building agents: When to fold subagents into your main agent loop》深度解读

原文:Building agents: When to fold subagents into your main agent loop
作者:Diane Sarkis
发布时间:2026-10-22
官方链接:https://claude.com/resources/articles/building-agents-when-to-fold-subagents-into-your-main-agent-loop
本文目的:解释 Anthropic 为什么开始建议减少不必要的 Subagents,以及这对 Claude Code、Skills、Tools、Agent Teams 和实际软件开发工作流意味着什么。


一、这篇文章到底在说什么

这篇文章的核心不是:

“不要使用 Subagents。”

也不是:

“Markdown 文件永远比 Agent 更好。”

Anthropic 真正表达的是:

不要把每一种职责、每一个团队、每一种问题类型都机械地做成一个独立 Agent。

随着模型能力增强,很多过去需要通过:

  • Router Agent
  • Planner Agent
  • Domain Agent
  • Tester Agent
  • Reviewer Agent
  • Orchestrator Agent

来完成的工作,现在可以更简单地放回:

一个主 Agent
+
Skills
+
Tools / MCP
+
按需加载的上下文

也就是说,Anthropic 推荐的是:

优先构建一个能力足够强、上下文连续的主 Agent;只有在存在明确收益时,再增加 Subagent。


二、Anthropic 为什么开始反思“多 Agent”

以前设计 AI Agent 系统时,很容易形成这种结构:

User
│
▼
Router Agent
│
▼
Planner Agent
│
├── Frontend Agent
├── Backend Agent
├── Security Agent
├── Tester Agent
└── Reviewer Agent
│
▼
Orchestrator

看起来非常“专业”。

每个 Agent:

  • 职责明确;
  • Prompt 独立;
  • Context 独立;
  • Tools 独立。

但 Anthropic 在企业客户中观察到了一个现实问题:

系统往往不是因为 Agent 不够多而失败,而是因为 Agent 太多导致上下文交接、Prompt 管理和协调成本失控。

文章提到的典型问题包括:

1. Context 丢失

每个 Subagent 都有自己的上下文。

例如:

Planner
↓ summary
Developer
↓ summary
Tester
↓ summary
Reviewer

每次交接都需要把原始上下文压缩成摘要。

这相当于不断进行:

完整信息
↓
摘要
↓
二次摘要
↓
再次摘要

最终容易出现所谓的:

Telephone Game(传话游戏)

信息在不断转交过程中逐渐失真。


2. Subagent 膨胀

企业很容易按照组织架构创建 Agent。

例如:

Sales Agent
Marketing Agent
Finance Agent
Support Agent
CRM Agent
Order Agent
Shipping Agent
Refund Agent
…

最终可能出现几十甚至几百个 Subagent。

每个团队都维护:

自己的 Prompt
自己的 Tools
自己的 Evals
自己的规则

最后没有人真正负责整体 Agent 的端到端质量。

Anthropic 将这种现象与 Conway’s Law 联系起来:

系统架构开始复制公司的组织架构。

但组织架构并不一定是最好的 Agent 架构。


3. Frankenprompt

如果多个团队都往 System Prompt 中增加规则,就容易出现一个巨大的:

Frankenprompt

也就是:

多个团队拼出来的“弗兰肯斯坦 Prompt”。

例如:

营销团队:
必须积极推荐产品。

风控团队:
不要主动推荐产品。

客服团队:
尽量回答所有问题。

法务团队:
遇到不确定内容必须拒绝。

最后模型面对大量互相冲突的指令。


4. Latency 增加

一次调用可能变成:

Main
↓
Router
↓
Planner
↓
Domain Agent
↓
Reviewer
↓
Main

每一层都是一次独立模型调用。

Anthropic 提到,有客户在比较多 Agent Harness 和单 Agent Loop 后发现:

单 Agent Loop 的运行时间大约可以快 2 倍。


三、Anthropic 的核心建议:Single Agent Loop

Anthropic 推荐的目标架构是:

User
│
▼
Main Agent
│
┌────────┼────────┐
▼ ▼ ▼
Skills Tools Memory
│ │
└────────┼────────┘
▼
Main Agent
│
▼
Result

核心特点是:

一个模型
一个主要 Context Window
一个开放式 Tool Loop

主 Agent:

  • 自己分析需求;
  • 自己制定计划;
  • 调用 Tools;
  • 加载 Skill;
  • 查看结果;
  • 修改计划;
  • 继续执行;
  • 最终回答。
  • 而不是:

    Planner 负责计划
    Developer 负责执行
    Reviewer 负责检查


    四、为什么“同一个 Agent 完成规划和执行”反而可能更好

    这是文章非常重要的一个观点。

    传统设计:

    Planner
    ↓
    生成 Plan
    ↓
    Executor
    ↓
    执行 Plan

    问题在于:

    Executor 在执行过程中可能发现:

    原来的 Plan 不合理

    但是 Planner 已经不在当前上下文里。

    于是需要:

    Executor
    ↓
    告诉 Orchestrator
    ↓
    重新调用 Planner
    ↓
    Planner 修改 Plan
    ↓
    返回 Executor

    协调成本非常高。

    Single Agent Loop 则是:

    Main Agent
    ↓
    制定 Plan
    ↓
    执行
    ↓
    发现新信息
    ↓
    直接修改自己的 Plan
    ↓
    继续执行

    计划和执行处于同一个上下文里。

    所以:

    计划不是一次性的静态产物,而是 Agent 在执行过程中持续更新的工作状态。


    五、Skills 为什么变得越来越重要

    文章中一个非常关键的观点是:

    很多过去放在 Domain Subagent Prompt 里的知识,现在更适合放进 Skill。

    例如以前:

    Security Agent

    System Prompt:
    – JWT 检查方式
    – RBAC 检查方式
    – SQL Injection 检查规则
    – XSS 检查规则
    – Secret 管理规则

    现在可以变成:

    Main Agent

    Skills
    └── security-review/
    └── SKILL.md

    当任务涉及安全审查时:

    Main Agent
    ↓
    发现安全任务
    ↓
    加载 security-review Skill
    ↓
    执行

    如果没有安全任务:

    Skill 不加载

    这就是:

    Progressive Disclosure(渐进式披露)


    六、Progressive Disclosure 是什么

    传统 Prompt:

    System Prompt
    ├── 前端规范
    ├── 后端规范
    ├── 安全规范
    ├── 测试规范
    ├── Git 规范
    ├── API 规范
    ├── 数据库规范
    └── 部署规范

    所有内容一开始全部进入上下文。

    问题是:

    Context 很大
    +
    很多内容当前任务根本用不到

    Progressive Disclosure 则是:

    Main Agent
    │
    ├── Skill 描述(很短)
    ├── Skill 描述(很短)
    ├── Skill 描述(很短)
    └── Skill 描述(很短)

    模型先看到:

    skill name
    description

    只有真正需要时才加载:

    完整 SKILL.md

    因此可以同时做到:

    能力很多
    +
    初始 Context 很小

    Anthropic 还提到,Claude Code 通过类似的按需披露机制,针对更先进模型将系统 Prompt 大幅缩减。


    七、Skill、Tool、Knowledge、Agent 应该分别放什么

    可以用下面这个判断方式。

    Skill

    适合放:

    How to do the work

    也就是:

    • 工作步骤;
    • 判断规则;
    • 最佳实践;
    • 团队规范;
    • 操作流程;
    • 专业方法论。

    例如:

    code-review/SKILL.md
    debugging/SKILL.md
    vue-best-practices/SKILL.md
    security-review/SKILL.md


    Tool / MCP

    适合:

    Do something

    例如:

    查询数据库
    调用 GitHub
    读取 Notion
    调用浏览器
    执行 Playwright
    读取 CI
    创建 Issue

    Tool 更强调:

    动作
    +
    实时数据
    +
    固定输入输出


    Knowledge Base

    适合:

    Reference information

    例如:

    公司政策
    API 文档
    产品说明
    业务字典
    指标定义

    Agent 不需要一直加载。

    需要的时候:

    Search
    ↓
    Retrieve
    ↓
    Use


    Subagent

    适合:

    需要独立 Context

    例如:

    • 独立 Research;
    • 黑盒 Verification;
    • 大量代码搜索;
    • 并行独立任务;
    • 工具或系统 Prompt 存在明显冲突。

    八、什么时候仍然应该使用 Subagent

    Anthropic 并没有否定 Subagents。

    文章明确给出了三个非常重要的判断条件。


    场景 1:Context Pollution

    假设:

    Main Agent

    需要读取:

    100 个日志文件

    但最后只需要:

    根因
    +
    3 条证据

    如果全部日志都进入 Main Context:

    Context 爆炸

    更好的方式:

    Main Agent
    ↓
    Log Analysis Subagent
    ↓
    读取大量日志
    ↓
    返回 300 tokens 摘要

    Subagent Context 用完即可丢弃。

    这就是:

    Context Isolation。


    场景 2:真正可以并行

    例如:

    调查 Vue 性能问题
    调查 Node API 问题
    调查数据库慢查询

    三件事情互相独立。

    可以:

    Main
    │
    ┌────────┼────────┐
    ▼ ▼ ▼
    Agent A Agent B Agent C

    最后 Main 汇总。

    这种情况下 Multi-Agent 很有价值。


    场景 3:工具或指令冲突

    例如 Main Agent 同时有:

    40 个 MCP Tools

    并且覆盖:

    GitHub
    Notion
    CRM
    Database
    Cloud
    Slack
    Payments

    模型开始:

    选错 Tool

    此时可以把不同领域隔离:

    CRM Agent
    GitHub Agent
    Finance Agent

    不过 Anthropic 同时建议:

    在拆 Agent 前,先考虑 Tool Search / Deferred Loading。

    也就是:

    不要一次加载 40 个工具

    先让模型动态查找 Tool。


    九、为什么“Planner / Developer / Tester / Reviewer”这种拆分经常有问题

    这是文章对软件开发 Agent 非常有意义的一点。

    看起来合理:

    Planner
    ↓
    Developer
    ↓
    Tester
    ↓
    Reviewer

    但这些任务实际上共享大量 Context。

    例如:

    Developer 知道:

    为什么这里用了这种实现

    Tester 不知道。

    Tester 发现:

    某个测试失败

    然后需要把信息传给 Developer。

    Developer 修复后:

    Reviewer 又需要重新理解整个 Feature

    于是产生大量:

    handoff

    Anthropic 在另一篇关于 Multi-Agent 的文章中称这种方式为:

    Problem-centric decomposition

    按照“工作类型”拆 Agent。

    而更推荐的是:

    Context-centric decomposition

    按照“上下文边界”拆。


    十、Context-centric decomposition

    错误拆分:

    Feature A

    Planner
    Developer
    Tester
    Reviewer

    更合理:

    Feature A
    └── Agent A
    ├── Design
    ├── Implement
    └── Test

    Feature B:

    Feature B
    └── Agent B
    ├── Design
    ├── Implement
    └── Test

    如果 Feature A 和 Feature B 独立:

    Lead
    │
    ┌───────┴───────┐
    ▼ ▼
    Agent A Agent B
    Feature A Feature B

    这样上下文不会来回传递。


    十一、为什么 Verification Agent 是特殊例外

    Verification 是最适合独立 Agent 的场景之一。

    原因:

    Verifier 不需要知道:

    你为什么这么写

    它只需要知道:

    Requirements
    +
    Artifact
    +
    Acceptance Criteria

    然后判断:

    PASS / FAIL

    例如:

    Developer
    ↓
    Implementation
    ↓
    Verifier
    ↓
    Run Test
    ↓
    PASS / FAIL

    这种模式叫:

    Generator-Verifier

    它具有非常干净的 Context Boundary。

    所以:

    code-reviewer
    security-reviewer
    black-box tester

    往往仍然适合作为独立 Subagent。


    十二、这篇文章对 Claude Code 的实际意义

    放到 Claude Code 中,可以理解为:

    不推荐

    ~/.claude/agents/

    planner.md
    developer.md
    frontend.md
    backend.md
    tester.md
    debugger.md
    reviewer.md
    architect.md
    security.md
    writer.md
    git-master.md
    …

    然后每个任务:

    Main
    ↓
    Planner
    ↓
    Developer
    ↓
    Tester
    ↓
    Reviewer


    更推荐

    Claude Code Main Agent
    │
    ├── CLAUDE.md
    │
    ├── Skills
    │ ├── debugging
    │ ├── testing
    │ ├── vue-best-practices
    │ ├── security
    │ └── refactoring
    │
    ├── Tools / MCP
    │
    ├── Subagents
    │ └── 少量真正需要 Context Isolation 的 Agent
    │
    └── Agent Teams
    └── 复杂且真正可并行时才使用


    十三、对我们刚才配置的三个 Agent 的重新评估

    我们之前配置了:

    code-reviewer
    test-engineer
    debugger

    结合这篇 Anthropic 新文章,更合理的判断如下。

    当前角色推荐形态原因
    code-reviewer 保留 Subagent 独立审查需要 fresh context
    test-engineer Skill 优先 测试通常与实现共享上下文
    debugger Skill 优先 Debug 通常依赖主 Agent 已有上下文

    十四、Code Reviewer 为什么值得继续保留

    代码审查最大的价值之一就是:

    Fresh Eyes

    如果 Main Agent:

    自己设计
    自己开发
    自己测试
    自己 Review

    它容易沿用自己原来的假设。

    而独立 Reviewer:

    Requirements
    +
    Git Diff
    +
    Tests

    重新判断:

    实现到底正确吗?

    非常符合 Anthropic 所说的:

    Black-box verification

    因此推荐保留:

    ~/.claude/agents/code-reviewer.md


    十五、Test Engineer 为什么更适合 Skill

    假设主 Agent刚刚:

    实现 Feature

    它已经知道:

    业务需求
    代码结构
    边界条件
    修改原因

    此时让另一个 Tester Agent:

    重新读取所有代码
    重新理解需求
    重新理解 Feature

    会增加重复 Context。

    更合理:

    Main Agent
    ↓
    加载 testing Skill
    ↓
    设计测试
    ↓
    运行 Test
    ↓
    修复

    只有:

    真正需要黑盒验收

    时才启动独立 Test Agent。


    十六、Debugger 为什么通常更适合 Skill

    Debug 本质上非常依赖:

    之前发生了什么

    比如 Main Agent 已经知道:

    刚修改了哪些文件
    刚运行了什么测试
    出现了什么 Error
    尝试过哪些方案

    如果此时切到 Debugger Agent:

    需要重新把这些 Context 传过去

    容易损失信息。

    因此通常:

    Main Agent
    +
    diagnosing-bugs Skill

    更好。

    只有当 Debug 任务本身:

    需要读取非常大量日志

    或者:

    需要独立调查

    才适合 Subagent。


    十七、推荐的新 Claude Code 架构

    结合 Anthropic 这篇文章,推荐:

    Claude Code Main Agent
    │
    ├── Global CLAUDE.md
    │
    │ └── 开发原则 / 安全边界 / 编排原则
    │
    ├── Skills
    │ ├── debugging
    │ ├── testing
    │ ├── refactoring
    │ ├── security-review
    │ ├── frontend-design
    │ └── framework-best-practices
    │
    ├── Tools / MCP
    │
    ├── Knowledge
    │
    ├── Subagents
    │ └── code-reviewer
    │
    └── Agent Teams
    └── 真正独立、可并行的大任务


    十八、Agent Teams 应该什么时候启动

    不要因为:

    任务复杂

    就一定启动 Team。

    应该检查:

    能否真正独立并行?

    例如:

    适合 Team

    Monorepo

    Agent A → Admin
    Agent B → H5
    Agent C → Backend

    接口已经明确,各模块独立。


    不适合 Team

    登录 Feature

    Planner
    ↓
    Developer
    ↓
    Tester
    ↓
    Reviewer

    它们高度共享 Context。

    这种更适合:

    Main Agent
    +
    Skills
    +
    最后独立 Reviewer


    十九、Anthropic 推荐的 Multi-Agent 判断公式

    可以简化成:

    是否存在真实 Context 问题?
    │
    ├── 否
    │ ↓
    │ Single Agent
    │
    └── 是
    │
    ▼
    能否按 Context 独立拆分?
    │
    ┌────┴────┐
    │ │
    否 是
    │ │
    Single Agent Subagent
    + Skills / Team

    还要继续问:

    是否真正需要并行?

    如果:

    No

    那么通常:

    Subagent > Agent Team

    如果:

    Yes

    才考虑:

    Agent Team


    二十、对 Agent 开发的几个重要结论

    结论 1

    更多 Agent:

    ≠

    更强系统。


    结论 2

    Agent 应该按照:

    Context Boundary

    拆分。

    而不是:

    Job Title

    拆分。


    结论 3

    专业知识优先放:

    Skill

    而不是:

    Specialist Agent


    结论 4

    实时能力放:

    Tool / MCP


    结论 5

    大量参考资料放:

    Knowledge / Search


    结论 6

    真正需要:

    独立 Context
    +
    并行
    +
    特殊权限

    时,再创建 Subagent。


    二十一、对你当前配置的具体建议

    你现在已经配置:

    ~/.claude/agents/
    ├── code-reviewer.md
    ├── test-engineer.md
    └── debugger.md

    不需要马上删除。

    建议先调整使用策略:

    code-reviewer
    → 默认允许独立 Subagent

    test-engineer
    → 优先让 Main Agent + testing Skill
    → 黑盒验收时才调用 Agent

    debugger
    → 优先 Main Agent + diagnosing-bugs Skill
    → 大量日志 / 独立 RCA 时才调用 Agent

    你的全局 CLAUDE.md 中继续保留:

    Prefer the simplest execution strategy.

    以及:

    Use Agent Teams only when substantial parallelism
    or independent context provides clear benefits.

    这与 Anthropic 的最新方向是一致的。


    二十二、一个更合理的 Coding Agent Loop

    推荐:

    User Requirement
    │
    ▼
    Main Agent
    │
    ├── Analyze
    │
    ├── Plan
    │
    ├── Implement
    │
    ├── Load Testing Skill
    │
    ├── Run Tests
    │
    ├── Load Debug Skill if needed
    │
    └── Fix
    │
    ▼
    Code Reviewer
    Independent
    │
    ┌─────┴─────┐
    ▼ ▼
    PASS FAIL
    │
    ▼
    Main Agent
    │
    └── Fix → Verify

    只有任务天然独立时:

    Main Agent / Team Lead
    │
    ┌──────┼──────┐
    ▼ ▼ ▼
    Agent A Agent B Agent C
    │ │ │
    └──────┼──────┘
    ▼
    Integrate


    二十三、文章最值得记住的一句话

    如果把这篇文章浓缩成一句工程原则:

    不要因为某个能力“听起来像一个岗位”,就为它创建一个 Agent;只有当独立上下文本身能带来明确收益时,才应该创建 Subagent。

    进一步可以总结为:

    Instructions → Skill
    Actions → Tool
    Knowledge → Retrieval
    Isolation → Subagent
    Parallelism → Agent Team

    这是一套非常实用的 Agent 架构判断方式。


    二十四、最终总结

    Anthropic 的方向已经从:

    “为每种能力创建一个 Agent”

    逐渐转向:

    “让一个强大的 Main Agent
    通过 Progressive Disclosure
    动态获得 Skills、Tools 和 Context”

    Subagents 仍然非常重要。

    但它们应该解决的是:

    Context Isolation
    Parallelism
    Specialized Tool / Instruction Boundaries
    Black-box Verification

    而不是:

    组织架构映射
    岗位模拟
    为了 Multi-Agent 而 Multi-Agent

    对于 Claude Code 开发体系,一个比较合理的最终形态是:

    Main Agent
    +
    CLAUDE.md
    +
    Skills
    +
    Tools / MCP
    +
    少量 Verification Subagents
    +
    按需 Agent Teams

    这比维护十几个甚至几十个固定 Agent 更简单、更便宜,也更符合 Anthropic 当前推荐的 Agent 架构方向。


    参考资料

  • Anthropic / Claude
    Building agents: When to fold subagents into your main agent loop
    https://claude.com/resources/articles/building-agents-when-to-fold-subagents-into-your-main-agent-loop

  • Anthropic / Claude
    Building multi-agent systems: When and how to use them
    https://claude.com/resources/articles/building-multi-agent-systems-when-and-how-to-use-them

  • Anthropic / Claude
    Multi-agent coordination patterns: Five approaches and when to use them
    https://claude.com/resources/articles/multi-agent-coordination-patterns


  • 推荐行动项

    如果你正在搭建 Claude Code Agent 开发体系,建议按下面顺序优化:

    1. 保持一个强 Main Agent
    2. 精简 CLAUDE.md
    3. 把专业流程沉淀为 Skills
    4. 把实时动作放进 Tools / MCP
    5. 保留少量真正独立的 Verification Agent
    6. Agent Teams 只用于天然可并行任务
    7. 用 Evals 比较 Single-Agent 与 Multi-Agent 的真实效果
    8. 不因为“理论上更专业”而增加 Agent

    最终目标不是:

    Agent 越多越好

    而是:

    用最少的架构复杂度
    获得最高的任务完成质量。

    赞(0)
    未经允许不得转载:171主机测评 » Anthropic《Building agents》深度解读:何时把 Subagent 折叠回主 Agent 循环
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址