开源 AI 图像视频生成工作室 Open Generative AI 实战解析:400+ 模型、无内容过滤、可自托管
【免费下载链接】Open-Generative-AIUnrestricted Open-source alternative to AI video platforms — Free AI image & video generation studio with 600+ models (Flux, Midjourney, Kling, Sora, Veo). No content filters. Self-hosted, MIT licensed.项目地址: https://gitcode.com/GitHub_Trending/ch/Open-Generative-AI
如果你的创意被某家订阅制平台的过滤器拦下,或者你不想让 API 密钥和生成数据都留在别人服务器上,那么需要的是一个能自己掌控的生成工作台。Open Generative AI 就是这样一套开源工具:它把 Flux、Midjourney、Kling、Sora、Veo 等 400 余个文生图、图生视频、唇形同步模型聚合进 16 个"工作室"(Studio)页面,不内置内容过滤、不收订阅费,MIT 协议,可以整套搬到自己机器上。模型调用默认走 Muapi.ai 网关,桌面版还能挂 sd.cpp 和 Wan2GP 两套本地推理引擎,让一部分生成完全离线。
下面按"能做什么 → 怎么跑起来 → 本地推理怎么接 → 一次生成的请求流 → 部署与二开"的顺序拆开讲,所有路径与参数都以仓库当前源码为准。
16 个工作室:能力边界一览
先回答"它到底能干什么"。入口页面 components/StandaloneShell.js 里的TABS数组定义了全部页签,侧边栏再按 Images / Video / Audio / Agents & Automation 四类分组。你可以把它理解成一套"按工种划分的工作台",每个工作台对应一类生成任务:
| 工作室 | 干什么用 | 值得注意的细节 |
|---|---|---|
| Image Studio | 文生图 + 图生图双模式 | 50+ t2i、55+ i2i 模型,上传参考图后自动切换模型集合 |
| Layers Studio | 图层化拆解图像 | 独立页签,走decomposeLayers接口 |
| Cinema Studio | 电影感镜头生成 | 相机/镜头/焦距/光圈四个维度的参数化控制 |
| Design Agent | 画布式自主设计代理 | 动态导入组件(禁用 SSR),依赖packages/Open-AI-Design-Agent |
| AI Influencer | 虚拟人设内容创作 | 面向持续运营同一 AI 形象 |
| Video Studio | 文生视频 + 图生视频 | 40+ t2v、60+ i2v 模型,首帧上传后切模式 |
| AI Clipping | 长视频自动剪高光 | 视频后处理场景 |
| Motion Control | 视频运镜控制 | 走processMotionControl |
| Vibe Motion | 风格化动效生成 | 偏动画向 |
| Lip Sync | 音频驱动口型 | 9 个模型,人像+音频与视频+音频两种输入 |
| Body Swap (Recast) | 图像/视频中主体外观重铸 | 走processRecast |
| Marketing | 从单一输入出广告变体 | 走generateMarketingStudioAd |
| Audio Studio | 文本驱动的音乐/音频生成 | 15+ 音频类模型 |
| Workflow Studio | 节点式多步流水线 | 模板、社区共享、Playground 运行、API 调用四合一 |
| Agent Studio | 对话式多轮创作代理 | 能规划并执行生成任务 |
| Explore Apps | 基于同一模型目录的应用模板目录 | 相当于内置用例集 |
三个横切能力值得单独说,因为它们决定了日常使用体验:上传历史——所有传过的参考图以"URL+缩略图"存在localStorage里,跨会话直接点缩略图复用,不用反复上传;智能控件——宽高比、分辨率、时长选项随所选模型的能力动态变化,不会给你当前模型不支持的参数;生成历史——每次产出都落在浏览器存储,可回看和重新下载。
首次运行:桌面版、源码版、容器版三条路径
按你的目标选一条路径就够,不必三个都试。
只想用,不碰代码:桌面版
仓库发布了一键安装包(macOS arm64/x64 的 DMG、Windows x64 的 NSIS 安装包),装完即用,不需要 Node 环境。需要注意的是,由于安装包未经 Apple 公证和代码签名,首次启动会被系统安全机制拦一下:
macOS:挂载 DMG、拖入
/Applications后,打开终端执行下面这条命令清除隔离属性,再右键应用选 Open:xattr -cr "/Applications/Open Generative AI.app"不想碰终端的话,去 系统设置 → 隐私与安全性,找到"Open Generative AI 被阻止"提示,点 Open Anyway。
Windows:SmartScreen 告警时点 More info → Run anyway,应用会装进
%LocalAppData%并生成开始菜单快捷方式。Ubuntu / Linux:跑
npm run electron:build:linux在release/目录产出 AppImage 和 .deb。老系统上 AppImage 起不来,先装libfuse2。
特别注意:Ubuntu 24.04 及以后默认启用
apparmor_restrict_unprivileged_userns内核策略,会卡住 Chromium 的用户命名空间沙箱,表现为应用静默退出。推荐直接装 .deb(自带 AppArmor profile);AppImage 用户可临时执行sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0,要永久生效则把kernel.apparmor_restrict_unprivileged_userns=0写入/etc/sysctl.d/99-userns.conf。
想改代码:从源码构建
package.json 的setup脚本已经帮你把"子模块 + 装依赖 + 构建 workspace 包"三步串好了,关键是不能只跑npm install——packages/studio、workflow-builder、agents、design-agent 这四个 workspace 包必须先构建,否则 dev 脚本跑不起来:
# 带子模块克隆(workflow 与 agent 包依赖子模块) git clone --recurse-submodules https://gitcode.com/GitHub_Trending/ch/Open-Generative-AI cd Open-Generative-AI npm run setup # = git submodule update --init --recursive && npm install && npm run build:packages npm run electron:dev # 桌面版(Electron + Vite),推荐 # 或 npm run dev # Web 版(Next.js)→ http://localhost:3000首次运行会提示输入 Muapi API Key;如果只打算用本地模型,这一步可以跳过。
排错:如果
npm run dev报Couldn't find a 'pages' directory,说明 Next.js 没看到app/目录。确认你是在仓库根目录(同时有app/、package.json、next.config.mjs的那一层)执行的命令,并且packages/Vibe-Workflow等子模块目录非空,否则重跑一次npm run setup。
想上线:容器版
docker-compose.yml 只有一段服务定义,把宿主3001映射到容器内 Next.js 的3000,NODE_ENV=production加unless-stopped重启策略:
docker compose up -d --build # 构建并启动,访问 http://localhost:3001Dockerfile 是典型的三阶段构建:deps 阶段只拷各子包的package*.json装依赖;builder 阶段执行npm run build:packages再npm run build;runner 阶段只带.next、public、node_modules、package.json四个东西,基于node:20-alpine。镜像里没有开发依赖,体积和攻击面都小。
不烧云额度的本地推理:sd.cpp 与 Wan2GP 两个引擎
这是桌面版相对 Web 版最大的独占能力:同一套 UI,底层推理可以指到你自己的 GPU 上。两个引擎互相独立,都在 Settings → Local Models 里配置。
| 引擎 | 形态 | 适合谁 | 关键限制 |
|---|---|---|---|
| sd.cpp | 随应用分发的 C++ 引擎,本机直接跑;Apple Silicon 走 Metal,CUDA/Vulkan/ROCm 覆盖 Linux/Windows | Mac M 系列用户、纯图像场景 | 仅图像模型 |
| Wan2GP | 你自己在一台 GPU 机器上跑的 Gradio 服务器,桌面端只做 HTTP 客户端 | 需要视频模型(Wan 2.2、Hunyuan、LTX)或大图像模型(Flux、Qwen-Image) | 服务器端必须 CUDA/ROCm,无 Apple Silicon 路径 |
本地推理只在桌面版可用,托管 Web 版永远走云端 API。
sd.cpp:模型目录、数据目录与 Metal 验证
可选模型集中在 electron/lib/modelCatalog.js,每个条目都带了默认推理参数,全部要求"公开可下载、免鉴权":
| 模型 | 架构 | 权重大小 | 默认参数(源码内定义) |
|---|---|---|---|
| Z-Image Turbo | DiT | 2.5 GB + 2.7 GB 辅助文件 | 8 步、guidance 1.0、euler/simple |
| Z-Image Base | DiT | 3.5 GB + 2.7 GB 辅助文件 | 50 步、guidance 7.5 |
| Dreamshaper 8 | SD 1.5 | 2.1 GB | 20 步、euler_a、512×512 |
| Realistic Vision v5.1 | SD 1.5 | 2.1 GB | 25 步写实向 |
| Anything v5 | SD 1.5 | 2.1 GB | 20 步动漫向 |
| SDXL Base 1.0 | SDXL | 6.9 GB | 30 步高分辨率 |
Z-Image 两个模型共用两个辅助文件,源码里由ZIMAGE_AUXILIARY常量定义:Qwen3-4B 文本编码器(Qwen3-4B-Instruct-2507-UD-Q4_K_XL.gguf,2.4 GB)和 FLUX VAE(ae.safetensors,约 335 MB),只下载一次。
权重放在哪里、怎么换盘,由 electron/lib/localInferencePaths.js 的resolveLocalAiPaths()决定:默认在 Electron 用户数据目录下的local-ai/,启动前设置环境变量OPEN_GENERATIVE_AI_LOCAL_AI_DIR可以把整个目录迁到别的磁盘,应用会在其中自动建bin/、models/、tmp/三个子目录,Settings 页面会显示解析后的实际路径。三个平台的默认位置:
- macOS:
~/Library/Application Support/open-generative-ai/local-ai - Windows:
%APPDATA%\open-generative-ai\local-ai - Linux:
~/.config/open-generative-ai/local-ai
验证安装是否健康的最快办法是绕过 UI,直接驱动应用内部署的sd-cli(和 UI 用的是同一个二进制),跑一次 512×512 / 12 步推理:
APP_DATA="${OPEN_GENERATIVE_AI_LOCAL_AI_DIR:-$HOME/Library/Application Support/open-generative-ai/local-ai}" ls "$APP_DATA/bin" # 应有 sd-cli 和 libstable-diffusion.dylib curl -L --fail --progress-bar \ -o "$APP_DATA/models/DreamShaper_8_pruned.safetensors" \ "https://huggingface.co/Lykon/DreamShaper/resolve/main/DreamShaper_8_pruned.safetensors" DYLD_LIBRARY_PATH="$APP_DATA/bin" "$APP_DATA/bin/sd-cli" \ -m "$APP_DATA/models/DreamShaper_8_pruned.safetensors" \ -p "a serene mountain lake at sunrise, oil painting" \ -o /tmp/sd15-test.png \ --steps 12 -H 512 -W 512 --cfg-scale 7.5 --seed 42 \ --sampling-method euler_aMetal 加速正常时输出会打印total params memory size = 1969.78MB (VRAM 1969.78MB, RAM 0.00MB)并得到一张连贯的 PNG。如果VRAM显示0.00MB,说明 dylib 是纯 CPU 版本,用otool -L "$APP_DATA/bin/libstable-diffusion.dylib" | grep -i metal确认后回 Settings 重装引擎。
内存红线:Z-Image 建议 16 GB 内存(约 7.4 GB 权重 + 2.4 GB 计算缓冲);8 GB 的基础款 M 系列 Mac 上 Z-Image 已知会挂死系统,这类机器请只用 SD 1.5 模型。M2 上 SD 1.5 的参考速度是 Metal 生效时约 1–2 秒/步,实测 10 秒/步基本可以断定回退到了 CPU。
Wan2GP:把重活甩给局域网里的 GPU 机器
Wan2GP 的运行时(Sage attention、flash-attn、AWQ/GGUF 内核)只有 CUDA 路径,没有 MPS,所以官方思路是"服务器与客户端分离":在一台带 NVIDIA/AMD GPU 的机器上自建 Wan2GP 服务,Mac 桌面端只发提示词、收结果:
# 在 GPU 机器上 git clone https://github.com/deepbeepmeep/Wan2GP cd Wan2GP ./install.sh # Windows 用 install.bat python wgp.py --listen --server-name 0.0.0.0然后打开桌面版 Settings → Local Models → Wan2GP server,粘贴形如http://192.168.1.42:7860的地址,点 Test 再 Save。目录见 electron/lib/wan2gpProvider.js 的WAN2GP_CATALOG:Flux.1 Dev(1024px、28 步)、Qwen Image(1024px、30 步)两个图像模型,以及 Wan 2.2(T2V/I2V)、Hunyuan Video、LTX Video 三个视频模型。
注意当前接线的边界:图像模型会出现在 Image Studio;视频模型虽经同一套生成 API 可达,但 Image Studio 会明确拒绝视频输出,完整的 Video Studio 接线在路线图里,以 README 为准。
一次生成请求的完整旅程:BYOK 密钥注入与两步轮询
理解这条链路,你才能解释"我的 key 到底发给了谁"。整条链路由三部分组成:
- 客户端密钥管理(components/StandaloneShell.js):Key 存
localStorage(键名muapi_key),同时写一个一年有效期、SameSite=Lax的同名 cookie 供后台请求识别身份;登出时两者一起清掉。真正拦截注入发生在 axios 请求拦截器里——只有目标是相对路径或内部代理路径(/api/app、/api/workflow、/api/agents、/api/api、/api/v1)时,才把x-api-key头加上去。换句话说,S3 这类外部域名的请求根本不会带上你的密钥。 - 服务端代理(app/api/api/v1/[[...path]]/route.js):Next.js 路由把
/api/api/v1/*转发到https://api.muapi.ai/api/v1/*。cleanHeaders()会剥掉host、connection、cookie三个头,鉴权只认x-api-key请求头——源码注释里明确标注 cookie 鉴权因 CWE-522 被移除。 - 网关两步协议:提交
POST /api/v1/{model-endpoint},拿回request_id;轮询GET /api/v1/predictions/{request_id}/result直到状态变为completed。文件走POST /api/v1/upload_file(multipart),返回托管 URL 再喂给条件模型;多图模型则在单次请求里直接转发整个images_list数组。开发模式下 vite.config.mjs 把/api代理到api.muapi.ai以绕开 CORS。
客户端封装在 packages/studio/src/muapi.js,风格很统一:所有函数都是具名导出,apiKey固定是第一个参数,比如generateImage、generateI2V、processLipSync、executeWorkflow、sendAgentChatMessage,共 90 余个函数。唇形同步、工作流、Agent 对话全部复用同一套提交-轮询骨架,这也是后面谈扩展的基础。
UI 侧还有两个容易忽略的细节:余额每 30 秒轮询一次(getUserBalance);生成完成/失败的通知存sessionStorage,12 秒过期、最多保留 3 条,所以切页签不会丢通知。
模型目录即扩展点:models.js 是单一事实来源
packages/studio/src/models.js 定义了 400+ 个模型的全部元数据(端点名、参数范围、宽高比、分辨率档位),README 按八大类给出的数量分布(经源码核对,总计 420+,另有经 Marketing/Agent/Design Agent 透出的模型):
| 类别 | 数量 | 代表模型 |
|---|---|---|
| 文生图 | 70+ | Flux Dev、Nano Banana 2、Seedream 5.0、Ideogram v3、Midjourney v7、GPT-4o |
| 图生图 | 70+ | Nano Banana 2 Edit(最多 14 张参考图)、Flux Kontext Pro、Seededit v3 |
| 文生视频 | 85+ | Kling v3、Sora 2、Veo 3、Wan 2.6、Seedance 2.0/Extend、Hailuo 2.3 |
| 图生视频 | 120+ | Kling v2.1 I2V、Veo3 I2V、Runway I2V、Midjourney v7 I2V |
| 视频转视频 | 35+ | 视频特效、AI Clipping、Vibe Motion |
| 唇形同步 | 15 | Infinite Talk I2V、Wan 2.2 Speech、LTX 2.3/19B Lipsync、LatentSync |
| 主体重铸 | 3 | 图像与视频的 Recast |
| 音频 | 15+ | 文生音乐、remix、音频编辑 |
想加一个新模型,标准动作是在这个文件里按现有条目格式补一条定义(端点、参数字段、能力开关),工作室侧的智能控件会自动根据你声明的能力渲染对应选项——不需要改 UI 代码。next.config.mjs 的transpilePackages同时列了studio、ai-agent、workflow-builder、design-agent四个包,加上 package.json 里对应的workspaces声明,构成一个 npm monorepo:workflow 引擎、Agent 运行时、设计代理都是独立子包,各自有独立的构建脚本(build:workflow、build:agent、build:design、build:studio),改完本地重建即可生效。
顺带一提 Cinema Studio 的参数体系,它是"参数 → 提示词修饰符"转换的样板:6 种虚拟相机(Modular 8K Digital、Full-Frame Cine Digital、Grand Format 70mm Film 等)、11 种镜头(Creative Tilt、Extreme Macro、Swirl Bokeh Portrait 等)、7 档焦距(8mm 超广角到 85mm 紧特写)、三档光圈(f/1.4 浅景深 / f/4 均衡 / f/11 深焦),所有选择最终被翻译成优化过的提示词片段发给模型。
二次开发与部署要点
给想动手改的读者一个最小改动清单:
- 改模型:动 packages/studio/src/models.js,重建 studio 包(
npm run build:studio)。 - 改接口行为:客户端在 packages/studio/src/muapi.js;服务端代理逻辑在 app/api 下各
route.js,每个路由都是"拼目标 URL → 清洗头 → 转发"的同构模式,照抄一份改前缀即可接入新后端。 - 加本地模型:sd.cpp 侧在 electron/lib/modelCatalog.js 追加条目(注意
requiresAuxiliary与辅助文件);Wan2GP 侧在 electron/lib/wan2gpProvider.js 的目录里加映射。 - 改界面:16 个工作室组件都在 packages/studio/src/components,页面壳在 components/StandaloneShell.js,Tab 增删就是动
TABS与NAVIGATION_CATEGORIES两个数组。 - 打包桌面版:
npm run electron:build(macOS DMG)、:win(NSIS)、:linux(AppImage + DEB)、:all(全平台),产物落在release/。Linux 的 .deb 会在打包阶段把build/linux/apparmor.profile作为 extraFiles 带上,解决 24.04 的沙箱问题。
技术栈方面,package.json声明的是 Next 15 + React 19 + Tailwind(依赖里同时有 v3 与@tailwindcss/vitev4 的痕迹,实际以 lockfile 为准),桌面壳用 Electron 33 + Vite 5,afterPack.js 处理打包后处理,electron/lib下五个模块(localInference、localInferenceAssets、localInferencePaths、localInferenceRuntime、modelCatalog等)承载全部本地推理逻辑,tests/目录里有针对路径解析与资产下载的单测。协议是MIT,自托管、商用魔改、做白标都行。
适合谁,以及边界在哪
Open Generative AI 的价值结构是"聚合层 + 自由层"分离:下层是 Muapi 统一网关加两套可选本地引擎,上层是一套可以整个抄走的 React 工作室框架——做二次开发的人可以从 StandaloneShell.js 学到"密钥只注入内网路径"的拦截器写法,从 localInferencePaths.js 学到桌面应用管理 GB 级外部资产的路径设计,从 Dockerfile 学到 monorepo 的多阶段瘦身构建。边界同样清楚:视频类模型的本地化目前只到 Wan2GP 的半接线状态,Web 版没有本地推理,云端生成依赖 Muapi 账号额度。对想拥有一个"模型够全、界面能改、数据在自己手里"的生成工作台的人来说,它的起步成本是三条命令或一个 DMG,而改造成自己的产品的成本,也就是上面那份最小改动清单的长度。
【免费下载链接】Open-Generative-AIUnrestricted Open-source alternative to AI video platforms — Free AI image & video generation studio with 600+ models (Flux, Midjourney, Kling, Sora, Veo). No content filters. Self-hosted, MIT licensed.项目地址: https://gitcode.com/GitHub_Trending/ch/Open-Generative-AI
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考