Claude Code 子代理 (Subagents) 深度解析:架构、机制与最佳实践

独立上下文、并行执行、差异化权限——深入理解 Claude Code 子代理的架构设计与工程实践

Posted by iceyao on Thursday, April 16, 2026

一、引言:为什么需要子代理?

原文链接:How and when to use subagents in Claude Code 发布日期:2026 年 4 月 7 日

Claude Code 在处理复杂的多步骤项目时表现出色,但长会话带来了一个不可忽视的问题:随着对话持续推进,每次文件读取、每次探索、每次未完成的想法都会保留在上下文窗口中——上下文窗口逐渐膨胀,响应速度下降,Token 成本攀升

子代理提供了一个优雅的解决方案:它们就像浏览器标签页——你可以在新标签页中追逐某个切线问题,而不丢失主线进度。

本文导读

章节 内容
第二节 子代理核心概念与架构设计
第三节 五种触发子代理的方式(从临时到自动化)
第四节 四大实用工作模式(研究/并行/审查/管道)
第五节 何时不应使用子代理
第六节 最佳实践与工程建议

二、子代理核心概念与架构设计

2.1 什么是子代理?

子代理(Subagent)是拥有独立上下文窗口的自包含代理实例。当 Claude Code 的主会话生成一个子代理时,该子代理会在独立的环境中工作——读取文件、探索代码或进行修改——完成后仅将精简的结果返回到主对话

子代理概念架构

2.2 核心特性

子代理具备三大核心特性,使其与普通的上下文切换有本质区别:

子代理三大核心特性

特性 说明 优势
独立上下文 子代理拥有全新的上下文窗口 不受主对话历史负担,聚焦当前任务
并行执行 多个子代理可并发运行 多任务并行 = 更短的完成时间
差异化权限 每个子代理可有不同的工具权限 研究代理只读,实现代理可编辑

2.3 内置子代理类型

Claude Code 提供了三种内置子代理类型,覆盖最常见的使用场景:

Claude Code 内置子代理类型

选择建议

  • 通用代理:当任务涉及代码修改时使用(如重构、新功能实现)
  • 计划代理:当需要先理解现有架构再动手时使用(如大型重构前的调研)
  • 探索代理:当只需要搜索和阅读代码时使用(如"认证逻辑在哪里?")

三、五种触发子代理的方式

Claude Code 提供了从临时到完全自动化的五种触发方式,满足不同层次的自动化需求。

五种触发方式对比

3.1 方式一:对话式调用

最直接的使用方式——在对话中用自然语言要求 Claude 使用子代理。适用于所有 Claude Code 界面(终端、VS Code、JetBrains、Web、桌面应用)。

有效的自然语言模式

# 探索型
"使用子代理探索此代码库中的身份验证如何工作"

# 审查型
"让一个单独的代理审查此代码是否存在安全问题"

# 并行型
"并行研究。同时检查 API 路由、数据库模型和前端组件"

# 修复型
"启动子代理以修复不同包中的这些 TypeScript 错误"

结构化提示词模板

Use subagents to explore this codebase in parallel:
1. Find all API endpoints and summarize their purposes
2. Identify the database schema and relationships
3. Map out the authentication flow
Return a summary of each, not the full file contents.

提示技巧

技巧 说明
明确范围 告诉子代理要做什么、不做什么
请求并行 明确说"并行"或"同时"来触发多子代理
指定返回 说明需要摘要、发现列表还是具体建议
要求新视角 需要无偏见分析时,要求使用"新上下文"

Pro Tip:当子代理耗时较长时,Ctrl+B 可将其发送到后台。对话继续进行,结果完成后自动浮现。使用 /tasks 命令查看后台运行状态。

3.2 方式二:自定义子代理

当同一种子代理被反复请求时(安全审查员、测试编写器、文档校对者),应将其定义为可复用的自定义子代理

文件位置

级别 路径 作用域
项目级 .claude/agents/ 与团队共享
用户级 ~/.claude/agents/ 所有项目可用

创建方式

使用 /agents 命令交互式设置,或从描述生成初稿。

完整示例:安全审查代理

---
name: security-reviewer
description: Reviews code changes for security vulnerabilities,
  injection risks, auth issues, and sensitive data exposure.
  Use proactively before commits touching auth, payments,
  or user data.
tools: Read, Grep, Glob
model: sonnet
---

You are a security-focused code reviewer. Analyze the provided
changes for:

- SQL injection, XSS, and command injection risks
- Authentication and authorization gaps
- Sensitive data in logs, errors, or responses
- Insecure dependencies or configurations

Return a prioritized list of findings with file:line references
and a recommended fix for each. Be critical. If you find nothing,
say so explicitly rather than inventing issues.

关键设计要素解析

自定义子代理的设计要素

最佳实践

  • description 中指定触发条件(“before commits touching auth, payments”),不仅仅描述能力
  • tools 遵循最小权限原则:只读代理只给 Read/Grep/Glob
  • 系统提示词应包含兜底行为(“If you find nothing, say so explicitly”),防止 AI 编造问题

3.3 方式三:CLAUDE.md 指令

CLAUDE.md 定义项目级规则,控制 Claude 何时以及如何使用子代理。与自定义代理的区别在于:CLAUDE.md 规则始终加载,塑造每次交互。

适用场景

  • 代码审查应始终使用只读子代理
  • 项目有特定的研究模式需要 Claude 遵循
  • 需要团队成员和会话之间的一致行为

示例配置

## Code review standards

When asked to review code, ALWAYS use a subagent with READ-ONLY
access (Glob, Grep, Read only). The review should ALWAYS check for:

- Security vulnerabilities
- Performance issues
- Adherence to project patterns in /docs/architecture.md

Return findings as a prioritized list with file:line references.

CLAUDE.md 指令机制

3.4 方式四:技能 (Skills)

对于重复运行的复杂多步骤工作流,技能提供了更强大的可复用接口。

技能 vs CLAUDE.md

维度 CLAUDE.md 技能 (Skills)
加载方式 始终加载 按需加载
触发方式 被动(塑造每次交互) 主动(显式调用或自动匹配)
文件结构 单个文件 目录(可含模板、脚本、示例)
适用范围 全局规则 特定工作流

示例:深度审查技能

文件位置:.claude/skills/deep-review/SKILL.md

---
name: deep-review
description: Comprehensive code review that checks security,
  performance, and style in parallel. Use when reviewing staged
  changes before a commit or PR.
---

Run three parallel subagent reviews on the staged changes:

1. Security review - check for vulnerabilities, injection risks,
   authentication issues, and sensitive data exposure

2. Performance review - check for N+1 queries, unnecessary
   iterations, memory leaks, and blocking operations

3. Style review - check for consistency with project patterns
   documented in /docs/style-guide.md

Synthesize findings into a single summary with priority-ranked
issues. Each issue should include the file, line number, and
recommended fix.

这个技能展示了子代理的组合威力——一次调用触发三个并行子代理,分别进行安全、性能、风格审查,最后综合为一份报告。

deep-review 技能:三个并行子代理

注意:技能是一个目录,不是单个文件。除了 SKILL.md,还可以包含 Claude 填充的模板、示例输出、或工作流脚本。

3.5 方式五:挂钩 (Hooks)

挂钩是在 Claude Code 生命周期特定节点自动执行的用户定义操作(Shell 命令、HTTP 端点或 LLM 提示)。

适用场景

  • 每次提交前应自动审查
  • 安全检查应运行无需任何人记住去询问
  • 类似 CI 的质量门应属于本地开发流程

示例:Stop Hook —— 阻止未通过测试的提交

.claude/settings.json 配置:

{
  "hooks": {
    "Stop": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/check-tests.sh"
          }
        ]
      }
    ]
  }
}

.claude/hooks/check-tests.sh 脚本:

#!/bin/bash

INPUT=$(cat)
STOP_HOOK_ACTIVE=$(echo "$INPUT" | jq -r '.stop_hook_active // false')

# 防止无限循环:如果本轮已经阻止过一次,直接放行
if [ "$STOP_HOOK_ACTIVE" = "true" ]; then
  exit 0
fi

# 运行测试套件
if ! npm test --silent > /dev/null 2>&1; then
  jq -n '{
    decision: "block",
    reason: "Tests are failing. Run `npm test` to see the failures and fix them before finishing."
  }'
  exit 0
fi

exit 0

工作原理

Stop Hook:阻止未通过测试的提交

这个模式的价值:Claude 不会在测试失败的状态下结束工作——它会被"推回去"继续修复,直到所有测试通过。相当于给 AI 装了一个"质量门卫"。


四、四大实用工作模式

4.1 模式一:实施前研究

场景:在动手实现之前,需要充分了解现有代码库。

Before I implement user notifications, use a subagent to research:
- How are emails currently sent in this codebase?
- What notification patterns already exist?
- Where should new notification logic live based on the
  current architecture?
Summarize findings, then we'll plan the implementation together.

模式一:实施前研究

优势:主对话不会被数十个文件的内容占满,收到的是提炼后的发现。

4.2 模式二:并行修改

场景:多个文件需要应用相同的模式修改,彼此独立。

Use parallel subagents to update the error handling in these files:
- src/api/users.ts
- src/api/orders.ts
- src/api/products.ts
Each should follow the pattern established in src/api/auth.ts.
Work on all three simultaneously.

模式二:并行修改

关键点:三个文件由三个子代理并行修改,总耗时约等于单个文件的修改时间(而非三倍)。

4.3 模式三:独立审查

场景:需要不受之前对话影响的客观审查。

Use a fresh subagent with read-only access to review my
implementation of the payment flow. It should not see our
previous discussion. I want an unbiased review.

Check for: security vulnerabilities, unhandled edge cases,
and error handling gaps. Be critical.

为什么需要"新上下文"?

为什么独立审查需要"新上下文"

核心洞察:当 Claude 参与了代码的设计和实现过程后,它对自己代码的"审查"往往带有确认偏误。子代理提供了真正的"第二意见"。

4.4 模式四:管道工作流

场景:具有清晰交接的顺序阶段。

管道工作流模式

Let's build this feature as a pipeline:
1. First subagent: Design the API contract and write it to
   docs/api-spec.md
2. Second subagent: Implement the backend endpoints based
   on that spec
3. Third subagent: Write integration tests for the
   implementation
Each stage should complete before the next begins. Use the
output files as the handoff mechanism between stages.

管道模式的精妙之处

设计要点 说明
顺序执行 每个阶段完成后才启动下一个
文件交接 输出文件(而非对话历史)作为阶段间的交接物
上下文隔离 每个子代理只看到本阶段需要的信息
关注点分离 设计者不关心实现,实现者不关心测试策略

五、何时不使用子代理

了解何时不用与知道何时使用同样重要。

使用决策指南

不适合使用的五种情况

情况 原因 替代方案
顺序依赖的工作 步骤 B 需要步骤 A 的完整输出 单个会话处理链
同文件编辑 两个子代理并行编辑同一文件=冲突 串行处理同一文件
小任务 委派开销超过收益 直接在主对话中完成
太多专业代理 选项过多导致自动委派不可靠 精简代理数量
需要协调的工作 子代理之间无法互相通信 使用代理团队 (Agent Teams)

子代理 vs 代理团队:子代理向主对话报告,但彼此无法交流。如果任务需要代理间协调,应该使用 Agent Teams


六、最佳实践与工程建议

6.1 渐进式自动化策略

Anthropic 推荐的自动化路径是从临时到永久、从手动到自动

渐进式自动化路径

实施步骤

  1. 从对话开始:用自然语言请求子代理,观察哪些请求反复出现
  2. 固化规则:将重复出现的模式写入 CLAUDE.md
  3. 创建专用代理/技能:当模式成熟后,创建可复用的定义
  4. 设置自动触发:当确定某些检查必须始终运行时,创建挂钩

6.2 提示词设计原则

编写子代理提示词时,遵循以下原则可显著提升效果:

# 好的提示词结构

## 1. 明确目标
"研究认证模块的实现方式"(而非"看看代码")

## 2. 指定范围
"只查看 src/auth/ 目录下的文件"

## 3. 定义输出
"返回一个包含文件路径、功能描述和潜在问题的表格"

## 4. 设定约束
"不要修改任何文件,只做只读分析"
原则 好的做法 不好的做法
目标清晰 “查找所有 SQL 注入风险” “检查代码”
范围明确 “只看 src/api/ 目录” “看看整个项目”
输出定义 “返回问题列表+修复建议” “告诉我结果”
权限最小 “只读访问(Read, Grep)” “给所有工具权限”

6.3 权限管理策略

不同类型的子代理应配置不同的工具权限:

权限管理策略

原则:能用只读就不给编辑权限,能限制工具就不给完整权限。

6.4 后台执行与任务管理

当子代理执行时间较长时,充分利用 Claude Code 的后台能力:

操作 快捷键/命令 说明
后台发送 Ctrl+B 当前子代理任务移至后台
查看任务 /tasks 查看所有后台运行的任务
继续对话 正常输入 后台任务不阻塞主对话
结果浮现 自动 子代理完成后结果自动返回

6.5 常见陷阱与规避

陷阱 症状 规避方法
上下文浪费 子代理返回大量原始内容 在提示词中要求"返回摘要而非原始内容"
并行冲突 多个子代理修改同一文件 确保并行任务操作不同文件
代理泛滥 自动委派变得不可靠 限制自定义代理数量(5-8 个为宜)
过度委派 简单任务也用子代理 只在 10+ 文件或 3+ 独立任务时启用
权限过松 审查代理意外修改代码 严格配置 tools 白名单

七、总结与关键要点

子代理的核心价值

子代理的核心价值

速查决策树

  1. 识别信号:需要探索 10+ 文件?涉及 3+ 独立任务?需要无偏见审查?→ 使用子代理
  2. 选择方式:临时使用 → 对话式 | 反复使用 → 自定义代理 | 团队规范 → CLAUDE.md/技能 | 必须执行 → 挂钩
  3. 配置权限:只读场景 → Read/Grep/Glob | 编辑场景 → 加上 Write/Bash
  4. 管理结果:耗时任务 → Ctrl+B 后台 | 多任务 → /tasks 监控

一句话总结

子代理让你在不丢失主线的情况下并行追逐多条线索——它是 Claude Code 处理复杂任务的核心机制,掌握它等于解锁了 AI 编程的并行化能力。


参考资料

  1. How and when to use subagents in Claude Code - Claude Blog
  2. Claude Code Subagents Documentation
  3. Claude Code Skills Documentation
  4. Claude Code Hooks Guide
  5. Agent Teams Documentation

「真诚赞赏,手留余香」

爱折腾的工程师

真诚赞赏,手留余香

使用微信扫描二维码完成支付