DeepAgents · 从入门到精通 目录

§08 子代理:把脏活分给干净上下文

先给结论:子代理是"上下文隔离的任务委派"。主 Agent 不被子任务的细节淹没。

我做长研究时吃过亏。所有中间步骤塞进一个上下文,读到后面,前面的重点全被挤掉。 子代理的解法很妙:主 Agent 把活派给一个全新、干净上下文的 Agent。 子代理干完,只回一个总结给主 Agent。

最简单的字典定义

research_subagent = {
    "name": "researcher",          # 必需:唯一标识
    "description": "深度搜索网络信息",  # 必需:触发条件
    "system_prompt": "你是搜索大师",  # 必需:不继承主代理
    "tools": [internet_search],    # 可选:写了就全覆盖
    "model": "openai:gpt-5.4",     # 可选:换模型
}

三个字段是必需的:namedescriptionsystem_promptdescription 要写触发条件,不是功能介绍。这很关键。

标叔的经验:我见过一个真实 bug:description 写得太模糊,主 Agent 不知道何时委派,子代理从没被调用。把描述改成"用户要生成任何图片时调用",委派准确率立刻上来了。

多专家协作

subagents = [
    {"name": "data-collector", "description": "收集原始数据",
     "system_prompt": "全面收集数据", "tools": [web_search]},
    {"name": "data-analyzer", "description": "分析数据",
     "system_prompt": "提取洞察", "tools": [statistical_analysis]},
    {"name": "report-writer", "description": "撰写报告",
     "system_prompt": "写专业报告", "tools": [format_document]},
]
agent = create_deep_agent(system_prompt="你协调多专家", subagents=subagents)

其他两种形态

默认会有一个 general-purpose 子代理。你不定义也会自动加。 想关掉:GeneralPurposeSubagentProfile(enabled=False)

标叔的结论:子代理的核心价值是"上下文隔离"。复杂任务不拆,上下文迟早爆。拆,就干净。

注意:子代理不继承父代理的工具(除非不写 tools)。不继承 middleware、skills。要用的,显式传。详见 §19 配置规范。

下一章,讲随用随取的技能包:Skills。