main
- 移除生信/论文/教育/审稿/文档生成/知识图谱/文献抽取/私有资料/扩展/legacy 等
全部入口,仅保留 QA 问答 + 图片图库 + 登录鉴权;前端 bundle 569KB → 281KB
- 发送按钮在查询进行中切换为「停止」;停止时前端带 request_id 调用云端
POST /api/qa/cancel/{request_id} 协作式终止查询,完整返回/停止后恢复发送
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 隧道均可),属网络环境问题,非代码范围。
Languages
JavaScript
55.5%
Vue
32.6%
CSS
11%
HTML
0.9%