当前位置: 首页 > news >正文

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

http://www.jsqmd.com/news/683715/

相关文章:

  • OFA-VE部署教程:使用Poetry管理依赖,构建可复现的Python3.11环境
  • 告别碎片化:B站缓存视频一键合并的安卓神器
  • 告别软件调参烦恼:用PSpice手把手教你搭建一个“傻瓜式”硬件PID控制器(附完整电路图)
  • p70 S6激酶重组兔单抗能否解析mTOR信号枢纽?
  • 别再用‘abandon’背单词了!我用这3个App搞定英语词汇分层记忆(附实操截图)
  • 手把手教你用Vivado为ZCU102配置PS端外设:以太网、USB、PCIe一个都不少
  • Brain | 大脑的“隐秘连接”:神经可塑性的连接组储备?
  • visual studio上创建linux程序的新方法
  • 2026年3月热门的伸缩篷厂家推荐,小区车棚/景观棚/充电桩棚/电动推拉棚/膜结构/膜结构车棚,伸缩篷生产厂家哪家可靠 - 品牌推荐师
  • 别再傻傻分不清!5分钟看懂N沟道和P沟道MOS管的型号命名规律(附快速识别表)
  • 避开 Proteus 仿真 IIC 的 3 个常见坑:以 AT89C52 驱动 AT24C02 为例
  • STM32F4实战:用HAL库+FreeRTOS+FreeModbus搭建工业级从机,附完整源码和避坑指南
  • 从POI源码看CellStyle限制:为什么你的EasyExcel导出会报64000样式错误?
  • 测试时数据增强(TTA)技术解析与应用实践
  • 鸿蒙App接入“龙虾”智能体:从0到1打造下一代AI原生应用(附完整代码)
  • 好题集 (12) - LG P4119 [Ynoi2018] 未来日记
  • 别再只用Nginx了!用Squid在Windows搭建高性能HTTP缓存代理实战
  • PCIe链路训练中的“握手”艺术:LTSSM状态机在FPGA原型验证中的实现与调试心得
  • STM32项目构建进阶:手把手教你用CMake管理标准库与HAL库混合工程(基于VSCode)
  • 终极网盘直链解析指南:八大平台高速下载的完整解决方案
  • Java中的权限修饰符
  • Android Studio中文语言包终极指南:告别兼容性问题的高效解决方案
  • fast-mirror-skill 技术拆解:一个小而完整的 Claude Skill 是怎么设计的
  • NocoDB完全指南:5步打造你的可视化数据库管理平台
  • 广播厂家选型攻略|研发与售后双核心,3个高可靠品牌实测解析
  • 蓝桥杯嵌入式备赛:手把手教你移植LCD驱动到STM32G431(附完整工程文件结构解析)
  • 如何正确在 CSS 中加载 JPG 背景图片
  • 告别GPS信号!用PMW3901光流+VL53L1X激光测距,在客厅实现无人机室内悬停(Pixhawk/PX4保姆级教程)
  • 2025最权威的五大降AI率助手推荐榜单
  • 【硬件避坑】H桥一上电就“炸管”冒青烟?一文彻底讲透驱动死区(Dead Time)的生死劫