DeepAgents 的子 Agent 如何实现上下文隔离

不是重新开一个 LLM,而是复用了同一个编译好的图,但每次调用时传入一个全新的、干净的 State。 上下文隔离的本质是数据层面的隔离,而非模型实例的隔离。

核心机制:图复用 + State 隔离

DeepAgents 的子 Agent 生命周期分为两个阶段:

Build time(仅一次)

create_deep_agent 阶段,框架把每个子 Agent 配置编译为一个 CompiledStateGraph,并以名称为 key 缓存在内存中。这个编译过程只发生一次,后续所有调用都复用这个编译好的图。

Run time(每次调用)

每次主 Agent 调用 task 工具时,执行流程如下:

  1. 过滤父 State :把父 Agent 的 messagestodosstructured_responseskills_metadatamemory_contents 等字段全部排除
  2. 构建全新消息列表 :只包含本次任务描述,如 [{"role": "user", "content": "请研究XXX"}]
  3. 调用缓存的图 :对这个干净的 State 调用 ainvoke
  4. 提取结果返回 :从子 Agent 结果的 messages 中提取最终消息,作为 ToolMessage 返回给主 Agent

用伪代码表示就是:

python 复制代码
def task(description, subagent_type):
    # 关键:不包含父级历史记录,只传任务描述
    state["messages"] = [{"role": "user", "content": description}]
    
    # 在隔离环境中执行子Agent
    result = sub_agent.invoke(state)
    
    # 只把最终结果返回给父Agent
    return ToolMessage(result["messages"][-1].content)

模型实例的复用与可选覆盖

关于 LLM 实例,分两种情况:

  • 默认情况 :子 Agent 与主 Agent 共享同一个 LLM 实例 (如 shared_llm),避免重复初始化,节省资源
  • 可选覆盖 :通过 model 参数为子 Agent 单独指定不同模型(如主 Agent 用 Claude,子 Agent 用 GPT-4o)
python 复制代码
research_subagent = {
    "name": "research-agent",
    "description": "用于深度研究",
    "system_prompt": "你是专业研究员",
    "tools": [internet_search],
    "model": "openai:gpt-4o",  # 可选:覆盖主Agent模型
}

类比理解

可以把这个机制类比为函数调用

复制代码
主Agent 就像 main() 函数
子Agent 就像一个被调用的函数 func()

- 函数定义(编译图)只有一份,不会每次调用都重新定义
- 但每次调用时,传入全新的参数(干净的 State)
- 函数内部的局部变量(中间推理过程)对外不可见
- 只有 return 值(最终结果)会返回给调用方

一句话总结 :子 Agent 的上下文隔离不是"重新开一个 LLM",而是复用同一个编译好的图,但每次传入一个全新的、只包含任务描述的 State 。子 Agent 的中间推理过程(工具调用、思考链等)全部留在自己的 State 里,主 Agent 只收到最终的 ToolMessage 结果。


相关推荐
Y幽谷客17 分钟前
Python加载本地大模型(Qwen3.5 8B)
python·大模型
伞伞悦读1 小时前
【第36期】Python 目录与路径详解:pathlib、文件遍历、创建、复制、移动和删除风险
开发语言·python
线上放牧人1 小时前
Windows删除图标缓存
windows·python·pyqt
qq_5470261792 小时前
Python 变量和简单数据类型
python
智搜广告3 小时前
智搜广告:科技行业AI回答优化公司如何破局
大数据·python·elasticsearch·geo
IpdataCloud3 小时前
AI智能体调用工具怎么核验来源IP?归属地、网络类型与代理风险识别(含Python代码)
数据库·python·tcp/ip
2601_966949654 小时前
只拿到股票代码还不够:量化程序到底还需要哪些标的信息?——从数据建模开始理解股票元数据
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
蒸鱼Yuzheng4 小时前
Python 游戏测试开发怎么准备:日志解析、接口校验、并发与可维护性
自动化测试·python·测试开发·面试题·游戏测试
Ivanqhz4 小时前
BM1688 双核架构
python·深度学习·神经网络·cnn·mlir
Java后端的Ai之路4 小时前
Python进阶探索17 - Python中的深拷贝与浅拷贝
人工智能·python·ai·浅拷贝·深拷贝