Files
PlantAI-rag-new/desktop

PlantAI 桌面端(Electron 瘦客户端)

把 ui/ 的 Vue 单页应用封装成 Electron 桌面 App。后端(Python/BFF/向量库)不打包进 App,桌面端只是一个指向后端的瘦客户端。

原理

  • Electron 主进程内起一个只监听 127.0.0.1 的本地 HTTP 服务(server.js):
    • 静态托管 renderer-dist(即 ui/dist 的副本);
    • 把 /api 反代到可配置的后端地址。
  • 前端源码 ui/ 零改动、后端 CORS 零改动:相对路径 /api 与 SSE 流靠同源天然可用。
  • 后端地址配置(config.js)优先级:PLANTAI_BFF_URL 环境变量 > userData/config.json > 默认 http://127.0.0.1:8090。可在应用内菜单「设置 → 后端地址…」修改(保存后重载)。

环境要求

  • Node.js ≥ 18、npm。

开发运行

cd desktop
npm install
npm run build:ui     # 先构建前端(ui/)并复制产物到 renderer-dist/
npm start            # 启动 Electron 窗口

打包

cd desktop
npm run dist:linux   # AppImage + deb
npm run dist:win     # NSIS 安装包 + portable
npm run dist:mac     # dmg + zip(必须在 macOS 上构建)

跨平台注意事项

  • macOS 安装包必须在 macOS 机器上构建(或 macOS CI);Linux 无法产出 dmg。
  • Windows 可从 Linux 交叉打包,个别步骤(图标/rcedit)可能依赖 wine;更稳的方式是用 CI 三平台矩阵产出。
  • 应用图标:build/icon.png(512×512,PNG)。electron-builder 会据此自动派生 .ico/.icns;未提供时使用默认 Electron 图标。
  • 后端可达性:桌面端要能访问配置的后端地址(公网 HTTPS / VPN / SSH 隧道均可),属网络环境问题,非代码范围。