前端集成
SciLaxy Web 前端是一个基于 Next.js 构建的 React 应用,使用 Zustand 进行状态管理,TanStack Query 管理服务端状态。
架构
状态管理
SciLaxy 使用 Zustand + Immer 中间件进行状态管理。Store 按功能切分为多个切片:
- chatSlice — 对话状态、消息、流式传输
- uiSlice — UI 状态、面板可见性、主题
- agentSlice — 智能体列表和配置
使用规则
流式处理
前端通过 SSE(Server-Sent Events)接收实时的智能体执行事件:
- SSE 客户端 (
sseClient.ts) — 建立 SSE 连接,处理自动重连和事件回放 - 连接管理 (
connectionActions.ts) — 管理每个话题的 SSE 连接生命周期 - 事件处理 (
streamingHandlers.ts) — 将服务端事件转换为 Store 状态更新
性能优化
- Chunk 缓冲 —
streaming_chunk和thinking_chunk事件以 requestAnimationFrame 频率(~60fps)批量刷新,而非每个事件独立更新状态 - 派生状态 — 使用
respondingChannelIds、runningAgentIds等派生字段,仅在状态转换时更新 - 组件记忆化 — Markdown 渲染组件使用
React.memo,插件数组为模块级常量
国际化
SciLaxy 支持中文、英文和日文三种语言。翻译文件位于 web/src/i18n/locales/。
使用方式:
主题
SciLaxy 支持浅色和深色主题,使用 Tailwind CSS 的 dark: 变体实现:
主题跟随系统设置自动切换,用户也可以手动切换。