CompositeBackend 将特定路径路由到持久存储来扩展 deep agents 的 长期记忆。这实现了混合存储,其中一些文件跨线程持久化,而其他文件保持临时状态。
设置
通过使用CompositeBackend 将 /memories/ 路径路由到 StoreBackend 来配置长期记忆:
工作原理
当使用CompositeBackend 时,deep agents 维护 两个独立的文件系统:
1. 短期(临时)文件系统
- 存储在 agent 的状态中(通过
StateBackend) - 仅在单个线程内持久化
- 线程结束时文件丢失
- 通过标准路径访问:
/notes.txt,/workspace/draft.md
2. 长期(持久)文件系统
- 存储在 LangGraph Store 中(通过
StoreBackend) - 跨所有线程和对话持久化
- 在 agent 重启后仍然存在
- 通过以
/memories/为前缀的路径访问:/memories/preferences.txt
路径路由
CompositeBackend 根据路径前缀路由文件操作:
- 以
/memories/开头的路径的文件存储在 Store 中(持久化) - 没有此前缀的文件保持在临时状态
- 所有文件系统工具(
ls、read_file、write_file、edit_file)都适用于两者
CompositeBackend 在存储之前会剥离路由前缀。例如,/memories/preferences.txt 在 StoreBackend 中存储为 /preferences.txt。Agent 始终使用完整路径。有关详情,请参阅 CompositeBackend。跨线程持久化
/memories/ 中的文件可以从任何线程访问:
从外部代码访问记忆 (LangSmith)
如果在 LangSmith 上部署您的 agent,您可以使用 Store API 从服务端代码(agent 外部)读取或写入记忆。StoreBackend 使用命名空间 (assistant_id, "filesystem") 存储文件。
键不包含
/memories/ 前缀,因为 CompositeBackend 在存储之前会剥离它。有关详情,请参阅 路径路由。用例
用户偏好
存储跨会话持久化的用户偏好:自我改进指令
Agent 可以根据反馈更新自己的指令:知识库
通过多次对话建立知识:研究项目
跨会话维护研究状态:Store 实现
任何 LangGraphBaseStore 实现均可工作:
InMemoryStore (开发)
适合测试和开发,但数据会在重启时丢失:PostgresStore (生产)
对于生产环境,使用持久存储:FileData 模式 (Schema)
通过StoreBackend 存储的文件使用以下模式:
create_file_data 助手来创建格式正确的文件数据:
最佳实践
使用描述性路径
使用清晰的路径组织持久文件:记录记忆结构
在您的系统提示中告诉 agent 什么存储在何处:清理旧数据
定期清理过时的持久文件,以保持存储的可管理性。选择正确的存储
- 开发:使用
InMemoryStore进行快速迭代 - 生产:使用
PostgresStore或其他持久存储 - 多租户:考虑在您的 store 中使用基于
assistant_id的命名空间
将这些文档连接 到 Claude、VSCode 以及更多通过 MCP 获取实时答案的工具。

