- 检查点 将线程的图状态作为检查点进行持久化。它们用于短期、线程作用域内的记忆,包括对话连续性、人机交互工作流、时间旅行和容错。
- 存储 将应用程序定义的数据持久化到图状态之外。它们用于长期、跨线程的记忆,包括用户偏好、事实和共享知识。
快速开始
使用检查点、存储或两者来编译你的图:Agent Server 自动处理持久化
当使用 Agent Server 时,你无需手动实现或配置检查点或存储。服务器会在后台处理持久化基础设施。
检查点与存储的比较
常见问题排查
PostgresSaver: thread_id 过长
当使用 PostgresSaver(或 AsyncPostgresSaver)时,thread_id 存储在一个长度有限的列中。如果你的 thread_id 超过该列大小,你将看到数据库错误。
解决方法: 将 thread_id 值保持在 255 个字符以内。如果需要确定性 ID,请使用 UUID 或哈希:
MemorySaver 在重启后不持久化
MemorySaver 和 InMemorySaver 将检查点存储在 RAM 中。当进程重启时,所有检查点都会丢失。
解决方法: 在生产环境中使用持久化检查点:
PostgresSaver:支持异步的 PostgreSQLSqliteSaver:用于开发的基于本地文件的存储
检查点无限增长
在长时间对话中,检查点会不断累积。这可能会增加延迟和存储成本。 解决方法: 定期修剪旧检查点或设置保留策略:从父图到子图的状态访问
当子图更新状态时,父图可能不会立即看到这些更改。这是因为每个子图管理自己的检查点命名空间。 解决方法: 对于需要跨图边界的数据,使用通过存储共享状态,或者配置你的子图以写入父图检查点。后续步骤
Connect these docs to Claude, VSCode, and more via MCP for real-time answers.

