Files
plantai-desktop/README.md
T

2.7 KiB
Raw Blame History

PlantAI 桌面端(Electron 瘦客户端)

把 PlantAI 的 Vue 单页应用(ui/)封装成 Electron 桌面 App。后端(Python/BFF/向量库)不打包进 App,桌面端只是指向后端的瘦客户端。本仓库只含前端 + Electron 壳,与后端 monorepo 分离。

目录结构

  • 根目录 = Electron 壳(main.js / server.js / config.js / preload.js / settings.html / package.json)。
  • ui/ = 前端 Vue 3 + Vite 单页应用(全部功能)。

原理

  • Electron 主进程内起一个只监听 127.0.0.1 的本地 HTTP 服务(server.js):
    • 静态托管 renderer-dist(即 ui/dist 的副本);
    • 把 /api 反代到可配置的后端地址(BFF)。
  • 前端源码 ui/ 零改动、后端 CORS 零改动:相对路径 /api 与 SSE 流靠同源天然可用。
  • 后端各服务地址配置(config.js,存 userData/config.json 的 services 对象;应用内菜单「设置 → 后端服务地址…」逐项修改,保存后重载):
    • bff(8090,总入口)、qa(8091)、rag(8092)、legacy(8093)、vstore(8094)、paper(8097)、bioflow(8098)——每项都可指向本机或其它服务器。
    • PLANTAI_BFF_URL 环境变量可覆盖 bff(脚本/CI 用)。
  • 关于多服务路由:前端只调用 /api/*,bff(BFF)是唯一入口;反代把 /api 转到 bff,由 BFF 内部再路由到 qa/rag/vstore/paper/bioflow。因此要把某个服务挪到别的服务器,需改 BFF 自己的配置(sdk/app/config.py 的 qa_base_url / rag_base_url / rag_legacy_base_url / vstore_base_url / paper_writer_url / bioflow_service_url,或用 .env 覆盖);桌面端设置里其余服务的地址当前仅作记录/预留。

环境要求

  • Node.js ≥ 18、npm。

开发运行

npm install
npm run build:ui     # 构建 ui/ 并复制产物到 renderer-dist/
npm start            # 启动 Electron 窗口

打包

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

跨平台注意事项

  • package.json 的 author / homepage 为占位值,发布前请替换为真实作者与主页(deb 等安装包会写入这些元数据)。
  • 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 隧道均可),属网络环境问题,非代码范围。