引言:AI Agent开发的下一站

在AI应用开发领域,我们经常面临这样的挑战:如何让AI不仅仅是聊天机器人,而是真正能够操作文件、执行任务、管理项目的生产力工具?如何构建既强大又安全的AI应用?DeepAgents框架正是为解决这些问题而生。

DeepAgents是基于LangGraph的企业级AI Agent框架,它将文件系统、子智能体、长期记忆、命令执行和人机协作等高级功能整合到一个统一的框架中。今天,我们将深入探索这个框架的核心特性和实际应用。

一、框架概览:AI的瑞士军刀

什么是DeepAgents?

DeepAgents就像是给AI装上了一整套专业工具箱:

  • 文件系统:让AI能像人类一样读写、编辑、搜索文件

  • 子智能体:主Agent可以委派任务给专业助手

  • 长期记忆:跨会话保存重要信息

  • 命令执行:安全的shell命令执行能力

  • 人机协作:关键操作前征求人类同意

核心架构

DeepAgents采用分层架构设计:

  1. 中间件层:7个默认中间件按顺序处理请求

  2. 存储层:灵活的后端存储策略

  3. 智能体层:主Agent与子智能体协同工作

  4. 持久化层:Checkpointer和Store确保状态持久化

二、核心组件深度解析

1. Middleware中间件:AI的功能模块

中间件是DeepAgents的核心创新,每个中间件为AI添加特定能力:

FilesystemMiddleware(文件系统中间件)

from deepagents import create_deep_agent

agent = create_deep_agent(
    system_prompt="你是一个文件管理助手"
)

# AI现在可以执行文件操作
result = agent.invoke({
    "messages": [{"role": "user", "content": "创建/data/test.txt文件,内容是'Hello World'"}]
})

提供7个核心工具:

  • ls():列出目录文件

  • read_file():读取文件内容

  • write_file():创建新文件

  • edit_file():编辑现有文件

  • glob():模式匹配查找文件

  • grep():搜索文件内容

  • execute():执行shell命令

SubAgentMiddleware(子智能体中间件)

让主Agent能够委派复杂任务给专业助手:

code_reviewer = {
    "name": "code-reviewer",
    "description": "代码审查专家,用于审查代码质量、安全性和最佳实践",
    "system_prompt": "你是一个资深代码审查专家...",
    "tools": [analyze_code],
}

agent = create_deep_agent(
    subagents=[code_reviewer],
    system_prompt="你是一个智能助手"
)

# 主Agent自动决定何时调用子智能体
result = agent.invoke({
    "messages": [{"role": "user", "content": "审查/src/main.py的代码质量"}]
})

优势

  • 任务隔离:每个子任务独立上下文

  • 并行处理:多个子Agent同时工作

  • 节省Token:只返回摘要,不保留详细过程

HumanInTheLoopMiddleware(人机交互中间件)

from langchain.agents.middleware import InterruptOnConfig

agent = create_deep_agent(
    interrupt_on={
        "execute": True,  # 执行命令前需要批准
        "write_file": InterruptOnConfig(
            interrupt_before=True,  # 执行前中断
            interrupt_after=False,  # 执行后不中断
        ),
        "edit_file": True,
    }
)

2. Backend后端存储:AI的"硬盘"选择

DeepAgents提供多种存储策略,适应不同场景:

StateBackend(临时存储)

from deepagents.backends import StateBackend

agent = create_deep_agent(
    backend=lambda rt: StateBackend(rt)
)

特点:文件存储在Agent状态中,不跨会话

StoreBackend(持久存储)

from deepagents.backends import StoreBackend
from langgraph.store.memory import InMemoryStore

store = InMemoryStore()
agent = create_deep_agent(
    backend=lambda rt: StoreBackend(rt),
    store=store
)

特点:文件存储在LangGraph Store中,跨会话共享

CompositeBackend(混合存储 - 企业级推荐)

from deepagents.backends import CompositeBackend, StateBackend, StoreBackend

composite_backend = CompositeBackend(
    default=lambda rt: StateBackend(rt),  # 默认临时存储
    routes={
        "/memories/": lambda rt: StoreBackend(rt),  # 长期记忆路径
        "/projects/": lambda rt: StoreBackend(rt),  # 项目文件路径
        "/cache/": lambda rt: StateBackend(rt),     # 缓存路径
    }
)

agent = create_deep_agent(backend=composite_backend)

路由规则(最长前缀优先):

  • /memories/notes.txt → StoreBackend

  • /cache/temp.txt → StateBackend

  • /test.py → 默认Backend

3. Store长期记忆:记住重要信息

Store与Backend的区别:

  • Store:存储结构化数据(用户偏好、历史记录)

  • Backend:存储文件内容(文档、代码文件)

# 保存用户偏好到长期记忆
result = agent.invoke({
    "messages": [{
        "role": "user", 
        "content": "记住我的偏好:我喜欢简洁的代码风格,使用4空格缩进"
    }]
})

# AI会自动创建:/memories/user_prefs.json

三、实际应用案例

案例1:代码分析助手(企业级)

from deepagents import create_deep_agent
from deepagents.backends import CompositeBackend, StateBackend, StoreBackend
from langgraph.store.memory import InMemoryStore
from langgraph.checkpoint.memory import MemorySaver

# 配置专业子智能体
subagents = [
    {
        "name": "code-reviewer",
        "description": "代码审查专家",
        "system_prompt": "你是代码审查专家,关注代码质量、安全性和性能..."
    },
    {
        "name": "doc-generator",
        "description": "文档生成专家",
        "system_prompt": "你是技术文档专家,生成清晰易读的文档..."
    }
]

# 企业级配置
store = InMemoryStore()
checkpointer = MemorySaver()
composite_backend = CompositeBackend(
    default=lambda rt: StateBackend(rt),
    routes={
        "/memories/": lambda rt: StoreBackend(rt),
        "/projects/": lambda rt: StoreBackend(rt),
    }
)

agent = create_deep_agent(
    subagents=subagents,
    backend=composite_backend,
    store=store,
    checkpointer=checkpointer,
    interrupt_on={
        "execute": True,
        "write_file": True
    },
    system_prompt="你是企业级代码分析助手"
)

# 使用:分析整个代码库
result = agent.invoke({
    "messages": [{
        "role": "user", 
        "content": "分析/src目录下的所有Python代码,生成审查报告和文档"
    }]
})

执行流程

  1. 使用glob()找到所有Python文件

  2. 并行启动多个code-reviewer子智能体审查不同文件

  3. 启动doc-generator子智能体生成文档

  4. 汇总结果,返回综合报告

案例2:性能测试编排系统

# 定义K6性能测试工作流
composite_backend = CompositeBackend(
    default=lambda rt: StateBackend(rt),  # 临时文件
    routes={
        "/memories/": lambda rt: StoreBackend(rt),  # 历史测试数据
    }
)

agent = create_deep_agent(
    subagents=[
        {
            "name": "script-generator",
            "description": "K6脚本生成专家",
            "tools": [generate_k6_script]
        },
        {
            "name": "test-executor", 
            "description": "测试执行专家",
            "tools": [execute_k6_test]
        }
    ],
    backend=composite_backend,
    interrupt_on={
        "execute_k6_test": True,  # 执行测试前需要批准
    }
)

# 提交测试需求
result = agent.invoke({
    "messages": [{
        "role": "user",
        "content": """
        为以下API创建性能测试:
        - GET https://api.example.com/users
        - POST https://api.example.com/users
        
        测试要求:
        - 100并发用户
        - 持续5分钟
        - 响应时间 < 200ms
        """
    }]
})

案例3:智能研究助手(并行处理)

agent = create_deep_agent(
    system_prompt="你是一个研究助手,当需要研究多个独立主题时,为每个主题启动并行子智能体"
)

result = agent.invoke({
    "messages": [{
        "role": "user",
        "content": """
        研究以下三个AI框架并比较:
        1. LangChain
        2. LlamaIndex  
        3. AutoGPT
        
        对比维度:
        - 核心功能
        - 优缺点
        - 适用场景
        - 社区活跃度
        """
    }]
})

# AI会自动启动3个并行子智能体,分别研究三个框架

四、最佳实践指南

1. Backend选择策略

# 场景1:简单应用,单会话
agent = create_deep_agent()  # 默认StateBackend

# 场景2:需要跨会话记忆
agent = create_deep_agent(
    backend=lambda rt: StoreBackend(rt),
    store=InMemoryStore()
)

# 场景3:企业级应用(推荐)
agent = create_deep_agent(
    backend=CompositeBackend(
        default=SandboxBackend(...),  # 代码执行
        routes={
            "/memories/": StoreBackend,  # 长期记忆
            "/projects/": StoreBackend,  # 项目文件
            "/cache/": StateBackend,     # 临时缓存
        }
    ),
    store=InMemoryStore()
)

2. 子智能体使用原则

应该使用子智能体的场景

  • 复杂多步骤任务

  • 可以并行处理的独立任务

  • 需要专业领域知识的任务

  • 需要隔离上下文避免主线程被淹没

不应该使用子智能体的场景

  • 简单的单步操作

  • 需要看到完整推理过程的任务

  • 任务之间有强依赖关系

3. 安全配置建议

# 开发环境:相对宽松
interrupt_on = {
    "execute": True,  # 只拦截命令执行
}

# 生产环境:严格保护
interrupt_on = {
    "execute": True,
    "write_file": True,
    "edit_file": True,
    "task": InterruptOnConfig(
        interrupt_before=False,
        interrupt_after=True,  # 查看子智能体结果
    ),
}

4. 性能优化技巧

  1. 使用Prompt缓存AnthropicPromptCachingMiddleware自动缓存系统提示词

  2. 合理配置摘要阈值:根据模型上下文长度调整SummarizationMiddleware

  3. 利用并行执行:框架自动并行执行多个task调用

  4. 优化存储策略:使用CompositeBackend将文件存储到最合适的位置

五、常见问题解答

Q1:StateBackend和StoreBackend的主要区别?

A

  • StateBackend:文件存储在Agent状态中,通过Checkpointer持久化,不跨会话

  • StoreBackend:文件存储在LangGraph Store中,跨会话共享所有文件

Q2:如何让不同子智能体使用不同模型?

A

subagents = [
    {
        "name": "fast-agent",
        "description": "快速响应的助手",
        "model": "gpt-3.5-turbo",  # 使用更快的模型
    },
    {
        "name": "smart-agent", 
        "description": "深度分析的助手",
        "model": "gpt-4",  # 使用更强的模型
    },
]

Q3:如何查看Agent的执行过程?

A

# 方式1:开启debug模式
agent = create_deep_agent(debug=True)

# 方式2:使用LangSmith追踪
import os
os.environ["LANGCHAIN_TRACING_V2"] = "true"

# 方式3:流式输出
for chunk in agent.stream({...}):
    print(chunk)

Q4:如何处理大文件?

A:FilesystemMiddleware自动处理:

  • 读取时使用分页:read_file("/large.txt", offset=0, limit=100)

  • 工具结果太大时自动保存到/large_tool_results/目录

六、框架优势总结

1. 完整的文件系统支持

  • 7个核心文件操作工具

  • 灵活的存储后端选择

  • 自动处理大文件和分页

2. 智能的任务委派系统

  • 主Agent智能调度子智能体

  • 支持并行处理节省时间

  • 上下文隔离节省Token

3. 企业级存储方案

  • 临时存储、持久存储、沙箱执行灵活组合

  • CompositeBackend提供路由机制

  • 支持复杂的文件组织结构

4. 安全可控的操作

  • 灵活的人机交互配置

  • 操作前后都可中断

  • 保护敏感操作和文件

5. 性能优化内置

  • 自动对话摘要防止上下文溢出

  • Prompt缓存节省API成本

  • 并行执行提升效率

七、学习路径建议

初学者路径

  1. 阅读框架深度解析的"框架概览"部分

  2. 运行示例代码的前两个示例

  3. 参考快速参考手册进行实践

进阶开发者路径

  1. 深入阅读框架深度解析的所有章节

  2. 运行所有示例代码,理解不同配置差异

  3. 根据实际需求定制子智能体和Backend

企业级应用路径

  1. 学习CompositeBackend的路由机制

  2. 设计合理的文件组织结构

  3. 配置完善的人机交互策略

  4. 参考完整示例构建生产级应用

八、快速开始

from deepagents import create_deep_agent

# 最简单的开始
agent = create_deep_agent(
    system_prompt="你是一个智能助手"
)

result = agent.invoke({
    "messages": [{"role": "user", "content": "创建一个项目结构,包含src、tests、docs目录"}]
})

print(result)

结语:AI应用开发的新范式

DeepAgents代表了AI应用开发的一个重要进步。它不仅仅是另一个AI框架,而是为企业级AI应用提供了一套完整的解决方案。通过将文件操作、任务委派、长期记忆和人机协作等高级功能整合到统一的框架中,DeepAgents让开发者能够构建出真正强大、安全、可靠的AI应用。

无论你是要构建代码分析工具、自动化测试系统、研究助手还是完整的企业级AI工作台,DeepAgents都提供了必要的构建模块和最佳实践。

关键启示

  • 从简单的聊天机器人升级到能够操作系统的智能助手

  • 利用子智能体实现复杂任务的分解和并行处理

  • 通过人机交互确保AI操作的安全可控

  • 选择合适的存储策略平衡性能和持久化需求

DeepAgents框架正在重新定义我们与AI协作的方式,让AI从被动的问答工具转变为主动的生产力伙伴。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐