技术拆解-AI可视增强分析助手
内容为 AI 基于AI 可视增强分析助手的源码生成。
AI 可视增强分析助手 - 完整项目架构文档
经验教训
明确定义接口并提前编写好单元测试
这次联调测试接口,耗费的时间太长了。
单元测试这个,得搞成基建,合作型项目太重要了。
比如我让 AI 写的整理博客的代码,就是测试先行,能大幅度提升整体的开发效率和确定性。
POC 项目技术架构越简单越好,别尝试新技术
比如这次的 POC 项目,后端尝试了使用 Spring AI,根本没必要。
写 Chrome 插件其实也没啥必要。
Next.js 全栈直接搞定。这个得沉淀下,搞成基建,保证下次没新东西需要琢磨,技术上全部都是确定性的内容。
别搞一些耗时太长的内容
比如故事线,耗费了大量时间在这个组件上,性价比不高。
坐一起能极大提升效率
这种项目,沟通讨论的频率极高,坐一起能极大提升效率。
后端接口做好 mock 数据
特别是模型的输出接口,巨慢无比,开发阶段不 mock,调试前端效率极低!
逻辑和数据请求写在 content script 中
content script 负责逻辑和数据请求,background script 只负责消息转发。
这样能保证控制台和 network 能很方便的查看和调试你的程序,提升开发效率。
🎯 项目概述
AI 可视增强分析助手是一个智能的 Chrome 浏览器扩展项目,专注于网页文本的智能分析和可视化增强。该项目通过选中网页文本,自动调用后端 AI 服务,生成多种形式的可视化内容,为用户提供无缝的网页阅读和分析体验。
系统组成
- 前端: Chrome 浏览器扩展,基于 React + TypeScript + Vite 构建
- 后端: 独立的 AI 可视化服务(单独项目,本文档专注前端部分)
核心能力
- 🧠 智能文本选择: 自动识别网页文本选择,触发分析工具栏
- 📊 多样化可视化: 支持图表、思维导图、NTV 富文本、故事线、金融拓展等多种形式
- 🔄 实时流式处理: 提供实时的 AI 分析反馈和工具执行状态
- 🌐 无缝网页集成: 与任意网页内容无缝集成的用户体验
- 🎯 高亮交互: 支持可视化结果的智能高亮和关联显示
🏗️ Chrome 扩展架构
前端架构图
graph TB
subgraph "网页环境"
WP[网页内容]
SEL[文本选择]
end
subgraph "Content Scripts"
CU[content-ui]
TB[ToolBar组件]
CS[content script]
end
subgraph "Chrome扩展核心"
BG[Background Script]
SP[Side Panel]
PU[Popup界面]
end
subgraph "Side Panel主界面"
AP[Analysis Panel]
SR[Stream Request]
AM[Answer Message]
QM[Query Message]
TM[Tools Message]
end
subgraph "可视化渲染层"
RI[Renderer Item]
CR[Chart Renderer]
NR[NTV Renderer]
MR[Mermaid Renderer]
STR[Storyline Renderer]
TIR[TextInfo Renderer]
HR[HTML Renderer]
end
subgraph "后端AI服务"
API[AI分析API]
TOOL[工具执行API]
HIGH[高亮API]
end
WP --> SEL
SEL --> CU
CU --> TB
TB --> BG
BG --> SP
SP --> AP
AP --> SR
SR --> API
API --> AM
AM --> RI
RI --> CR
RI --> NR
RI --> MR
RI --> STR
RI --> TIR
RI --> HR
AP --> TOOL
AP --> HIGH
技术栈详情
| 层级 | 技术选择 | 版本信息 |
|---|---|---|
| 核心框架 | React + TypeScript | React 19.1.0 |
| 构建工具 | Vite + Turbo + pnpm | Vite 7.0.3 |
| 开发语言 | TypeScript | 5.8.3 |
| 可视化库 | @antv/ava-react, AIGCDataVis | @antv/ava-react 3.3.2 |
| HTTP 客户端 | axios + 流式请求处理 | axios 1.10.0 |
| UI 框架 | Antd + Tailwind CSS | 最新版本 |
| 包管理 | pnpm workspace + turbo | pnpm 10.11.0 |
| 代码质量 | ESLint + Prettier + Husky | 最新版本 |
🚀 前端架构详解
Chrome 扩展项目结构
实际项目结构
1 | |
核心业务流程
flowchart TD
A[用户在网页选择文本] --> B[content-ui/App.tsx监听mouseup事件]
B --> C{文本是否选中?}
C -->|是| D[显示ToolBar浮动工具栏]
C -->|否| E[隐藏工具栏]
D --> F[用户配置分析选项]
F --> G[点击增强分析按钮]
G --> H[chrome.runtime.sendMessage发送消息]
H --> I[background script接收并转发]
I --> J[side-panel打开并接收消息]
J --> K[AnalysisPanel设置query并开始分析]
K --> L[StreamRequest发起流式请求]
subgraph "AI分析阶段"
L --> M[thinking阶段: 流式思考过程]
M --> N[tools阶段: 工具选择分析]
N --> O[execute阶段: 并行执行多个工具]
end
O --> P[解析工具执行结果]
P --> Q[RendererItem分发到具体渲染器]
Q --> R[显示最终可视化结果]
subgraph "高亮交互"
R --> S[用户选择可视化内容]
S --> T[发送高亮请求]
T --> U[更新相关可视化高亮状态]
end
消息传递机制
sequenceDiagram
participant User as 用户
participant ContentUI as content-ui/App.tsx
participant ToolBar as ToolBar组件
participant Background as Background Script
participant SidePanel as Analysis Panel
participant Backend as 后端AI服务
User->>ContentUI: 选择网页文本
ContentUI->>ContentUI: handleSelection()触发
ContentUI->>ToolBar: 显示浮动工具栏
User->>ToolBar: 配置分析选项并点击增强分析
ToolBar->>Background: chrome.runtime.sendMessage(OPEN_SIDE_PANEL)
Background->>SidePanel: 转发消息和选中文本
SidePanel->>SidePanel: 接收消息设置query
Note over SidePanel,Backend: 三阶段AI分析流程
SidePanel->>Backend: StreamRequest(chat) - thinking阶段
Backend-->>SidePanel: 流式返回思考过程
SidePanel->>Backend: StreamRequest(analyze_tools) - tools阶段
Backend-->>SidePanel: 返回工具选择结果
SidePanel->>Backend: executeTool() - execute阶段
Backend-->>SidePanel: 并行执行多个工具返回结果
SidePanel->>SidePanel: 解析并渲染可视化结果
Note over User,SidePanel: 高亮交互功能
User->>SidePanel: 选择可视化内容文本
SidePanel->>Backend: highlightTool()请求
Backend-->>SidePanel: 返回高亮关联信息
SidePanel->>User: 更新界面高亮显示
前端核心功能模块
1. Content-UI 模块 (文本选择监听)
核心文件: pages/content-ui/src/matches/all/App.tsx
主要功能:
- 监听网页文本选择事件 (
mouseup) - 计算浮动工具栏位置
- 管理选中文本状态
关键实现:
1 | |
2. ToolBar 模块 (分析配置工具栏)
核心文件: pages/content-ui/src/matches/all/ToolBar.tsx
支持的工具选项:
- 思维导图 (
mermaid): 结构化图表生成 - 故事线 (
storyTelling): 时间线可视化 - 数值增强 (
generateNTV): NTV 富文本格式 - 问句可视化 (
queryToVis): 查询结果图表 - 数据可视化 (
dataToVis): 数据图表生成 - 文生卡片 (
textToCard): 信息卡片展示 - 金融拓展 (
FinancialRAG): 金融领域增强
消息发送机制:
1 | |
3. Analysis Panel 模块 (主分析界面)
核心文件: pages/side-panel/src/components/analysis-panel/index.tsx
核心功能特性:
- 三阶段分析流程: thinking → tools → execute
- 实时状态管理: 加载状态、步骤状态、工具执行状态
- 高亮交互: 支持选中文本的智能高亮显示
- 防抖处理: 300ms 防抖延迟优化用户体验
可视化类型接口:
1 | |
4. 可视化渲染系统
核心文件: pages/side-panel/src/components/rendererItem/index.tsx
渲染器架构:
graph TD
subgraph "渲染分发层"
RI[RendererItem]
end
subgraph "具体渲染器实现"
CR[ChartRenderer]
NR[NvtRenderer]
MR[MermaidRenderer]
STR[StorylineRenderer]
TIR[TextInfoRenderer]
CTR[ChatThinking]
HR[HtmlRenderer]
end
subgraph "外部可视化库"
AIGC[AIGCDataVis]
AVA[@antv/ava-react]
MERM[mermaid]
end
RI --> CR
RI --> NR
RI --> MR
RI --> STR
RI --> TIR
RI --> CTR
RI --> HR
CR --> AIGC
NR --> AVA
MR --> MERM
支持的可视化类型:
| 类型 | 渲染器 | 功能描述 | 外部依赖 |
|---|---|---|---|
chart |
ChartRenderer | 数据图表渲染 | AIGCDataVis |
nvt |
NvtRenderer | NTV 富文本显示 | @antv/ava-react |
mermaid |
MermaidRenderer | 流程图、思维导图 | mermaid |
storyline |
StorylineRenderer | 故事线时间轴 | 自定义实现 |
textToCard |
TextInfoRenderer | 信息卡片展示 | 自定义实现 |
financialRag |
HtmlRenderer | 金融扩展内容 | HTML 渲染 |
thinking |
ChatThinking | AI 思考过程 | 自定义实现 |
渲染器选择逻辑:
1 | |
5. 流式请求处理系统
核心文件: pages/side-panel/src/lib/streamRequest.ts
主要特性:
- 基于
@microsoft/fetch-event-source实现 - 支持自定义回调函数 (start, success, error, close)
- 自动 JSON 解析处理
- 支持流式和非流式响应
关键实现:
1 | |
前端存储和状态管理
Chrome 扩展存储系统
核心文件: packages/storage/lib/base/base.ts
主要特性:
- 支持 Chrome Local Storage 和 Session Storage
- 实时状态同步 (
liveUpdate) - 自动序列化/反序列化
- React hooks 集成 (
useStorage)
存储类型配置:
1 | |
React 状态集成:
1 | |
状态管理架构
主要状态类型:
- 聊天历史: 用户查询、AI 响应、工具执行状态
- 可视化结果: 按会话 ID 组织的可视化数据映射
- 高亮状态: 当前高亮的工具 ID 列表
- UI 状态: 加载状态、步骤状态、折叠状态
状态更新模式:
1 | |
📡 API 接口集成
后端服务端点
实际 API 地址: https://rtahz.10jqka.com.cn/new-vis-server/
主要接口:
| 端点 | 功能 | 用途 |
|---|---|---|
/agent/chat |
AI 对话分析 | thinking 阶段流式思考 |
/agent/analyze_tools |
工具分析 | tools 阶段识别需要的工具 |
/agent/tool_execute |
工具执行 | execute 阶段并行执行工具 |
/vis/vis_highlight |
高亮分析 | 可视化内容关联高亮 |
请求配置:
1 | |
流式请求处理流程
三阶段处理模式:
Thinking 阶段 (
/agent/chat):- 流式返回 AI 思考过程
- 实时更新思考内容到界面
- 完成后触发 tools 阶段
Tools 阶段 (
/agent/analyze_tools):- 分析并返回需要执行的工具列表
- 解析工具调用参数
- 准备并行执行
Execute 阶段 (
/agent/tool_execute):- 并行执行多个工具
- 实时更新工具执行状态
- 解析并渲染可视化结果
🎨 用户交互体验
完整用户流程
journey
title AI可视增强分析用户体验流程
section 文本选择
用户浏览网页: 5: 用户
选中感兴趣文本: 5: 用户
浮动工具栏出现: 4: 系统
section 分析配置
选择知识库类型: 4: 用户
配置分析工具: 4: 用户
点击增强分析: 5: 用户
section AI分析过程
side-panel打开: 4: 系统
显示思考过程: 3: 系统
工具选择分析: 3: 系统
并行执行工具: 2: 系统
section 结果展示
可视化结果渲染: 5: 系统
高亮交互支持: 4: 系统
用户查看分析: 5: 用户