S04|子代理:给 Agent 开 “独立小房间”,上下文不乱、主线不飘
上一章 S03我们给 Agent 加了待办计划让它能按步骤执行复杂任务不再跑偏。但新问题又来了Agent 查资料、读文件、试命令时会产生一大堆中间过程消息把主对话塞得又乱又长越往后推理越慢、越容易出错。这一章 S04我们用子代理子智能体解决这个问题把杂事丢进独立上下文干完只带回结果主对话永远干净清爽。本章核心信息核心闭环子任务使用全新、独立的上下文执行工具数量5 个新增task子任务工具核心思想大任务不必挤在一个上下文里探索性工作交给子代理先看懂本章所有名词1. 父代理Parent Agent就是和你直接聊天、负责主线任务的那个主 Agent。它持有完整对话历史盯着最终目标。2. 子代理Subagent父代理临时 “派出去” 干活的小助手。它有自己独立的对话记录干完就交总结然后退出。3. 上下文隔离父代理一套消息记录子代理另一套消息记录互不干扰。子代理的乱七八糟中间步骤不会污染主对话。4. 上下文噪声那些为了得出答案产生的中间过程反复读文件、试错命令、查询日志、临时思考……这些对最终结果没用但会占满上下文。5. Fork继承上下文子代理不完全从零开始而是复制一份父代理的历史再接着做子任务。适合需要基于之前讨论内容继续干活的场景。6. 摘要返回子代理干完活不把全部过程丢回来只返回一句精炼结果。这是上下文减负的关键。这一章到底要解决什么问题举个真实场景你问“这个项目用什么测试框架”为了回答这句话Agent 可能要读pyproject.toml读requirements.txt查项目目录试跑测试命令看配置文件这一大堆操作都会塞进主对话历史。结果就是主上下文越来越臃肿模型推理变慢、注意力分散、容易跑偏。根源所有任务都堆在同一个上下文里噪声太多。解决方案把局部探索、查询、试错类工作交给子代理在独立上下文里做。最小心智模型一张图看懂子代理父代理主对话 | | 接到一个需要查资料的小任务 v 派生子代理 → 开一个全新干净上下文 | | 子代理疯狂读文件、执行命令、试错 | 这些过程全留在子代理内部 v 子代理完成 → 只把精炼结果返回 | v 父代理拿到结果继续主线任务核心真相子代理的价值不是多一个 AI而是多一个干净、独立、可丢弃的上下文。最小实现子代理怎么做1. 给父代理加一个 task 工具让模型可以主动发起子任务{ name: task, description: 在独立上下文执行子任务返回总结, input_schema: { type: object, properties: { prompt: {type: string} }, required: [prompt] } }2. 子代理用全新的消息列表这是隔离灵魂def run_subagent(prompt: str): # 全新上下文不继承父消息 sub_messages [{role: user, content: prompt}] # 子代理自己循环执行 summary agent_loop(sub_messages, ...) return summary3. 子代理工具集更小、更安全不给它无限递归能力可以读文件可以执行安全命令可以搜索查询不允许再创建子代理4. 只返回摘要不返回全过程子代理干完活只丢回一句结果该项目使用 pytest 作为测试框架。而不是把几十轮工具调用全粘回来。最关键的数据结构记住这个最小骨架class SubagentContext: messages: list # 独立上下文 tools: list # 可用工具 handlers: dict # 工具路由 max_turns: int # 最大轮数防止死循环就这 4 样足够实现一个稳定可用的子代理。子代理到底有什么用1. 给父上下文 “减负降噪”子代理的中间垃圾信息不会进主对话父代理始终专注主线。2. 让子任务更专注给子代理的指令可以极度明确“只告诉我用了什么测试库”“只检查这个函数有没有 bug”“只总结这段代码功能”3. 为后续多智能体团队打基础今天是临时子代理明天就是规划师、程序员、测试员、评审员……S04 是多智能体系统的第一块基石。进阶概念什么是 Fork继承上下文默认子代理是空白启动完全独立。但有些任务需要基于之前的对话继续“根据我们刚才定的方案去写个测试。”这时可以 fork注意fork 不是入门第一步先学会隔离再学继承。初学者最容易踩的 5 个坑1. 觉得子代理是为了 “炫技多 AI”错它首先是上下文隔离工具不是用来秀数量的。2. 把子代理全量历史塞回父代理那就完全失去隔离意义上下文照样爆炸。3. 一上来就搞一堆角色什么 planner、coder、reviewer、explorer……先把最简单的子执行器做对再加角色。4. 不给子代理设最大轮数没限制 → 直接无限循环卡死。5. 让子代理权限过大允许它无限嵌套子代理 → 直接递归崩溃。S03 → S04 升级了什么模块S03S04结构单个 Agent 计划父 Agent 子代理隔离上下文单一越来越大主上下文干净子任务独立任务处理线性一步步做杂事外包主线专注效率步骤多了变慢变乱长期运行更稳定扩展性适合单流程任务适合复杂、多阶段任务本章教学边界这一章不讲多智能体团队协作持久化子代理后台运行复杂权限体系文件系统隔离只牢牢守住一个核心子代理 独立上下文 子任务执行 摘要返回一句话总结本章子代理的核心不是多一个 AI 角色而是多一个干净、独立、可丢弃的上下文让父代理专心盯主线杂事外包不扰民。