Store 并设置 use_longterm_memory=True 来扩展深度智能体,使其具备 长期记忆。这可以实现跨线程和对话的持久存储。
设置
它是如何工作的
当启用长期记忆时,深度智能体维护 两个独立的文件系统:1. 短期(瞬时)文件系统
- 存储在智能体的状态中
- 只在单个线程内持久存在
- 线程结束时文件将丢失
- 通过标准路径访问:
/notes.txt
2. 长期(持久)文件系统
- 存储在 LangGraph Store 中
- 在所有线程和对话中持久存在
- 文件无限期存活
- 通过特殊前缀访问:
/memories/notes.txt
/memories/ 路径约定
长期记忆的关键是/memories/ 路径前缀:
- 以
/memories/开头的路径的文件存储在存储中(持久) - 没有此前缀的文件保持为瞬态状态
- 所有文件系统工具(
ls、read_file、write_file、edit_file)都与两者兼容
线程间持久化
文件在/memories/ 中可以从任何线程访问:
应用场景
用户偏好
存储跨会话持久存在的用户偏好设置:自我改进说明
智能体可以根据反馈更新其自身的指令:知识库
在多轮对话中积累知识:研究项目
维持会话间的研究状态:存储实现
任何 LangGraphBaseStore 实现都适用:
InMemoryStore(开发)
适用于测试和开发,但重启后数据会丢失:PostgresStore(生产环境)
用于生产,请使用持久化存储:最佳实践
使用描述性路径
使用清晰、分层的路径组织长期文件:记录持久化的内容
在系统提示中,明确说明何时使用长期存储与短期存储:通过助手ID隔离存储
对于多租户应用程序,提供一个assistant_id 以隔离存储:
在生产中使用持久化存储
文件列表
ls 工具显示来自两个文件系统的文件:
/memories/ 前缀。
局限性
店铺是必需的
您必须在启用长期记忆时提供存储。智能体必须使用正确的路径
智能体必须学会使用/memories/ 前缀来实现持久化。系统提示会教授这一点,但智能体必须遵循指示。