子任务污染主对话上下文怎么办?
因此这里主要展示了如何构建一个多智能体系统。
在 原作者的Python代码 里,run_subagent 函数就像一个“虫洞”,把任务传送到一个新的平行宇宙(子线程/子上下文)去执行,执行完只带回结果。
在 Java 中,我们通常通过创建新的类实例来实现这种隔离。父 Agent 和子 Agent 拥有各自独立的 messages 列表,互不干扰。
Java 实现代码
subAgent
核心思想:引入分层架构和上下文隔离,让Agent能够分解复杂任务,分配给专门的"子Agent"处理,避免上下文污染。
上下文隔离:每个子任务在干净的环境中执行,不继承父任务的上下文污染
角色专业化:可以通过不同的SYSTEM_PROMPT让子Agent专注特定领域
防递归保护:子Agent不能调用task工具,防止无限递归
资源限制:限制最大轮数,防止死循环
任务委派:TASK 工具
核心思想:将"委派子任务"抽象为一种工具,实现任务分解和并行化。
委派抽象:将"让子Agent做某事"封装为一个工具调用
权限控制:只有父Agent有这个工具,子Agent没有
接口设计:明确的任务描述接口,便于LLM使用
父子协作流程
主从模式:父Agent是管理者,子Agent是工作者
结果聚合:子Agent返回结果,父Agent继续处理
上下文切换:子任务执行时,父Agent暂停等待
可重用子Agent:一个子Agent实例可处理多个任务
架构演进与价值
从 AgentWithTodo 到 AgentWithSubAgents 的升级: 维度AgentWithTodoAgentWithSubAgents架构模式单例模式分层模式(父子)上下文管理共享上下文上下文隔离任务处理线性顺序并行/委派复杂性状态管理分治策略可扩展性有限强大