一、DeepAgents 框架核心(2)
1.6 兼容Langgraph和Langchain
LangChain 生态下的其他 Agent(比如
AgentExecutor、ReActAgent、StructuredChatAgent 等)可以挂载为 DeepAgents 的子代理,但不能直接挂 —— 需要先把这些 Agent 封装成「符合 LangGraph StateGraph 规范的图」(核心是状态里包含 messages 键),再用 CompiledSubAgent 封装。简单说:DeepAgents 认的是「LangGraph 格式的图」,不是直接认 LangChain Agent;但所有 LangChain Agent 都能转成 LangGraph 图,所以最终都能挂。
兼容Langgraph编译图
- DeepAgents 子代理的 “准入门槛”
DeepAgents 调度子代理的核心要求只有一个:子代理的执行逻辑必须是**「带有
messages 键的状态图」**(不管这个图是直接用 StateGraph 写的,还是从其他 Agent 转来的)。这个 messages 键就是你之前看 result 结构时的核心字段 ——DeepAgents 靠它传递对话、工具调用、执行结果,没有这个键就无法和主代理通信。- 演示LangGraph格式图挂载
兼容Langchain单智能体
1.7 流程人机交互 (HITL)
有些工具作可能比较敏感,需要人工批准才能执行。深度代理通过 LangGraph 的中断功能支持人机参与的工作流程。您可以使用
interrupt_on 参数配置哪些工具需要批准。
1.7.1 交互步骤说明
步骤1:设置tool是否进行人工互动
根据不同工具的风险等级配置
步骤2:配置检查点
人工互动需要一个检查点,在中断和恢复之间保持代理状态:
步骤3:设置相同的thead_id
恢复时,必须使用相同的配置和相同的
thread_id步骤4:行动决策配置
决策列表必须符合以下
action_requests 顺序:字段 | 含义 |
action_requests | 需要审批的操作列表(如删库 delete_database、删文件 delete_file),包含操作名、参数、风险描述! {'action_requests': [{'name': 'delete_table', 'args': {'tablename': 'users'}, 'description': "描述"} |
review_configs | 允许的审批操作( approve 同意 /reject 拒绝 /edit 编辑参数) |
id | 中断会话唯一标识(确保恢复时匹配同一个会话) |
1.7.2 中断交互
当代理调用多个需要批准的工具时,所有中断都会被批量处理成一个中断。必须按顺序为每个动作提供决策
1.7.3 编辑参数
结合之前的删库 / 删文件场景,编写完整的「edit 审批处理」代码,包含参数编辑、多操作编辑、执行验证等核心逻辑,注释清晰可直接运行:
1.8 后端存储 (Backends)
DeepAgents 的 Backend 系统是为 Agent 构建的 “虚拟文件系统”,核心作用是定义 Agent 生成文件的最终存储位置,也是实现跨线程数据共享、落地长期记忆能力的核心载体。

核心机制:
- 被动触发逻辑:Backend 仅在 Agent 主动调用文件操作工具(如
write_file、edit_file、read_file)时才会被激活。需注意的是,Agent 的思考过程、对话上下文等临时状态仅存储在内存(State)中,不会自动写入 Backend,只有显式执行文件操作的内容才会进入该系统。
- 路径映射规则:Agent 操作的所有文件均基于 “虚拟路径”(如
/report.txt、/store/memory.txt),Backend 会按照预设规则将这些虚拟路径映射到实际物理存储介质 —— 比如本地硬盘、Redis 数据库、内存等,实现 “虚拟路径” 到 “物理存储” 的无感转换。
存储行为对照表:
行为 | Backend 是否存储 | 存储位置 |
Agent 说:"你好" | 否 | 仅在当前对话内存 (State) |
Agent 思考过程 | 否 | 仅在当前对话内存 (State) |
Agent 调用 write_file("a.txt", "内容") | 是 | Backend (硬盘/数据库) |
1.8.1 后端类型概览
DeepAgents 提供了四种标准的后端实现,适用于不同的开发和生产场景:
后端类型 | 存储介质 | 适用场景 | 类比 |
StateBackend (默认) | 内存 (State) | 临时文件、中间运算结果。会话结束即销毁。 | 浏览器的“无痕模式” |
FilesystemBackend | 本地硬盘 | 本地开发、调试、需要直接查看生成文件的场景。 | 电脑的本地磁盘 |
StoreBackend | 数据库 (KV Store) | 生产环境、跨 Agent 共享数据、持久化记忆 (Redis/Postgres)。 | 云盘 (iCloud/OneDrive) |
CompositeBackend | 混合存储 | 生产环境最佳实践。区分“临时文件”和“重要记忆”。 | 系统盘 (C盘) + 数据盘 (D盘) |
1.8.2 本地文件存储 (FilesystemBackend)
场景描述:
在本地开发或调试时,我们希望 Agent 生成的文件直接出现在项目文件夹中,方便开发者查看和验证。
FilesystemBackend 将 Agent 的虚拟路径直接映射到宿主机的物理文件系统。功能特点:
- 直观可见:生成的文件可以直接在 IDE 或文件管理器中打开。
- 安全隔离:推荐开启
virtual_mode=True,将 Agent 限制在指定的工作目录(root_dir)内,防止越权访问系统敏感文件。
代码示例:
1.8.3 数据库/内存存储 (StoreBackend)
场景描述:
在生产环境或分布式系统中,文件不适合存储在本地磁盘。
StoreBackend 利用 LangGraph 的 Store 机制,将文件内容作为 Key-Value 数据存储在数据库(如 Redis、Postgres)或内存中。这对于实现跨线程记忆共享至关重要。功能特点:
- 持久化:配合 RedisStore 可实现数据持久保存。
- 共享性:不同线程(Thread)甚至不同 Agent 可以通过访问同一个 Store 来共享数据。
- 适配器模式:
StoreBackend充当适配器,将文件操作转换为 KV 存储操作。
代码示例:
1.8.4 混合存储策略 (CompositeBackend)
场景描述:
这是最灵活且推荐的生产环境配置。
CompositeBackend 允许你根据文件路径的前缀,将文件路由到不同的后端。例如,将临时文件存本地,将重要记忆存数据库。配置逻辑:
- 默认路由 (Default):处理普通路径,通常映射到
FilesystemBackend(本地)或StateBackend(临时)。
- 特定路由 (Routes):处理特定前缀路径(如
/store/),映射到StoreBackend(数据库)。
代码示例:
1.9 Middleware 核心概念
Middleware 是 DeepAgents 的「流程拦截器」,可以在 Agent 执行的关键生命周期节点(如工具调用前 / 后、思考完成后、回复生成前)插入自定义逻辑,实现:
- 操作日志记录
- 权限校验 / 参数过滤
- 工具调用结果修改
- 异常捕获 / 兜底处理
- 自定义监控 / 告警
案例实现一个中间件,进行日志输出:
- 工具调用前日志:记录调用的工具名和参数;
- 工具调用后日志:记录工具执行结果和耗时。
@wrap_tool_call实现
1.10 Agent Skills (技能扩展)
DeepAgents 提供的 Skills(技能) 机制,是为智能体(Agent)注入领域知识与专业能力的核心方式。Skills 本质是可复用、可插拔的 “能力包”,核心由指令文档(SKILL.md)及配套资源构成,能让 Agent 在运行过程中,根据任务场景的实际需求动态加载、调用对应的技能知识,无需修改 Agent 核心逻辑即可快速扩展专业能力。
核心概念:
- SKILL.md:技能的核心描述文件,是 Agent 学习和使用该技能的 “说明书”。文件整体分为两部分 —— 头部的元数据(Frontmatter)(以 YAML 格式定义 定义name 和 description)和正文的具体指令(以 Markdown 格式编写),Agent 会通过解析该文件掌握技能的使用方法、适用场景及操作流程。
- 渐进式披露:Skills 机制的核心优化策略,用于解决大模型上下文窗口有限的问题。Agent 启动时仅读取所有技能的元数据(轻量信息,占用极少上下文),仅记录 “技能名称、适用场景、触发关键词” 等基础信息;只有当用户任务匹配某一技能的触发条件时,Agent 才会加载该技能的详细指令内容,有效避免无关信息占用上下文,提升任务执行效率。

标准技能目录结构:
一个完整的 DeepAgents 技能包遵循标准化的文件目录结构,不同文件各司其职,确保技能可复用、易维护,典型结构如下:
各文件 / 目录的具体功能:
- SKILL.md(必选)
技能的核心载体,是 Agent 唯一需要解析的文件,典型结构如下:
- requirements.txt(可选)
声明技能运行所需的第三方依赖包及版本,例如:
作用:部署技能时可一键安装依赖,避免因环境缺失导致技能执行失败。
- resources/(可选)
template/:存放各类模板文件,如 “数据清洗报告模板.md”“财务报表模板.xlsx”,Agent 可调用模板快速生成标准化输出;examples/:存放技能使用示例,如 “原始数据示例.csv”“清洗后数据示例.csv”,帮助 Agent 理解技能的预期输入 / 输出;config/:存放配置文件(如 JSON/YAML 格式),如 “数据清洗规则.json”,定义固定规则(如日期格式、字段映射),避免硬编码在 SKILL.md 中。
存放技能配套的静态资源,按用途细分:
- scripts/(可选)
补充说明
- 技能包的核心是
SKILL.md,其余文件均为辅助,可根据技能复杂度选择是否添加;
- 所有文件需遵循 “轻量化” 原则,尤其是 SKILL.md 的详细指令部分,避免内容过长导致上下文超限;
- 技能包支持动态加载 / 卸载,可通过 DeepAgents 的 API 将技能注册到 Agent,也可在运行时移除无需使用的技能。
SKILL.md 标准格式示例:
文件路径:
base/skills/code-reviewer/SKILL.md代码示例:加载外部 Skills 文件
关键点:
- 物理存储:将
SKILL.md存放在实际的文件目录中 (base/skills/code-reviewer/)
- FilesystemBackend:使用
FilesystemBackend将本地目录挂载到 Agent 的虚拟文件系统中。
- Skills 路径映射:
skills=["skills"]指向的是虚拟路径,Agent 会通过 Backend 自动映射到物理路径。
📎 参考文章
- 一些引用
- 引用文章
欢迎您在底部评论区留言,一起交流~
Loading...
