上下文类型
输入上下文
输入上下文是在启动时提供给您的深度智能体的信息,成为其系统提示的一部分。最终提示由多个来源组成:系统提示
您提供的自定义指令加上内置的智能体指导。
记忆
配置时始终加载的持久
AGENTS.md 文件。技能
在相关时按需加载的能力(渐进式披露)。
工具提示
使用内置工具或自定义工具的说明。
系统提示
您的自定义系统提示会附加到内置系统提示之前,后者包括规划、文件系统工具和子智能体的指导。使用它来定义智能体的角色、行为和知识:systemPrompt 参数是静态的,这意味着它不会随每次调用而改变。
在某些用例中,您可能需要动态提示:例如,告诉模型“您具有管理员访问权限”与“您具有只读访问权限”,或者从长期记忆注入用户偏好,如“用户偏好简洁响应”。
如果您的提示依赖于上下文或 runtime.store,请使用 dynamicSystemPromptMiddleware 来构建上下文感知指令。
您的中间件可以读取 request.runtime.context 和 request.runtime.store。
有关添加自定义中间件和示例,请参阅自定义以及LangChain 上下文工程指南。
如果工具单独使用上下文或 runtime.store,您不需要中间件;工具直接接收 runtime 对象(包括 runtime.context 和 runtime.store)。仅当系统提示本身必须随请求变化时才添加中间件。
记忆
记忆文件([AGENTS.md](https://agents.md/))提供持久上下文,这些上下文**始终加载**到系统提示中。使用记忆存储项目约定、用户偏好和应适用于每个对话的关键指南:
技能
技能提供按需能力。智能体在启动时读取每个SKILL.md 的 frontmatter,然后仅在确定技能相关时加载完整技能内容。这减少了令牌使用量,同时仍提供专门的工作流:
工具提示
工具提示是塑造模型使用工具方式的指令。所有工具都暴露模型在其提示中看到的元数据——通常是模式和描述。通过tools 参数传递的工具会将该工具元数据(模式和描述)呈现给模型。深度智能体内置工具打包在中间件中,通常也会使用更多工具指导更新系统提示。
内置工具 – 添加辅助功能(规划、文件系统、子智能体)的中间件会自动将特定于工具的指令附加到系统提示,创建解释如何有效使用这些工具的工具提示:
- 规划提示 – 用于
write_todos以维护结构化任务列表的指令 - 文件系统提示 –
ls、read_file、write_file、edit_file、glob、grep(以及使用沙箱后端时的execute)的文档 - 子智能体提示 – 使用
task工具委派工作的指导 - 人在环路提示 – 在指定工具调用时暂停的用法(当
interrupt_on设置时) - 本地上下文提示 – 当前目录和项目信息(仅限 CLI)
tools 参数传递的工具会将其描述(来自工具模式)发送给模型。您还可以添加自定义中间件来添加工具并附加其自己的系统提示指令。
对于您提供的工具,请确保提供清晰的名称、描述和参数描述。这些指导模型关于何时以及如何使用工具的推理。在描述中包含何时使用工具,并描述每个参数的作用。
完整系统提示
深度智能体的系统消息——在运行开始时模型接收的组装系统提示——由以下部分组成:- 自定义
system_prompt(如果提供) - 基础智能体提示
- 待办事项列表提示:如何使用待办事项列表进行规划的说明
- 记忆提示:
AGENTS.md+ 记忆使用指南(仅在提供memory时) - 技能提示:技能位置 + 带有 frontmatter 信息的技能列表 + 用法(仅在提供技能时)
- 虚拟文件系统提示(文件系统 + 适用时的执行工具文档)
- 子智能体提示:任务工具用法
- 用户提供的中间件提示(如果提供自定义中间件)
- 人在环路提示(当
interrupt_on设置时)
运行时上下文
运行时上下文是您在调用智能体时传递的每次运行配置。它不会自动包含在模型提示中;模型仅在工具、中间件或其他逻辑读取它并将其添加到消息或系统提示时才会看到它。使用运行时上下文存储用户元数据(ID、偏好、角色)、API 密钥、数据库连接、功能标志或您的工具和辅助所需的其他值。 使用contextSchema 定义该数据的形状,通常是一个 Zod 对象模式(例如 z.object({ ... }))。在您传递给 invoke / ainvoke 的选项对象的 context 字段中传递运行时值。有关完整详情,请参阅运行时和LangGraph 运行时上下文。
在工具内部,从作为工具处理程序 runtime 参数提供的 ToolRuntime 实例读取 runtime.context:
上下文压缩
长时任务会产生大型工具输出和长对话历史。 上下文压缩减少了智能体工作记忆中的信息大小,同时保留与任务相关的细节。 以下技术是确保传递给 LLM 的上下文保持在其上下文窗口限制内的内置机制:卸载
大型工具输入和结果存储在文件系统中,并用引用替换。
摘要
当接近限制时,旧消息被压缩为 LLM 生成的摘要。
卸载
深度智能体使用内置文件系统工具自动卸载内容,并根据需要搜索和检索该卸载内容。 当工具调用输入或结果超过令牌阈值(默认 20,000)时,会发生内容卸载:-
工具调用输入超过 20,000 个令牌:文件写入和编辑操作会在智能体的对话历史中留下包含完整文件内容的工具调用。
由于此内容已持久保存到文件系统,因此通常是冗余的。
当会话上下文超过模型可用窗口的 85% 时,深度智能体会截断较旧的工具调用,用指向磁盘上文件的指针替换它们,并减少活动上下文的大小。

-
工具调用结果超过 20,000 个令牌:当发生这种情况时,深度智能体会将响应卸载到配置的后端,并用文件路径引用和前 10 行的预览替换它。然后,智能体可以根据需要重新读取或搜索内容。

摘要
当前的摘要行为(通过
wrapModelCall 进行模型内摘要、准确的令牌计数和自动 ContextOverflowError 回退)需要 deepagents>=1.6.0。max_input_tokens 的 85%),并且没有更多上下文可卸载时,深度智能体会摘要消息历史。
此过程有两个组成部分:
- 上下文内摘要:LLM 生成对话的结构化摘要,包括会话意图、创建的工件和下一步——这将替换智能体工作记忆中的完整对话历史。
- 文件系统保存:完整的原始对话消息作为规范记录写入文件系统。

- 在模型
max_input_tokens的 85% 时触发(来自其模型配置文件) - 保留 10% 的令牌作为最近上下文
- 如果模型配置文件不可用,则回退到 170,000 个令牌触发 / 保留 6 条消息
- 如果任何模型调用引发标准 ContextOverflowError,深度智能体会立即回退到摘要并使用摘要 + 保留的最近消息重试
- 较旧的消息由模型摘要
摘要工具中间件需要
deepagents>=1.6.0。SummarizationToolMiddleware API 参考。
使用子智能体进行上下文隔离
子智能体解决了上下文膨胀问题。当主智能体使用具有大型输出的工具(网络搜索、文件读取、数据库查询)时,上下文窗口会快速填满。子智能体隔离这项工作——主智能体仅接收最终结果,而不是产生它的数十个工具调用。您还可以将每个子智能体与主智能体分开配置(例如,模型、工具、系统提示和技能)。 工作原理:- 主智能体有一个
task工具来委派工作 - 子智能体使用其自己的新鲜上下文运行
- 子智能体自主执行直到完成
- 子智能体将单个最终报告返回给主智能体
- 主智能体的上下文保持干净
- 委派复杂任务:使用子智能体处理会弄乱主智能体上下文的多步骤工作。
-
保持子智能体响应简洁:指示子智能体返回摘要,而不是原始数据:
- 使用文件系统处理大型数据:子智能体可以将结果写入文件;主智能体读取其需要的内容。
长期记忆
使用默认文件系统时,您的深度智能体会将其工作记忆文件存储在智能体状态中,该状态仅在单个线程内持久存在。 长期记忆使您的深度智能体能够跨不同线程和对话持久保存信息。 深度智能体可以使用长期记忆存储用户偏好、累积知识、研究进度或任何应超出单个会话持久的信息。 要使用长期记忆,您必须使用CompositeBackend,将特定路径(通常是 /memories/)路由到 LangGraph Store,该存储提供持久的跨线程持久性。
CompositeBackend 是一种混合存储系统,其中某些文件无限期持久保存,而其他文件则保持在单个线程范围内。
/memories/ 文件。
您提供后端配置、存储和系统提示指令,告诉智能体保存什么和保存在哪里。
例如,您可以提示智能体将偏好存储在 /memories/preferences.txt 中。
路径开始时为空,智能体在用户分享值得记住的信息时使用其文件系统工具(write_file、edit_file)按需创建文件。
要预置记忆,请在 LangSmith 上部署时使用 Store API。
有关设置和用例,请参阅长期记忆。
最佳实践
- 从正确的输入上下文开始 – 保持记忆最小化以存储始终相关的约定;使用专注的技能处理特定任务的能力。
- 利用子智能体处理繁重工作 – 委派多步骤、输出繁重的任务以保持主智能体上下文干净。
- 在配置中调整子智能体输出 – 如果在调试时注意到子智能体生成长输出,可以向子智能体的
system_prompt添加指导以创建摘要和综合发现。 - 使用文件系统 – 将大型输出持久保存到文件(例如子智能体写入或自动卸载),以便活动上下文保持较小;模型可以在需要详细信息时使用
read_file和grep拉入片段。 - 记录长期记忆结构 – 告诉智能体
/memories/中的内容以及如何使用它。 - 为工具传递运行时上下文 – 使用
context存储用户元数据、API 密钥和工具所需的其他静态配置。
相关资源
- 辅助 – 上下文管理概述、卸载、摘要
- 子智能体 – 上下文隔离、运行时上下文传播
- 长期记忆 – 跨线程持久性
- 技能 – 渐进式披露和技能创作
- 后端 – 文件系统后端和 CompositeBackend
- 上下文概念概述 – 上下文类型和生命周期

