XG AI Studio 是一个 AI 图片生成与编辑工具,在 CookSleep/gpt_image_playground 的基础上重做而成。上游是一个优秀的纯浏览器端工具,数据存在 IndexedDB 里,开箱即用。
本项目的侧重点不同:Android 客户端 + 自建服务端。核心差异在于账号体系和跨设备同步——图片和对话保存在你自己的服务器上,多台设备之间自动同步,手机切到后台时生成任务也不会中断。
如果你想要的是打开就能用、不需要服务器的网页工具,上游项目更合适。如果你想要一个自己掌控数据的 Android 应用,那就是这个。
APK 通过 GitHub Releases 分发。最低 Android 8.0(API 26)。
应用有两种构建模式,互不依赖:
- 本地模式(默认) —— 填自己的 API Key,数据存设备上的 IndexedDB,不需要任何服务器
- 自托管模式 —— 登录账号,图片和对话存在你自己的服务器上,多设备同步,切后台生成不中断
两种模式共用同一套 Kotlin 原生壳层,区别只在前端构建方式和 Gradle 标记。构建方法见 android-app/README.md。
应用是 Kotlin 原生壳层加 WebView 的混合架构,但原生的部分做得比较实:
- 原生 Material 3 外壳 —— 顶栏、底部导航、返回栈由 Kotlin 侧管理,不是网页模拟的
- 离线可用 —— 前端资源打包进 APK,通过
WebViewAssetLoader以虚拟 HTTPS 源加载,setHttpAllowed(false)确保这些请求永不出网 - 断点续传下载 —— 图片和 APK 更新支持 Range/ETag 续传
- 安全区与输入法适配 —— 刘海屏、手势栏、软键盘的插入区由原生侧计算后传给 WebView
自托管模式额外提供:
- 后台任务不中断 —— 生成任务托管在服务端,切后台或息屏都不影响,回到应用时结果已经在那儿
- 应用内更新 —— 从自建服务端的
/api/releases/android/latest检查并下载新版本
WebView 的安全边界收得很紧:script-src 恒定限制在打包资源内,页面导航和文件下载都有主机白名单校验。connect-src 按模式区分——自托管模式只允许你自己的服务端,本地模式放开到任意 HTTPS(因为用户要直连自己配置的服务商)。详见 WebSecurityPolicy.kt。
需要 JDK 21、Android SDK 和 Node 22+。前端资源要先构建,Gradle 才有东西可打包:
npm ci
npm run build:android # 本地模式
cd android-app
./gradlew assembleRelease # Windows 用 ./gradlew.bat自托管模式需要换成 npm run build:android:self-hosted,并给 Gradle 加上 -PgipSelfHosted=true -PgipAppHost=your-domain.example(该值必须与服务端 PUBLIC_ORIGIN 一致,否则 CSP 会拦掉 API 请求)。完整说明和签名配置见 android-app/README.md。
Node 22 + Fastify + SQLite,单进程单副本设计。提供账号体系、跨设备同步、服务端托管的图片任务和加密的 AI 凭据存储。
所有配置走环境变量,代码里没有任何默认凭据——缺少必需变量时服务会直接拒绝启动。完整部署步骤(Caddy、systemd、Restic 加密备份)见 deploy/self-hosted/README.md。
npm ci
npm run build:self-hosted
npm start关键环境变量:PUBLIC_ORIGIN、APP_PASSWORD_HASH(Argon2id)、DATA_ENCRYPTION_KEY、VERIFICATION_HMAC_KEY、AI_BASE_URL、SMTP 相关。
同步协议做了比较完整的一致性处理:墓碑终态、显式删除意图、所有者变基、加载栅栏,以及冲突不可恢复时的 FULL_SYNC_REQUIRED 兜底。图片以 SHA-256 内容寻址存储,天然去重。
网页端同样包含在本仓库中,有两种模式:
- 纯本地模式 —— 用你自己的 API Key,数据存 IndexedDB,不需要服务器
- 自托管模式 —— 登录账号,数据存服务端并跨设备同步
npm ci
npm run dev功能上继承自上游:文生图、参考图与遮罩编辑、Agent 多轮对话、多服务商配置(OpenAI 兼容 / fal.ai / 自定义 HTTP)、收藏夹与批量操作。这部分的详细用法建议直接看上游文档,写得比我详细。
npm ci
npm test # Vitest,1000+ 用例
npm run build # 网页端
npm run build:self-hosted # 网页端 + 服务端
npm run build:android # Android 资源包Android 侧的单元测试:
cd android-app
./gradlew testDebugUnitTest lintRelease代码风格见 AGENTS.md,简单说:2 空格缩进、单引号、不写分号、箭头函数参数始终带括号、注释和 UI 文案用中文。
Kotlin + Material 3 + WebView(Android)· React 19 + TypeScript + Vite + Zustand + Tailwind(前端)· Node 22 + Fastify + better-sqlite3 + argon2(服务端)· Vitest + JUnit(测试)
本项目基于 MIT License 开源。
衍生自 CookSleep/gpt_image_playground,前端的图片生成、编辑与 Agent 能力大部分来自该项目。感谢原作者 @CookSleep 的工作。
如果你在此基础上二次修改并公开部署,请按 MIT 保留原始版权声明和本项目的来源说明。




