This feature requires the LangGraph Agent Server. Run your agent locally with
langgraph dev or deploy it to LangSmith to use this pattern.检查点的工作原理
LangGraph 在每个节点执行后持久化智能体状态。每个持久化的状态是一个ThreadState 对象,捕获以下内容:
- checkpoint:标识此特定快照的元数据(ID、时间戳)
- values:该时刻的完整智能体状态(消息、自定义键)
- tasks:计划在下一步运行的图节点
- next:执行计划中即将到来的节点名称
设置 useStream
通过向useStream 传递 fetchStateHistory: true 来启用检查点历史。这告诉 hook 加载当前线程的完整检查点时间线。
导入你的智能体并将 typeof myAgent 作为类型参数传递给 useStream,以获得对状态值的类型安全访问:
ThreadState 对象
history 数组中的每个条目都是一个 ThreadState,表示时间线中的一个检查点:
构建检查点时间线
时间线侧边栏将每个检查点显示为可点击的条目。每个条目显示运行的节点以及该时刻存在的消息数量:检查检查点状态
点击检查点应显示该时刻的完整状态。JSON 查看器让开发者完全了解智能体知道什么以及做了什么决策:从检查点恢复
时间旅行的核心是能够从任何先前的检查点恢复执行。当用户选择一个检查点时,调用submit 并传入 null 输入和检查点引用:
- 回滚到所选检查点的状态
- 从该点重新执行图
- 将新结果流式传输到客户端
从检查点恢复不会删除原始时间线。之前的检查点在历史记录中仍然可用。这意味着用户始终可以返回并尝试不同的路径,而不会丢失任何先前的工作。
SplitView 布局
时间旅行最适合使用分屏布局——主聊天在左侧,时间线在右侧:提取检查点元数据
将原始检查点数据转换为适合在时间线中显示的条目:使用场景
时间旅行在许多场景中都非常有价值:- 调试智能体行为:逐步检查智能体的决策,了解它为什么选择了特定路径
- 撤销操作:如果智能体走错了方向,从较早的检查点恢复并重试
- 探索替代方案:从对话中间的检查点分叉,查看不同的输入如何改变结果
- 审计:审查智能体操作的完整历史,用于合规性检查、质量保证或事后分析
- 教学:逐步演示智能体的执行过程,解释多步推理的工作方式
时间旅行与人机协作模式结合使用时特别强大。如果人工审核者在中断处拒绝了智能体的操作,他们可以从操作执行前的检查点恢复,并提供纠正性输入。
处理时间线中的中断
包含中断(人机协作暂停)的检查点值得特殊的视觉处理。它们表示智能体停止并等待人工输入的时刻:最佳实践
- 延迟加载历史:对于包含数百个检查点的线程,进行分页或仅加载最近的 N 个条目以保持 UI 响应。
- 显示有意义的标签:显示节点名称和消息数量,而不是原始检查点 ID。用户需要上下文,而不是 UUID。
- 恢复前确认:从旧检查点恢复会替换当前执行路径。显示确认对话框,以免用户意外丢失当前对话状态。
- 高亮当前检查点:使当前对话状态对应的检查点在视觉上明显可辨。
- 支持键盘导航:高级用户会想要使用方向键逐步浏览检查点。为时间线添加键盘处理程序以获得流畅的调试体验。
- 比较检查点间的差异:对于高级用户,显示两个连续检查点之间的变化可以精确揭示智能体状态在每一步是如何演变的。
将这些文档连接到 Claude、VSCode 等,通过 MCP 获取实时答案。

