news 2026/4/24 0:18:54

S04|子代理:给 Agent 开 “独立小房间”,上下文不乱、主线不飘

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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 summary

3. 子代理工具集更小、更安全

不给它无限递归能力:

  • 可以读文件
  • 可以执行安全命令
  • 可以搜索查询
  • 不允许再创建子代理

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 角色,而是多一个干净、独立、可丢弃的上下文,让父代理专心盯主线,杂事外包不扰民。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/24 0:18:48

【豆包电脑版邀请码】输入邀请码免费抽奖一次

下载全能 AI 助手 – 豆包电脑版:https://www.doubao.com/pc/desktop-fission/invited?activityId10004&invitedCode05K2W8M,帮我完成大奖助力吧!下载完成后需在豆包电脑版中登录然后填写邀请码:05K2W8M,你也可以…

作者头像 李华
网站建设 2026/4/22 20:41:29

终极网盘直链解析指南:八大平台高速下载的完整解决方案

终极网盘直链解析指南:八大平台高速下载的完整解决方案 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼…

作者头像 李华
网站建设 2026/4/22 20:37:21

python email-validator

# 聊聊Python里的email-validator 邮箱验证这件事,说起来简单,做起来却有不少门道。平时写代码的时候,经常需要验证用户输入的邮箱地址是否合法,很多人第一反应就是用正则表达式。但真正深入做过这个功能的人都知道,邮…

作者头像 李华