记忆工作原理
- 将智能体指向记忆文件。 创建智能体时向
memory=传入文件路径。您也可以通过skills=传入技能作为程序性记忆(告诉智能体如何执行任务的可复用指令)。后端控制文件的存储位置和访问权限。 - 智能体读取记忆。 智能体可以在启动时将记忆文件加载到系统提示中,或在对话过程中按需读取。例如,技能使用按需加载:智能体在启动时仅读取技能描述,然后仅在匹配任务时读取完整的技能文件。这使上下文在能力被需要之前保持精简。
- 智能体更新记忆(可选)。 当智能体学到新信息时,它可以使用内置的
edit_file工具更新记忆文件。更新可以在对话中(默认)或通过后台整合在对话之间进行。更改会被持久化并在下次对话中可用。并非所有记忆都是可写的:开发者定义的技能和组织策略通常是只读的。详见只读 vs 可写记忆。
作用域记忆
智能体记忆可以设定作用域,使相同的记忆文件对使用该智能体的所有人可访问,或者记忆文件可以对每个用户独立。智能体作用域记忆
赋予智能体随时间发展的持久身份。智能体作用域记忆在所有用户间共享,因此智能体通过每次对话积累自己的人格、知识和习得的偏好。随着它与用户交互,它发展专业知识、完善方法并记住什么有效。当具有写入权限时,它也可以学习和更新技能。 关键是后端命名空间:将其设置为(assistant_id,) 意味着此智能体的每次对话都读写同一个记忆文件。
访问
rt.serverInfo 需要 deepagents>=1.9.0。在旧版本中,从 getConfig().metadata.assistantId 读取助手 ID。完整示例:初始化记忆并调用
完整示例:初始化记忆并调用
用初始记忆填充存储,然后跨两个线程调用智能体以查看它记住和更新所学内容。
用户作用域记忆
为每个用户提供自己的记忆文件。智能体按用户记住偏好、上下文和历史,同时核心智能体指令保持固定。如果存储在用户作用域后端中,用户也可以拥有每用户技能。 命名空间使用(user_id,) 以便每个用户获得记忆文件的隔离副本。用户 A 的偏好永远不会泄露到用户 B 的对话中。
完整示例:跨用户的隔离记忆
完整示例:跨用户的隔离记忆
初始化每用户记忆并以两个不同用户调用智能体。每个用户只能看到自己的偏好。
高级用法
在记忆路径和作用域的基本配置选项之上,您还可以配置更高级的记忆参数:情节性记忆
情节性记忆存储过去经验的记录:发生了什么、按什么顺序以及结果如何。与语义记忆(存储在AGENTS.md 等文件中的事实和偏好)不同,情节性记忆保留完整的对话上下文,以便智能体可以回忆如何解决问题,而不仅仅是从中学到了什么。
深度智能体已使用检查点,这是支持情节性记忆的机制:每次对话都作为检查点线程持久化。
要使过去的对话可搜索,将线程搜索包装在工具中。user_id 从运行时上下文中提取而不是作为参数传入:
组织级记忆
组织级记忆遵循与用户作用域记忆相同的模式,但使用组织范围的命名空间而非每用户命名空间。用于应适用于组织中所有用户和智能体的策略或知识。 组织记忆通常是只读的,以防止通过共享状态进行提示注入。详见只读 vs 可写记忆。后台整合
默认情况下,智能体在对话过程中写入记忆(热路径)。另一种选择是在对话之间作为后台任务处理记忆,有时称为休眠时间计算。一个单独的深度智能体审查最近的对话,提取关键事实,并将它们与现有记忆合并。
对于大多数应用,热路径就足够了。当您需要减少延迟或提高跨多个对话的记忆质量时,添加后台整合。
推荐的模式是在主智能体旁部署一个整合智能体——一个读取最近对话历史、提取关键事实并将其合并到记忆存储中的深度智能体——并在定时计划上触发它。选择反映用户实际交互频率的节奏:日常流量稳定的聊天产品可能每几小时整合一次,而每周仅使用少数几次的工具只需每晚或每周运行。整合频率远高于用户对话频率只会在无操作运行上浪费 Token。
整合智能体
整合智能体读取最近的对话历史并将关键事实合并到记忆存储中。在langgraph.json 中与主智能体一起注册它:
src/consolidation-agent.ts
langgraph.json
定时任务
定时任务按固定计划运行整合智能体。智能体搜索最近的对话并将它们综合到记忆中。匹配计划与您的使用模式,以便整合运行大致跟踪实际活动。 使用定时任务调度整合智能体:所有定时计划都以 UTC 解释。详见定时任务了解管理和删除定时任务。
只读 vs 可写记忆
默认情况下,智能体可以读写记忆文件。对于组织策略或合规规则等共享状态,您可能希望将记忆设为只读,以便智能体可以引用但不能修改。这可以防止通过共享记忆进行提示注入,并确保只有您的应用程序代码控制文件内容。
安全注意事项: 如果一个用户可以写入另一个用户读取的记忆,恶意用户可能会向共享状态注入指令。要缓解这一点:
- 默认使用用户作用域
(user_id)除非您有特定原因需要共享 - 对共享策略使用只读记忆(通过应用程序代码填充,而非智能体)
- 在智能体写入共享记忆前添加人机协作验证。使用中断要求人工批准对敏感路径的写入。
并发写入
多个线程可以并行写入记忆,但对同一文件的并发写入可能导致最后写入者覆盖冲突。对于用户作用域记忆,这很少见,因为用户通常一次只有一个活跃对话。对于智能体作用域或组织作用域记忆,考虑使用后台整合来序列化写入,或将记忆按主题构造为独立文件以减少竞争。 实际上,如果写入因冲突而失败,大语言模型(LLM)通常足够智能来重试或优雅恢复,因此单次丢失的写入不是灾难性的。同一部署中的多个智能体
要在共享部署中为每个智能体提供自己的记忆,在命名空间中添加assistant_id:
assistant_id。
通过 MCP 连接这些文档到 Claude、VSCode 等以获取实时解答。


