Skip to content

上下文工程

Agent 的表现不只取决于模型,还取决于“在当前步骤看到什么”。Deep Agents 把上下文管理拆成 启动信息、运行时依赖、自动压缩、文件 offloading、subagent 隔离和长期 memory,避免把所有信息 都堆进一个 system prompt。

五种上下文

类型典型内容生命周期主要入口
启动上下文system prompt、memory metadata、skills metadata每次 Agent runsystem_promptmemoryskills
运行时上下文user id、tenant id、连接句柄、请求配置当前 invoke/runcontext schema 与 runtime context
工作上下文messages、todos、当前文件与工具结果当前 threadLangGraph state、filesystem
隔离上下文某个 subagent 的详细轨迹一次委派或独立 threadtask、AsyncSubAgent
长期上下文用户偏好、Agent 规则、跨 thread memoryStore 生命周期StoreBackend 与 namespace

前端类比

可以把启动上下文类比为应用配置,运行时上下文类比为 request context,工作上下文类比为当前 页面 state,subagent 隔离类比为 Web Worker 的独立内存,长期 memory 类比为有租户命名空间的 持久存储。

Deep Agents 原生语义:这些信息最终以 system prompt、runtime context、LangGraph state、 文件或 subagent messages 的形式参与模型调用。它们不是一个统一对象,也不会自动获得相同的 持久化和访问控制。

压缩、Offloading 与隔离

三种机制解决的问题不同:

  • Offloading 主动把原始材料写入文件,模型需要时再读取。
  • Subagent isolation 让独立任务的详细工具轨迹不进入主 Agent。
  • Summarization 在接近限制时压缩已有 messages,是最后一道预算管理而不是无损存储。

启动上下文要小而稳定

适合放入启动上下文的内容:

  • Agent 的职责与不可变约束。
  • 工具选择和输出格式的简短规则。
  • 稳定的项目约定或用户偏好入口。
  • Skills 的 name/description 目录。

不适合的内容:完整日志、整站文档、每次请求变化的凭据、大型检索结果。Memory 文件会被加载到 system prompt,应保持精炼;Skills 采用渐进披露,适合更长的按需说明。

Runtime context 不等于 prompt

Runtime context 适合传递 user id、tenant id、数据库连接或服务客户端。工具和 middleware 可以 读取它,但不需要把所有字段暴露给模型。敏感值应保留在工具实现或凭据代理中,只把模型完成任务 所需的最小语义加入 prompt。

一个安全顺序是:

  1. 应用认证用户并建立 typed context。
  2. Backend namespace 从已认证 context 派生。
  3. 工具在执行时再次校验 context 与目标资源。
  4. 模型只看到完成任务所需的非敏感描述。

文件 Offloading 模式

当工具返回大结果时,不要把全部内容直接返回 ToolMessage。可以让工具或 Agent:

  1. 将原始结果写到 /artifacts/search-001.json
  2. 在消息里返回记录数、字段说明和文件路径。
  3. 使用 grepread_file 分段提取需要的证据。
  4. 最终报告只引用结论与来源,不复制全部原始数据。

文件不是永久真相来源。其生命周期和一致性由 backend 决定,关键 artifact 仍应进入受控持久存储。

何时使用 subagent 隔离

适合隔离的问题应有明确输入和输出,例如“比较三份官方文档并返回差异表”。不适合把共享业务 状态拆散到多个 subagent 后再期待模型自动合并。主 Agent 应负责:

  • 提供最小任务说明和验收格式。
  • 控制 subagent 的模型、工具和权限。
  • 校验返回结果,而不是无条件信任。
  • 决定哪些证据进入主上下文或文件。

上下文预算检查表

  • 每个工具的 schema 是否精炼且不重复。
  • 大结果是否有 artifact 路径和摘要。
  • Memory 是否只保留稳定事实与偏好。
  • Skill 是否通过 metadata 可准确触发。
  • Subagent 是否能在独立上下文完成清晰任务。
  • Summarization 后是否仍保留关键约束和来源。
  • Trace 是否会记录不应进入观测平台的敏感数据。

先修

下一步

官方参考

学习文档整合站点