Type: concept
Confidence: 0.90
Created: 2026-04-15
Updated: 2026-04-15
Tags: AIAgent中间件LangChain架构Agent系统

DeepAgents 中间件体系

概述

DeepAgents 中间件libs/deepagents/deepagents/middleware/)是 Agent Harness模式 的核心扩展点:每个中间件继承 AgentMiddleware,重写 wrap_model_call()每次 LLM 调用前拦截请求,改写系统提示、工具列表或消息,实现横切能力(规划、文件系统、子代理、上下文压缩、记忆、人机协同等)。

关键内容

中间件机制

各中间件详解

FilesystemMiddleware

注册文件操作工具(lsread_filewrite_fileedit_fileglobgrep),与 BackendProtocol 绑定。当 backend 未实现 SandboxBackendProtocol 时,动态移除 execute 工具(防止误暴露执行面)。大文件策略:分页读取(offset/limit),结果驱逐(超限自动截断)。

SubAgentMiddleware

提供 task 工具,支持三种子代理规格: - SubAgent(声明式,内联执行) - CompiledSubAgent(已编译的 LangGraph 图) - AsyncSubAgent(带 graph_id 的异步远程任务)

自动为子代理注入与主代理对齐的能力(Todo + Filesystem + Summarization + Patch + 可选 Skills + 缓存),保证子调用"能力模型对齐"。

AsyncSubAgentMiddleware

处理异步/远程子代理(AsyncSubAgentgraph_id),提供生命周期工具:启动任务、查询状态、等待完成。仅在存在异步子代理时启用。

SummarizationMiddleware(工厂模式)

create_summarization_middleware(model, backend) 创建。两种触发模式: - 自动:token 计数超阈值时自动触发,用摘要替换旧消息历史 - 手动:提供工具让模型主动压缩上下文 大型工具输出落盘(写入 backend 文件),减少上下文占用。

MemoryMiddleware

memory= 参数有值时启用。将指定记忆文件(如 AGENTS.md)内容注入系统提示,使 Agent 持有持久化指令/偏好知识。放在中间件栈尾部(缓存之后),避免记忆更新破坏 Anthropic prompt cache 前缀。

SkillsMiddleware

skills= 参数有值时启用。从 backend 路径加载技能描述,注入系统提示,实现技能渐进式披露(按需暴露,控制上下文长度)。

PatchToolCallsMiddleware

修正/规范化模型输出中格式异常的工具调用(悬空工具调用修复),提升与不同模型输出格式的兼容性。

AnthropicPromptCachingMiddleware

Anthropic 模型注入 prompt cache 头;非 Anthropic 模型时 unsupported_model_behavior="ignore" 静默跳过。放在尾部靠前,记忆/人机协同之前。

HumanInTheLoopMiddleware

interrupt_on= 参数有值时启用。配置哪些条件下暂停执行等待人工审批。放在栈最末尾。

TodoListMiddleware(来自 LangChain)

始终启用,提供 write_todos 工具,让 Agent 维护结构化待办列表,支持规划能力。

公共 API(middleware/__init__.py __all__

AsyncSubAgent, AsyncSubAgentMiddleware, CompiledSubAgent,
FilesystemMiddleware, MemoryMiddleware, SkillsMiddleware,
SubAgent, SubAgentMiddleware, SummarizationMiddleware,
SummarizationToolMiddleware, create_summarization_tool_middleware

REPL 中间件(libs/repl/

独立包 langchain-repl,提供 ReplMiddleware,支持在 REPL 场景中运行代码解释器,与 CLI/SDK 形成不同入口形态。

来源

相关