Renderer
开发者指南 / 当前实现
先理解边界,再进入代码。
Moonshine-Image 是一个 Electron 桌面应用:Vue 渲染层负责工作台,Electron 主进程负责本地系统与安全边界,Python / FastAPI 后端负责模型和媒体处理。
01
技术栈
Desktop
Electron
窗口、托盘、生命周期、更新、preload IPC 与 MCP。Backend
Python · FastAPI
OCR、SAM、图像 / 视频处理与模型管理。Media & AI
WebAV · FFmpeg · ONNX Runtime
视频预览 / 导出、失败回退和 OCR 推理。Node.js^18 · ^20 · ^22 · ^24 · ^26 · ^28
npm>= 6.13.4
Python 开发基线3.12.x
首发桌面目标Windows x64
02
本地开发
在仓库根目录安装依赖,再启动 Quasar 的 Electron 开发模式。具体 Python 环境应与项目的运行环境管理策略保持一致。
PowerShell
npm install
npm run dev
环境要求项目支持 managed 与 external Python。不要手动把 runtime manifest 复制到
env,也不要假设某个 CUDA / 模型 flavor 在所有开发机器上都存在。常用质量检查
PowerShell
npm test
npm run lint
npm run test:contracts:mcp-ocr
npm run test:regression:p0:full
测试名表示仓库内的验证范围,不等于已通过独立 Windows 机器、完整模型 / 许可矩阵或所有外部客户端的最终验收。
03
架构与安全边界
RendererVue / Quasar 工作台只通过命名 preload IPC 请求安全能力
Electron main本地可信边界窗口、后端生命周期、secret、任务真相
Python backendFastAPI / 模型服务OCR、SAM、图像、视频与模型管理
- Electron main 拥有系统能力:窗口、Tray、退出、后端生命周期、MCP secret 和持久任务状态不归 renderer 所有。
- Renderer 只接收安全投影:本地路径、secret 和受控 artifact 不应绕过 preload IPC 暴露。
- 后端是本地处理服务:媒体和模型处理位于
server/moonshine_server,不要把它描述成公开云 API。 - 输出不覆盖输入:所有处理路径都应保持新文件语义,并验证输出目录和可信路径 containment。
04
项目地图
Repository
src/ Vue renderer
src/pages/IndexPage.vue 图片工作台
src/pages/VideoPage.vue 视频时间轴工作台
src/services/ 图片、SAM、视频服务封装
src-electron/ Electron main、preload、runtime、MCP
server/moonshine_server/ FastAPI、OCR、SAM、模型管理
scripts/ 构建、发布、验证
test/ Node / Electron / contract tests
server/tests/ Python backend tests
/image图片工作台/video视频工作台/activity/mcpMCP 活动与任务视图05
构建与验证
下面是仓库当前提供的 Windows 构建入口。它们用于生成可运行目录、安装器或 Windows 分发矩阵。
PowerShell
npm run build:electron:packager
npm run build:electron:installer
npm run package:win:matrix
- 1先验证源码
运行与改动范围相称的测试和 lint。
- 2准备受保护资源
生成 backend、FFmpeg、模型适配和 runtime 资源,并审计清单。
- 3构建所需形态
日常验证优先 packager,需要安装体验时再构建 NSIS。
- 4验证产物边界
确认 app-only、manifest、签名和包内容,再进入发布流程。
不要从构建成功外推发布结论。仓库内测试或本机 packager 成功不能单独证明 clean-machine 安装、更新、回滚、卸载,也不能证明 beta / canary / stable 人工验收已经完成。
06
实现口径
开发文档只陈述当前源码和已验证边界。接入或二次开发时,请保留“已实现”“条件可用”“待外部验收”的区分。
- 可以依赖:当前源码中的图片 / 视频工作台、模型能力 metadata、preload IPC、MCP 工具白名单和仓库测试入口。
- 需要前置条件:CUDA、SAM3、MAT、SLBR 和真实模型运行取决于本机环境、权重与许可。
- 尚不能对外承诺:全平台 / 全 flavor 可用、独立 clean-machine 完整验收、完整外部 OCR / MCP E2E 或所有 CUDA / SAM3 组合。