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 推理。02
本地开发
在仓库根目录安装依赖,再启动 Quasar 的 Electron 开发模式。具体 Python 环境应与项目的运行环境管理策略保持一致。
npm install
npm run dev
env,也不要假设某个 CUDA / 模型
flavor 在所有开发机器上都存在。
常用质量检查
npm test
npm run lint
npm run test:contracts:mcp-ocr
npm run test:regression:p0:full
测试名表示仓库内的验证范围,不等于已通过独立 Windows 机器、完整模型 / 许可矩阵或所有外部客户端的最终验收。
03
架构与安全边界
- Electron main 拥有系统能力:窗口、Tray、退出、后端生命周期、MCP secret 和持久任务状态不归 renderer 所有。
- Renderer 只接收安全投影:本地路径、secret 和受控 artifact 不应绕过 preload IPC 暴露。
-
后端是本地处理服务:媒体和模型处理位于
server/moonshine_server,不要把它描述成公开云 API。 - 输出不覆盖输入:所有处理路径都应保持新文件语义,并验证输出目录和可信路径 containment。
04
项目地图
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 分发矩阵。
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、签名和包内容,再进入发布流程。
06
实现口径
开发文档只陈述当前源码和已验证边界。接入或二次开发时,请保留“已实现”“条件可用”“待外部验收”的区分。
- 可以依赖:当前源码中的图片 / 视频工作台、模型能力 metadata、preload IPC、MCP 工具白名单和仓库测试入口。
- 需要前置条件:CUDA、SAM3、MAT、SLBR 和真实模型运行取决于本机环境、权重与许可。
- 尚不能对外承诺:全平台 / 全 flavor 可用、独立 clean-machine 完整验收、完整外部 OCR / MCP E2E 或所有 CUDA / SAM3 组合。