todos 数组,在 Agent 执行计划时渲染每个项目及其当前状态。这是一个基于您用于聊天的相同 useStream 钩子构建的进度仪表板。它表明 Agent 状态可以为任何 UI 提供支持,而不仅仅是消息气泡。
工作原理
在 LangGraph Agent 中,状态不限于消息。您可以定义自定义状态键来保存任意数据。在这种情况下,是一个todos 数组。当 Agent 执行计划时,它会更新每个待办事项的状态从 "pending" 到 "in_progress" 再到 "completed"。useStream 钩子通过 stream.values 暴露这些自定义状态值,您的 UI 会响应式渲染它们。
流程如下:
- 用户提交请求
- Agent 创建一个计划并在其状态中填充
todos - Agent 开始执行每个待办事项,过渡状态从
pending→in_progress→completed stream.values.todos在 Agent 进展时实时更新- 您的 UI 使用当前状态重新渲染待办事项列表
设置 useStream
无需特殊配置。将useStream 指向您的 Agent 并从 stream.values 读取 todos。
定义一个与 Agent 状态模式匹配的 TypeScript 接口,并将其作为类型参数传递给 useStream,以便类型安全地访问状态值,包括像 todos 这样的自定义状态键。在下面的示例中,将 typeof myAgent 替换为您的接口名称:
Todo 接口
数组中的每个待办事项都有简单的结构:| 属性 | 描述 |
|---|---|
status | 此任务的当前状态。选项:pending(未开始)、in_progress(Agent 正在处理)、completed(已完成) |
content | 任务内容的人类可读描述 |

