前置条件 本指南假设你熟悉 LangSmith、持久化 和 跨线程持久化 的相关概念。
LangSmith 会持久化 检查点(线程状态)和 跨线程记忆(存储项)。你可以在 langgraph.json 中配置生存时间(Time-to-Live,TTL)策略,自动管理这些数据的生命周期,避免数据无限累积。

配置线程和检查点 TTL

检查点会捕获对话线程的状态。设置 TTL 后,系统会自动删除过期的检查点和线程元数据。 在 langgraph.json 文件中添加 checkpointer.ttl 配置:
  • strategy:指定数据过期时执行的操作。默认为 "delete"。
    • "delete":TTL 到期时删除整个线程,包括所有关联的运行和检查点数据。
    • "keep_latest":保留线程和最新检查点,但删除后续运行不再需要的旧检查点数据。
  • sweep_interval_minutes:定义系统检查过期检查点的频率,单位为分钟。默认为 5 分钟。
  • default_ttl:设置线程(及对应检查点)的默认生命周期,单位为分钟(例如,43200 分钟 = 30 天)。如果未设置默认 TTL,检查点默认不会过期。
  • sweep_limit: (Agent server v0.8+)设置清理器单次迭代处理的线程数量。默认为 10000(Agent server v0.12+)或 1000(Agent server v0.8-0.11)。
TTL 会在线程和检查点创建时应用,不会应用于已有的线程和检查点。如需清除旧数据,请显式删除。

配置存储项 TTL

存储项支持跨线程数据持久化。为存储项配置 TTL 可以通过删除过期数据来管理记忆。 在 langgraph.json 文件中添加 store.ttl 配置:
  • refresh_on_read:(可选,默认为 true)如果为 true,通过 get 或 search 访问存储项时会重置其过期计时器。如果为 false,TTL 只会在 put 时刷新。
  • sweep_interval_minutes:(可选)定义系统检查过期存储项的频率,单位为分钟。如果省略,则不会执行清理。
  • default_ttl:(可选)设置存储项的默认生命周期,单位为分钟(例如,10080 分钟 = 7 天)。此配置仅适用于部署该配置后创建的存储项;已有存储项不会发生变化。如果需要清除旧存储项,请手动删除。如果省略,存储项默认不会过期。

组合 TTL 配置

你可以在同一个 langgraph.json 文件中为检查点和存储项配置 TTL,从而为每种数据类型设置不同的策略。下面是一个示例:

配置每个线程的 TTL

你可以为每个线程配置 TTL。
线程级 TTL 也会删除所有关联的检查点。因此,你可以设置线程级 TTL,而无需另外为检查点设置 TTL。

运行时覆盖

可以在 get、put 和 search 等 SDK 方法调用中提供特定的 TTL 值,从而在运行时覆盖 langgraph.json 中默认的 store.ttl 设置。

部署流程

在 langgraph.json 中配置 TTL 后,部署或重启 LangGraph 应用,使更改生效。本地开发时使用 langgraph dev,使用 Docker 部署时使用 langgraph up。 有关其他可配置选项的详细信息,请参阅 LangGraph CLI 参考页面。