todos数组,并在智能体执行计划的过程中以当前状态渲染每个项目。这是一个基于您用于对话的相同useStream钩子构建的进度仪表板。它表明智能体状态可以驱动任何 UI,而不仅仅是消息气泡。
工作原理
深度智能体在您选择 @[TodoListMiddleware]时可以暴露一个**todos状态**通道。该中间件添加了write_todos工具,并在智能体执行计划的过程中持久化任务进度。随着智能体的执行,它将每个待办事项的状态从"pending"更新为"in_progress"再到"completed"。@[useStream]钩子通过stream.values.todos暴露此状态,您的 UI 反应式地渲染它。
任务规划是可选的。如果没有 @[
TodoListMiddleware],stream.values.todos不存在。参见任务规划。- 用户提交请求
- 智能体创建计划并在其状态中填充
todos - 智能体开始执行每个待办事项的状态从
pending→in_progress→completed stream.values.todos随着智能体的进度实时更新- 您的 UI 重新渲染带有当前状态的待办事项列表
设置useStream
在智能体上启用 @[TodoListMiddleware]。
:::python
useStream该智能体,并从stream.values读取todos。
代码示例使用
useStream<typeof myAgent> 进行类型安全的流状态管理。请参考 Python 或 JavaScript 后端的类型推断说明。构建TodoList组件
待办事项列表使用状态图标、颜色编码和反映当前状态的视觉样式渲染每个项目:进度条
一个视觉进度条为用户提供了一个整体完成的概览:单个待办事项
每个项目都获得一个状态图标、颜色编码文本和对已完成任务的删除线样式:in_progress图标使用animate-pulse来吸引对当前活动任务的注意力。
计算进度
直接从待办事项数组中派生进度指标:与聊天消息结合
待办事项列表与常规聊天界面协同工作。一个实用的布局显示待办事项列表作为持久侧边栏或标题面板,聊天消息在下方:用例
待办事项列表模式适用于任何智能体执行结构化计划的场景:- 项目规划:智能体将项目分解为任务并按顺序处理它们
- 研究工作流:每个研究问题都成为一个待办事项,智能体进行调查并完成
- 数据处理:摄取、验证、转换和导出等步骤各自获得一个待办事项
- 引导流程:智能体逐步引导设置,在配置服务时勾选每个步骤
- 报告生成:报告的各个部分成为待办事项:收集数据、分析趋势、撰写摘要、格式化输出
处理空和加载状态
在智能体创建其计划之前处理初始状态:最佳实践
- 突出显示待办事项列表。它是基于计划的智能体的主要进度指示器。不要将其隐藏在折叠之下。
- 动画状态转换。平滑的转换使智能体感觉更响应。使用 CSS 转换背景颜色、文本装饰和不透明度。
- 仅突出显示一个
in_progress项目。智能体通常一次处理一个任务。如果多个项目显示为in_progress,UI 会变得嘈杂。考虑仅脉冲第一个。 - 折叠或淡化已完成项目。随着列表的增长,已完成项目变得不太相关。减少它们的视觉权重,以便用户专注于仍在进行的事情。
- 显示进度百分比。像”67% 完成”这样的单个数字即使从房间另一边也能立即理解。
- 保持待办事项列表同步。由于
stream.values反应式更新,待办事项列表会自动保持最新。不要添加手动轮询或刷新逻辑。
相关LangChain指南
待办事项列表模式是 LangChain 方法在渲染结构化智能体状态方面的专业化。这些指南涵盖了与基于计划的智能体配合得很好的相关技术:Structured output
使用自定义 UI 组件而不是纯文本渲染任何结构化智能体状态——不仅仅是待办事项。
Join & rejoin streams
在页面重新加载或标签切换后重新连接到正在运行的计划,而不会丢失进度。
Message queues
在智能体仍在处理其当前计划时排队后续任务。
Human-in-the-Loop
当智能体需要用户批准或输入时暂停和恢复计划执行。
官方原文:src/oss/deepagents/frontend/todo-list.mdx · 非官方翻译,译文由 AI 生成,以英文原文为准。