Agent 的短期记忆通过状态中的消息通道自然实现。使用 add_messages reducer 的消息列表会累积所有 HumanMessage、AIMessage 和 ToolMessage,形成完整的对话历史。每个新节点执行时都能读取全部历史消息,确保推理的连贯性。这种方式比在高阶 prompt 中 hack 会话变量更加可靠和可追溯。
通过 Checkpointer 和 thread_id 的组合,LangGraph 实现了跨会话的持久化记忆。每次调用图时传入唯一的 thread_id,checkpointer 会以该 ID 为键保存每次执行的完整状态快照。当使用相同 thread_id 再次调用时,Agent 可以从之前的任何检查点恢复,包括未完成的长流程和之前的对话上下文。这天然支持多轮对话、长流程任务的断点续传等功能。
对于需要更长周期记忆的場景,可以在状态中维护专门的记忆通道,定期将重要信息持久化到外部存储(如向量数据库、关系型数据库)。在生产系统中,建议使用 PostgreSQLSaver 或 MongoDBSaver 等持久化后端替代默认的 MemorySaver,确保进程重启后记忆不丢失。
面对有限的上下文窗口,LangGraph 本身不自动压缩上下文,但提供了基础设施层面的支持:开发者可以通过自定义节点实现上下文压缩策略,如对历史消息进行摘要、移除已过期的中间结果、仅保留关键的工具调用结果等。Deep Agents 在此基础上进一步提供了规划、子代理和文件系统工具等高级能力。