Files
sundynix-agentix/desktop-industrial-plan.md

3.8 KiB
Raw Permalink Blame History

桌面端工业化升级规划(desktop-industrial-plan

承接 desktop-ui-plan.md(IA/能力规划)。本文聚焦把现有桌面端从 "深色控制台 MVP"打磨到工业级桌面产品的质量提升路线。

现状基线(2026-06-12 实测):sundynix-desktop/frontend = React 19 + TS + Tailwind + @xyflow/react无 UI 组件库README 写的 shadcn/ui 实际未安装),图标用 Unicode 字符, Wails Go 桥已生成(wailsjs/)但前端从未调用。已有视图:工作台/编排/知识库/报告/运行·观测/记忆。

诊断:为什么"不够工业级"

问题不在配色,而在缺产品级骨架

  1. 无设计系统 — 按钮/输入/卡片/徽标全是手搓内联 class、复制粘贴、不一致;强调色 (violet/cyan) 是散落字面量,无法换肤。
  2. 图标是 Unicode 字符(▤◆▣▦▸◇⌧⚙)— 最掉档次。
  3. Wails Go 桥未用 — 本质是"套了窗口的网页":无原生文件框、拖拽入库、本地读盘、 原生通知、自定义标题栏、"用系统 Word 打开报告"。这是"工业级桌面"最大缺口。
  4. 无应用级 UX — 无 toast / 全局错误边界 / 命令面板(⌘K) / 快捷键 / 确认弹窗 / 骨架屏。
  5. 健康灯 5 个只 2 个真NATS/Milvus/Neo4j 灰)— 缺网关 /health 聚合。
  6. 状态全在 App useState,刷新即丢 — 无运行历史/最近项持久化。
  7. 输出裸 <pre> — 报告是 Markdown 却不渲染;无自动滚动/复制/速率。
  8. 布局密度 — 为 1280 设计但窗口 min 1100,面板挤;固定高度;无可拖拽分隔。

升级阶段(按性价比/依赖排序)

A. 设计系统地基(最高优先,其它都依赖它)

  • lucide-react 图标;自建轻量 primitives(不引整套 shadcn,保零重依赖、clone 即跑): Button Input Textarea Select Card Badge Tabs Tooltip Dialog Toast Skeleton EmptyState,统一 cn()
  • Tailwind 令牌补全:语义色(brand/accent/success/warn/danger+ 半径/间距/字阶 token; 强调色字面量收敛到 token。
  • 6 个视图 + shell 迁到 primitives,去掉复制粘贴。

B. 真·桌面集成("工业级桌面"最大缺口)

  • 启用 Wails Go 桥:app.goOpenFileDialog/SaveFileDialog/SaveReport/ OpenInSystem/ReadFile,前端经 wailsjs 调。
  • 知识库拖拽 + 原生选择框入库;报告原生"另存为 .docx" + "用系统 Word 打开"。
  • 原生通知(报告完成弹系统通知)、最近文件、窗口标题随任务变。
  • 自定义无边框标题栏(macOS 红绿灯内嵌 + 可拖拽区)。

C. 应用级 UX 骨架

  • 全局 ToastProvider(替代散落 err 文本)、ErrorBoundary、确认 Dialog
  • 命令面板 ⌘K(跳转/新建报告/搜知识库/运行)+ 全局快捷键。
  • 骨架屏 + 有插画的空状态(取代"规划中"文字)。

D. 内容与可信度

  • Markdown 渲染(报告/输出)+ 代码高亮 + 复制 + 流式自动跟随底部 + tokens/s 速率表。
  • 网关 GET /health 聚合 NATS/Milvus/Neo4j/PG/Redis → 5 灯全真。
  • 运行历史持久化(Wails 配置或 localStorage),RunsView 列出历史可回看。

E. 布局与密度

  • 可拖拽分隔的面板、响应式断点、记忆面板宽度。

建议路线

A(设计系统) 打底 → B(真桌面集成),这两个一起把"网页套壳"扭转成"工业级桌面应用", 感知提升最大。C/D/E 增量补。

边界/原则

  • 零重依赖:自建 primitives 而非整套组件库,守住 "clone 即跑、无重 native 依赖" 目标。
  • 不破坏既有真实链路(任务流/工具调用/Token 流/执行事件/报告)。
  • 深色优先;令牌化后保留未来切浅色的可能。