Skip to main content

Long-termMemory

心智模型

长期记忆为 Agent 提供了跨会话、跨线程的持久化数据存储能力。它基于 LangGraph 的 Store,采用命名空间+键的层级结构组织 JSON 文档。Agent 通过工具的 ToolRuntime 读写 Store,在每次调用时传入包含用户 ID 等标识的 context,实现跨对话的记忆存取。

二级标题及内容

  • 【用法】Usage 创建 Store(InMemoryStore 用于测试,生产环境用 PostgresStore),并将其传给 create_agent(store=store)。Agent 即可通过工具利用 runtime.store 读写长期记忆。

  • 【存储结构】Memory storage 所有记忆以 JSON 格式按 (namespace, key) 层级组织。支持 get(精确查询)、put(存储)和 search(自然语言搜索,需配置嵌入模型 IndexConfig)。

  • 【工具中读取】Read long-term memory in tools 工具通过 runtime.store.get(namespace, key) 读取指定记忆。若存储不存在则返回空,工具可据此返回默认值或指示“未知”。

  • 【工具中写入】Write long-term memory from tools 工具使用 runtime.store.put(namespace, key, data) 写入或更新记忆。namespacekey 通常结合 runtime.context.user_id 等标识,确保数据的用户隔离。

最佳实践

  • 生产环境用持久化后端InMemoryStore 仅用于测试和原型,生产部署应使用 PostgresStore 或其他数据库支持的 Store。
  • 通过 context 标识用户/会话:利用 context_schema 传入 user_id,在工具中组合为命名空间或键,实现跨会话的同用户数据存取。
  • 启用语义搜索需要索引配置:若需通过自然语言查询记忆,必须在创建 Store 时配置 IndexConfig(提供嵌入函数和维度)。
  • 数据隔离靠命名空间:为不同用户、不同应用或不同数据类型创建不同的命名空间前缀,避免数据混淆。

长期记忆的核心价值在于让 Agent 能够跨会话记住用户信息和历史交互,而非每次对话都从零开始。

具体场景包括:

1. 个性化用户偏好

Agent 记住用户的习惯和偏好,提供持续优化的体验。

  • 沟通风格:用户说"我喜欢简短的回答",此后所有会话中 Agent 自动保持简洁
  • 语言偏好:用户说"请用中文回复",后续对话中 Agent 默认使用中文
  • 专业背景:用户说"我是一名 Python 后端开发者",Agent 后续回答时默认使用相关的技术术语
  • 饮食偏好:用户告诉 Agent 自己是素食主义者,之后推荐菜谱时自动排除肉食

2. 用户档案与上下文管理

存储基本的用户身份和状态信息,避免重复询问。

  • 用户信息:姓名、职位、所在团队等基础档案,Agent 在不同会话中直接使用
  • 认证状态:记住用户已登录的第三方服务(如已连接 Google Drive),下次会话无需重新授权
  • 对话进度:多步骤任务的进度跟踪,如"上次我们完成了第三步,现在继续第四步"

3. 知识积累与学习

Agent 在交互中提取和积累有价值的信息。

  • 经验总结:用户反馈某类回答不正确时,Agent 记住此反馈,后续类似场景中调整行为
  • 事实记录:用户在闲聊中提到的重要事实(如"我的猫叫 Tom"),Agent 记住并在相关话题中提及
  • 业务数据:客服 Agent 记住常见问题及解决方案,形成持续优化的知识库

4. 跨设备/跨平台同步

用户在不同设备或渠道上切换时,Agent 能无缝延续记忆。

  • 多端同步:用户在手机端告诉 Agent 一个偏好,在桌面端继续对话时该偏好依然生效
  • 多渠道一致性:用户在网页端开始一个多步骤任务,切换到 Slack 端时 Agent 记得之前的进度

与 State (短期记忆) 的区别:State 只在同一会话线程内有效,会话结束即消失。Store 是跨会话、跨线程持久化的,只要 key 相同就能在任何时候取回。