Deep Agents介绍

Deep Agents 介绍

Deep Agents 是一个 agent harness,它的核心机制和其他 Agent 框架完全一样------就是那个"调模型 → 模型请求工具 → 执行工具 → 结果塞回上下文 → 再调模型"的循环。虽然循环本身不新,但真实任务里光有一个裸循环是不够的------上下文会爆、工具结果会丢、长任务会迷路、危险操作没人拦。Deep Agents 把这些工程问题提前解决了,做成内置能力,而不是让每个使用者自己搭。四个内置能力包括:执行环境(Execution environment)、上下文管理(Context management)、委派(Delegation)、操控(Steering)。

目录

  • [一、执行环境(Execution environment)](#一、执行环境(Execution environment))
    • [1.1 Tools(工具)](#1.1 Tools(工具))
    • [1.2 Virtual filesystem(虚拟文件系统)](#1.2 Virtual filesystem(虚拟文件系统))
    • [1.3 Filesystem permissions(文件系统权限)](#1.3 Filesystem permissions(文件系统权限))
    • [1.4 Code execution(代码执行)](#1.4 Code execution(代码执行))
  • [二、上下文管理(Context management)](#二、上下文管理(Context management))
    • [2.1 Skills(技能)](#2.1 Skills(技能))
    • [2.2 Memory(记忆)](#2.2 Memory(记忆))
    • [2.3 Summarization and context offloading(摘要和上下文卸载)](#2.3 Summarization and context offloading(摘要和上下文卸载))
    • [2.4 Prompt caching(提示缓存)](#2.4 Prompt caching(提示缓存))
  • 三、委派(Delegation)
    • [3.1 任务规划(Task planning)](#3.1 任务规划(Task planning))
    • [3.2 子智能体(Subagents)](#3.2 子智能体(Subagents))
  • 四、操控(Steering)
    • [4.1 人类介入(Human-in-the-loop)](#4.1 人类介入(Human-in-the-loop))

一、执行环境(Execution environment)

执行环境是 Agent 运行的环境,让你能够通过类型化事件流,实时跟进正在发生的一切------包括消息、工具调用、值和委派任务。它有四层:

1.1 Tools(工具)

Tools(工具)是最外层,也是基础循环直接打交道的东西。它支持自定义函数、LangChain 工具,以及任何 MCP 服务器提供的工具。这一层不新鲜,就是"模型能调什么"的清单。具体分三种来源:自定义工具、LangChain 工具、MCP 工具。

1.2 Virtual filesystem(虚拟文件系统)

Virtual filesystem(虚拟文件系统)不是一个真实磁盘,而是可插拔后端:内存状态、本地磁盘、LangGraph store、复合路由,或带权限规则的自定义后端。暴露给模型的操作包括 ls、read_file、write_file、edit_file、delete、glob、grep,以及沙箱后端才有的 execute。关键设计是:文件系统是其他多个能力的基础设施------skills、memory、代码执行、上下文管理都建立在它之上。

1.3 Filesystem permissions(文件系统权限)

Filesystem permissions(文件系统权限)是声明式访问控制。规则按声明顺序求值,首次匹配即生效,无匹配则默认允许。每条规则包含 operations(读/写)、paths(用于匹配文件或目录的 Glob 模式)、mode(allow/deny)。这让你能把 Agent 限制在 /workspace/ 内、保护 .env 或凭据文件、给子 Agent 比父 Agent 更窄的权限。一个重要的边界说明:权限不适用于沙箱后端,因为沙箱支持任意命令执行------权限管的是文件工具,管不住 shell 里的 cat。

1.4 Code execution(代码执行)

Code execution(代码执行)分两条路径,对应两种不同需求:沙箱后端提供 execute 工具跑 shell 命令,适合装依赖、跑测试、调 CLI、操作真实文件系统;解释器提供 eval 工具在 QuickJS 运行时里跑 JavaScript,适合循环、批处理、确定性数据转换、程序化工具调用,但没有 shell、不能装包、无文件系统和网络访问。选型逻辑很清晰:需要真实系统能力用沙箱,只需要轻量编程层用解释器。

二、上下文管理(Context management)

上下文管理(Context management)控制 Agent 知道什么、它能在 token 限制内运行多久,以及它在不同会话之间保留什么。它包含四个层级:

2.1 Skills(技能)

技能为 Deep Agent 打包了专业的工作流、领域知识和自定义指令。

每个技能都遵循 Agent Skills 标准,存放在一个包含 SKILL.md 文件的目录中。技能还可以包含脚本、模板、参考文档和其他支持性资源。

Deep Agents 通过渐进式披露(progressive disclosure)来加载技能:智能体在启动时读取 SKILL.md 的头部元数据(frontmatter),只有当任务需要时,才读取完整的技能内容。这保持了启动上下文的紧凑,同时又能按需提供丰富的能力。

2.2 Memory(记忆)

记忆为 Deep Agent 提供了跨对话的持久化上下文,例如编码风格、偏好设置、约定规范和项目指南。

记忆使用 AGENTS.md 文件,创建智能体时通过 memory 参数传入。与技能不同,记忆文件总是被加载的,并且内容存储在配置的后端中(StateBackend、StoreBackend 或 FilesystemBackend)。

智能体还可以根据交互和反馈更新记忆,这样偏好和模式就能延续下去,无需在每个对话线程中重新说明。

2.3 Summarization and context offloading(摘要和上下文卸载)

Harness 负责管理上下文,以便 Deep Agent 能够在 token 限制内处理长时间运行的工作,同时将最相关的信息保持在视野范围内。这个上下文流转过程包含四个部分:

  • 输入上下文:系统提示词、记忆、技能和工具提示词定义了智能体启动时所拥有的内容。
  • 压缩:内置的卸载(offloading)和摘要(summarization)机制会压缩对话历史和大型中间结果。
  • 隔离:子智能体(Subagents)将繁重的子任务隔离出去,只返回最终结果(见"委派"部分)。
  • 长期记忆:虚拟文件系统中的持久化存储让信息能够跨线程传递。

这些机制共同支持了超出单个上下文窗口的多步任务,同时减少了手动修剪上下文的工作和 token 消耗。

2.4 Prompt caching(提示缓存)

对于 Anthropic 和 Amazon Bedrock 的模型,create_deep_agent 会自动对系统提示词中的静态部分(基础智能体指令、记忆和每轮重复的技能内容)应用提示词缓存。这避免了对相同 token 的跨调用重复处理,从而降低了长时间运行智能体的延迟和成本。当使用 Anthropic 模型,或 Bedrock 模型(Claude 或 Nova)时,提示词缓存默认启用。

三、委派(Delegation)

委派(Delegation)组件使智能体能够将大型问题拆解为更小、可并行处理的工作单元。它包含两个层级:

3.1 任务规划(Task planning)

任务规划是一项可选启用的 Harness 能力,让智能体在执行期间维护一个结构化的任务列表。规划通常对以下场景有用:

  • 漫长或复杂的多步骤任务
  • 能力较弱的模型,它们能从明确的问责/记账工具中获益
  • 从智能体状态流式输出进度的 UI(见 Todo 列表)

将 TodoListMiddleware 传给 middleware 参数,即可为智能体提供一个 write_todos 工具,用于在执行期间维护结构化的任务列表。任务支持状态追踪(pending 待处理、in_progress 进行中、completed 已完成),并持久化在智能体状态中。这为智能体提供了一个轻量级的规划层,用于组织长时间运行和多步骤的工作。

3.2 子智能体(Subagents)

Harness 包含一个内置的 task 工具,允许主智能体为隔离的、长时间运行的、多步骤的或并行的任务创建临时的子智能体。可用的子智能体类型有两种:

  • 同步子智能体(默认)会阻塞监督者,直到它们返回一份单一的报告。
  • 异步子智能体 并行运行,并支持通过 launch(启动)、check(检查)、update(更新)和 cancel(取消)工具进行飞行中的中途操控。

子智能体执行提供以下特性:

  • 隔离或继承的上下文 :默认情况下,每次调用都会创建一个带有自己上下文的新智能体实例(mode: "isolated")。使用 mode: "fork" 可以改为继承父级的完整对话历史。见 Forked subagents(分叉子智能体)。
  • 自主执行:子智能体独立运行直至完成。
  • 单一交接:它向主智能体返回一份最终报告。
  • 可配置策略:使用默认的通用子智能体(默认启用),或定义自定义子智能体。
  • 无状态消息:子智能体是无状态的,无法发回多条消息。
  • 上下文与 token 效率:繁重的子任务工作保持隔离,并被压缩成一个紧凑的结果。

四、操控(Steering)

操控组件赋予了人类在运行时控制智能体行为的能力,并为智能体的工作设定文件系统权限。

4.1 人类介入(Human-in-the-loop)

Deep Agents 与 LangGraph 的中断(interrupts)机制集成,可以在敏感的工具调用前暂停流程,等待人工批准。通过在 create_deep_agent 中设置 interrupt_on 参数即可启用此行为。

interrupt_on 接受一个将工具名称映射到中断配置的字典。例如,interrupt_on={"edit_file": True} 会在每次编辑前暂停,允许你在执行前批准调用、添加指导或修改工具输入参数。这提供了一个运行时安全与控制层,适用于破坏性操作、昂贵的 API 调用以及交互式调试。

相关推荐
椒颜皮皮虾྅1 小时前
模型部署不再卡在环境上:DeploySharp 四大推理引擎与 Windows/Linux 离线交付实战
linux·运维·开发语言·人工智能·windows·计算机视觉·cuda
梦幻精灵_cq1 小时前
《SGR修行之路》——二○二一五二〇,初识终端点红裳
python·生活
Kobebryant-Manba1 小时前
IEKT向量矩阵流程&评估
人工智能·算法·矩阵
看浪的路人1 小时前
第2讲:LLM API 统一网关——把 OpenAI/Claude/文心一言 管起来
人工智能·文心一言
奈落241 小时前
工程界讲角色边界,控制论讲博弈与稳定性:从 Swarms 的实践清单到《自动化学报》的协同综述,多智能体‘协同‘这件事有两套语言
人工智能·深度学习·自动化·ai 编程
我要见SA姐11 小时前
Chrome 内存泄漏诊断指南:从现象定位到根因排查
ide·vscode·python·自动化·编辑器
小王R语言学习1 小时前
PaddleNLP:基于飞桨的大模型开发套件
人工智能·其他·paddlepaddle
椒颜皮皮虾྅1 小时前
让 C# 读懂整张图:DeploySharp 驱动 PaddleOCR v4/v5/v6,打通 OCR 全流程
开发语言·人工智能·深度学习·学习·c#·ocr·cuda
roman_日积跬步-终至千里1 小时前
【数据建模入门】从一家小店看懂数仓与机器学习:先理业务,再串技术
数据仓库·人工智能·机器学习·数据分析·数据建模