AI推理可视化

📎 引用文件

本文引用的文件 - ThinkingTimeline.tsx - ActivityLine.tsx - ToolProgressIndicator.tsx - ModelRuntimeBar.tsx - ProgressBar.tsx - Agent.tsx - agent.ts - agent.ts(stores) - _legacy.py - rail.py - stream.py

目录

  1. 简介
  2. 项目结构
  3. 核心组件
  4. 架构总览
  5. 详细组件分析
  6. 依赖关系分析
  7. 性能考量
  8. 故障排查指南
  9. 结论
  10. 附录

简介

本文件面向 Vibe-Trading 的 AI 推理可视化能力,聚焦以下目标: - 解释 ThinkingTimeline 如何以“思维链”方式展示 AI 的思考过程与推理步骤,并支持决策路径追踪。 - 说明 ToolProgressIndicator 的任务状态跟踪、结构化进度与执行反馈(含 ETA)。 - 阐述 ModelRuntimeBar 对模型运行时状态的呈现(提供商、模型、推理强度等),以及资源使用信息的可视化。 - 覆盖实时数据更新、动画效果与用户交互反馈。 - 提供可视化定制、主题扩展与性能优化建议。

项目结构

前端侧围绕聊天时间线组织可视化: - Agent 页面负责消息组装、SSE 事件处理、工具调用状态聚合与渲染调度。 - ThinkingTimeline 将历史或活动消息转换为统一的“活动对象”,交由 ActivityLine 渲染。 - ActivityLine 作为单一的状态与披露面,内嵌 ToolProgressIndicator 展示步骤细节。 - ToolProgressIndicator 负责行级合并、确定性进度环/条、ETA 估算与可访问性。 - ModelRuntimeBar 在顶部显示当前运行时的提供商、模型与推理强度。 - ProgressBar 为通用进度条原语,被 ToolProgressIndicator 复用。

graph TB A["Agent.tsx<br/>消息组装与SSE事件"] --> B["ThinkingTimeline.tsx<br/>构建活动对象"] B --> C["ActivityLine.tsx<br/>状态与展开面板"] C --> D["ToolProgressIndicator.tsx<br/>步骤行/进度/ETA"] D --> E["ProgressBar.tsx<br/>进度条原语"] A --> F["ModelRuntimeBar.tsx<br/>运行时信息"]

图表来源 - Agent.tsx:530-562 - ThinkingTimeline.tsx:17-85 - ActivityLine.tsx:62-205 - ToolProgressIndicator.tsx:213-302 - ProgressBar.tsx:19-74 - ModelRuntimeBar.tsx:12-55

章节来源 - Agent.tsx:223-248 - Agent.tsx:530-562 - ThinkingTimeline.tsx:17-85 - ActivityLine.tsx:62-205 - ToolProgressIndicator.tsx:213-302 - ProgressBar.tsx:19-74 - ModelRuntimeBar.tsx:12-55

核心组件

章节来源 - ThinkingTimeline.tsx:17-85 - ActivityLine.tsx:62-205 - ToolProgressIndicator.tsx:213-302 - ModelRuntimeBar.tsx:12-55 - ProgressBar.tsx:19-74

架构总览

下图展示了从 SSE 事件到 UI 渲染的关键流程,包括工具进度合并、活动对象构建与状态切换。

sequenceDiagram participant SSE as "SSE 事件流" participant Agent as "Agent.tsx" participant Store as "stores/agent.ts" participant TL as "ThinkingTimeline.tsx" participant AL as "ActivityLine.tsx" participant TP as "ToolProgressIndicator.tsx" SSE->>Agent : tool_progress / tool_heartbeat / tool_result Agent->>Store : updateRunningToolCall(合并进度/心跳/结果) Agent->>TL : 传入 messages/meta/activity TL->>AL : 构建/传递 AgentActivity AL->>TP : 渲染步骤行/进度/ETA Note over AL,TP : 活动状态变化驱动展开/收起与自动折叠

图表来源 - Agent.tsx:722-786 - Agent.tsx:223-248 - ThinkingTimeline.tsx:65-85 - ActivityLine.tsx:62-205 - ToolProgressIndicator.tsx:213-302

详细组件分析

ThinkingTimeline:思维链与决策路径

flowchart TD Start(["进入 ThinkingTimeline"]) --> CheckMeta{"是否携带 activity?"} CheckMeta --> |是| UseMeta["直接使用 activity"] CheckMeta --> |否| Rebuild["重建 steps:<br/>遍历 tool_call/tool_result"] Rebuild --> ComputeState["计算 state/verb/startedAt/endedAt"] UseMeta --> Render["交给 ActivityLine 渲染"] ComputeState --> Render

图表来源 - ThinkingTimeline.tsx:17-85 - agent.ts(stores):36-44

章节来源 - ThinkingTimeline.tsx:17-85 - agent.ts(stores):36-44

ToolProgressIndicator:任务状态与执行反馈

classDiagram class ToolProgressIndicator { +props.toolCalls : ToolCallEntry[] +rows : ToolCallEntry[][] +running : ToolCallEntry[] +etaById : Map<string,number|null> } class ToolRow { +entries : ToolCallEntry[] +eta : number|null } class ProgressBar { +current : number +total : number +showCount : boolean } ToolProgressIndicator --> ToolRow : "渲染" ToolRow --> ProgressBar : "使用"

图表来源 - ToolProgressIndicator.tsx:213-302 - ProgressBar.tsx:19-74

章节来源 - ToolProgressIndicator.tsx:213-302 - ProgressBar.tsx:19-74

ModelRuntimeBar:运行时状态栏

graph LR S["LLMSettings"] --> M["ModelRuntimeBar"] R["runtimeProvider/runtimeModel/runtimeReasoningEffort"] --> M M --> UI["顶部状态栏"]

图表来源 - ModelRuntimeBar.tsx:12-55

章节来源 - ModelRuntimeBar.tsx:12-55

实时数据更新、动画与交互

章节来源 - Agent.tsx:722-786 - ActivityLine.tsx:77-109 - ToolProgressIndicator.tsx:256-286

依赖关系分析

graph TB T["types/agent.ts<br/>ToolCallEntry"] --> A["Agent.tsx<br/>store 更新"] A --> TL["ThinkingTimeline.tsx"] TL --> AL["ActivityLine.tsx"] AL --> TP["ToolProgressIndicator.tsx"] subgraph "CLI 对齐" L["_legacy.py<br/>进度行渲染"] R["rail.py<br/>tool_call/tool_progress"] end A -.-> L A -.-> R

图表来源 - agent.ts:60-81 - Agent.tsx:722-786 - ThinkingTimeline.tsx:65-85 - _legacy.py:693-720 - rail.py:345-380

章节来源 - agent.ts:60-81 - Agent.tsx:722-786 - _legacy.py:693-720 - rail.py:345-380

性能考量

[本节为通用指导,无需特定文件引用]

故障排查指南

章节来源 - ToolProgressIndicator.tsx:15-36 - ActivityLine.tsx:179-200 - Agent.tsx:744-786

结论

Vibe-Trading 的 AI 推理可视化通过 ThinkingTimeline、ActivityLine、ToolProgressIndicator 与 ModelRuntimeBar 的组合,实现了从“思维链”到“工具执行反馈”再到“运行时状态”的全链路可视化。其设计兼顾了实时性(rAF 合并、心跳)、可理解性(阶段/消息/ETA)、可访问性(ARIA)与可扩展性(类型契约、CLI 对齐)。在生产环境中,建议结合后端工具的结构化进度输出,以获得更丰富的可视化体验。

[本节为总结,无需特定文件引用]

附录

数据模型与字段说明

章节来源 - agent.ts:60-81 - ThinkingTimeline.tsx:17-57

事件与渲染时序

章节来源 - Agent.tsx:722-786 - ThinkingTimeline.tsx:65-85 - ActivityLine.tsx:62-205

CLI 与 Web 的一致性

章节来源 - rail.py:345-380 - _legacy.py:693-720 - stream.py:1-34