claude code创建Subagent(子代理)的过程
这里帮你把这段内容拆解成“是什么、为什么、怎么用”三个层次,方便理解记忆。
一、核心概念:Subagent 是什么?
你可以把 Subagent(子代理) 想象成你手下的一名临时专家员工。
- 独立办公室:它有自己的独立“办公室”(独立的上下文窗口),在里面干活不会弄乱你的办公桌(主对话上下文)。
- 临时工性质:和它沟通只需一句话交代任务,它完成后只把“最终报告”拿回来给你,过程中的草稿、搜索记录、杂乱日志你都看不见。
- 专业分工:你可以为反复做的同一类工作,定制一个专门的员工(自定义 Subagent),每次都用同样的指令,非常省事。
核心好处:
- 保留上下文:把繁杂的探索、搜索过程隔离在外,保持主对话清晰。
- 强制执行约束:可以限制它只能用“眼睛”(只读工具),不能动手修改。
- 复用配置:好的员工定义可以在所有项目里通用。
- 控制成本:简单任务可以派给“实习生”(更快更便宜的模型,如 Haiku)。
二、什么时候用它?(使用时机)
遇到以下情况,就值得派一个 Subagent 出马:
- 任务会污染主对话:比如搜索一堆文件、分析大量日志,这些中间结果你事后根本不想再翻看。
- 有固定的重复工作:你总在重复“审查代码,然后给出改进建议”这种带固定指令的操作。
三、系统自带的“钦差大臣”(内置 Subagents)
Claude Code 有几个内置的“钦差大臣”,会自动启用。你可以先理解它们,再学怎么自定义。
| 内置 Agent | 角色比喻 | 特点 |
|---|---|---|
| Explore(探索者) | 侦察兵 | 最常用。只读、快速,专门搜索分析代码库,不修改任何东西。工作时会跳过你的一些全局设置,以保证速度。 |
| Plan(规划师) | 作战参谋 | 同样只读、快速,用于规划任务,保持主对话干净。 |
| General-purpose(通用) | 预备队 | 继承主对话权限的通用代理,处理杂项任务。 |
四、如何创建自定义 Subagent?(快速上手版)
有两种方式,最简单的是用命令界面生成,就像填表招聘一样。
方法:使用/agents命令创建(类似填招聘表)
假设你要“招聘”一个专门审查代码的代理,步骤如下:
- 打开招聘界面:在 Claude Code 里运行命令
/agents。 - 选择员工类型:切换到 Library(库) 标签,选
Create new agent->Personal。这会把它存成你的“私人班底”,所有项目都能用。 - 口述职位描述:选
Generate with Claude,然后对它说:A code improvement agent that scans files and suggests improvements for readability, performance, and best practices. It should explain each issue, show the current code, and provide an improved version.
(它会自动帮你生成这个代理的名字、描述和核心提示词。) - 限定工作权限:在工具选择界面,只勾选只读工具(Read-only tools)。这样它就只能看,不能改。
- 指定能力级别:选择一个模型,比如 Sonnet,在分析能力和速度之间平衡。简单任务可选更快的 Haiku。
- 选个工牌颜色:选个背景色,方便在界面上认出它。
- 决定是否记笔记:User scope 选项是给它一个记事本(记忆目录),让它能在多次任务中积累经验。不需要就选
None。 - 保存并上岗:按
s保存。之后就可以直接派活:“用我新设的 code-improver 代理审查一下这个项目”。
这样,你就完成了一个自定义 Subagent 的全套创建和使用了。

扩展:ClaudeCode:子Agent的实现方式
ClaudeCode:子Agent的实现方式
模型在跑任务时,所有的上下文都保存在messages列表当中,当跑的任务数过多时,上下文会爆炸,虽然有上下文压缩机制,但是这种方式会将许多关键的信息丢失,导致模型忘记一些信息。而Claude Code使用subagent的方式,指派子agent干活,而不污染主对象。
核心思想
模型会分化子Agent, 主Agent只负责决策和派发任务到子Agent, 而子Agent将会在同一个全新的对话窗口中执行主Agent派发的任务,执行完毕后,主Agent负责接受子Agent的任务结果。通过这种方式,子Agent的上下文不会污染主Agent。
核心创新点
使用task,派生子Agent完成任务,而主Agent只负责决策和收集任务结果。
流程分析
那么Claude Code是怎么进行子Agent的分发的呢?我们一起来看下具体实现。
首先,Claude Code通过绑定派生子Agent工具来实现子Agent派生。
在这里,PARENT_TOOLS绑定的是主Agent的工具,而CHILD_TOOLS绑定的是子Agent的工具。
其中PARENT_TOOLS比CHILD_TOOLS多了一个task工具:
PARENT_TOOLS = CHILD_TOOLS + [
{"name": "task", "description": "Spawn a subagent with fresh context. It shares the filesystem but not conversation history.",
"input_schema": {"type": "object", "properties": {"prompt": {"type": "string"}, "description": {"type": "string", "description": "Short description of the task"}}, "required": ["prompt"]}},
]当大模型需要将任务派发给子Agent的时候,会返回tool_calls为task的任务,此时简短的prompt将会作为参数传递给子Agent, 触发以下代码片段:
# 代码片段:父代理的工具分发逻辑
if tool_name == "task":
desc = tool_args.get("description", "subtask")
prompt = tool_args.get("prompt", "")
# 关键:在这里发生了控制权的转移
output = run_subagent(prompt)
其中run_subagent里面的代码和主agent的代码是相似的,简而言之,subagent就是主agent的拷贝。
sub_messages = [
{"role": "system", "content": SUBAGENT_SYSTEM},
{"role": "user", "content": prompt}
] # fresh context with system message
for _ in range(30): # safety limit
chat_messages = convert_messages_to_chat_messages(sub_messages)
response = child_client.invoke(chat_messages)
assistant_dict = {
"role": "assistant",
"content": response.content,
"tool_calls": response.tool_calls
}
sub_messages.append(assistant_dict)
if not response.tool_calls:
break
for tool_call in response.tool_calls:
tool_name = tool_call.get("name")
tool_args = tool_call.get("args", {})
tool_id = tool_call.get("id")
handler = TOOL_HANDLERS.get(tool_name)
output = handler(**tool_args) if handler else f"Unknown tool: {tool_name}"
sub_messages.append({
"role": "tool",
"content": str(output)[:50000],
"tool_call_id": tool_id
})
return response.content or "(no summary)"不同的是,如果子agent如果达到最大30次调用后,会强制其返回。
到此这篇关于claude code创建Subagent(子代理)的过程的文章就介绍到这了,更多相关claude code创建Subagent内容请搜索脚本之家以前的文章或继续浏览下面的相关文章,希望大家以后多多支持脚本之家!
相关文章

一文详解Claude Code中的五层架构:MCP、Skills、Agent、Subagents、Agent Teams怎么协
5 月初 Anthropic 官方公布了 Claude Code 的五层架构——MCP / Skills / Agent / Subagents / Agent Teams,这个分层不是营销话术,每层都有明确的职责边界和协作方向,下面2026-05-18
在编程中,创建一个“Subagent”的概念可以有多种解释,这取决于你所使用的编程语言和上下文,本文介绍claude code创建Subagent(子代理)的过程,感兴趣的朋友一起看看吧2026-08-25
从聊天框到Agent分享Claude Code真正的提效方式
还在把AI当高级打字机吗,快扔掉逐句命令的聊天框模式,本文将拆解从指挥AI到设定目标的3个实战步骤,助你将单任务耗时从40分钟压缩到20分钟,掌握CLAUDE.md和TodoWrite规划,2026-07-22
如何在 WSL 中部署 Claude Code 并开启 Agent Team 模式
在WSL中部署Claude并并开启AgentTeam模式,通过tmux实现多智能体协同开发,提升代码审查与测试效率,这篇文章给大家介绍在 WSL 中部署 Claude Code 并开启 Agent Team 模式,2026-05-29





最新评论