DeepAgents · 从入门到精通 目录

§07 后端系统决定数据存在哪

先给结论:所有文件操作都走 BackendProtocol 抽象层。换后端,不换业务代码。

我第一次没搞懂后端,直接上了 FilesystemBackend + CompositeBackend。 结果 .agent_data/ 目录不透明、不持久、gitignore 忽略。 其实我那个场景,用默认的 StateBackend 就够了。

后端全家福

后端 范围 execute 适合
StateBackend 线程作用域 默认;中间结果草稿纸
FilesystemBackend 本地磁盘 本地开发、CI
StoreBackend 跨线程 长期记忆、多会话
ContextHubBackend LangSmith Hub 不要单独 store 的持久化
LocalShellBackend 本地+Shell 本地开发带命令行
沙箱后端 隔离环境 Modal/Daytona/Runloop/LangSmith
CompositeBackend 按路径前缀路由 按路由 混合:默认 State + /memories/ 用 Store

最常用的 CompositeBackend

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

agent = create_deep_agent(
    model="anthropic:claude-sonnet-4-6",
    backend=CompositeBackend(
        default=StateBackend(),                      # 默认走内存
        routes={"/memories/": StoreBackend(...)},    # /memories/ 走持久
    ),
    store=InMemoryStore(),
)

一句话理解:默认存内存,特定路径存长久。

标叔的结论:开发用 StateBackendFilesystemBackend。生产用 CompositeBackend(内存 + Store 持久)。代码执行才上沙箱。别像我一样过度设计。

标叔的经验:StateBackend 把数据存在 LangGraph state 里,线程隔离,无外部依赖。对纯内存场景,它是首选。我后来把那个项目从 FilesystemBackend 退回 StateBackend,清爽很多。

下一章,讲子代理——DeepAgents 最被低估的能力。