Skip to content

GarineHHHHHH/muses

Repository files navigation

🎨 MUSES - 本地 AI 生图工作台

打破 GPT Image 2 高订阅壁垒,用你的方式创意生成 ✨

不想被订阅绑定?中转站卡到崩溃?API 调用又贵又麻烦?MUSES 来拯救你!


🎯 项目背景

你是否遇到过这些烦恼?

  • 💸 订阅贵到离谱 - GPT Image 2 订阅计划一个月 $20,用用就超额
  • 🐌 中转站老卡顿 - 第三方中转站经常吞图、速度慢得要命
  • 🔧 API 调用繁琐 - 自己接 API 又要学技术、又要处理复杂逻辑
  • 🚫 频繁切换模型 - 想试试其他生图模型?配置又要改来改去

MUSES 就是来解决这些痛点的!


🚀 核心优势

优势 详情
💰 成本屠夫 平均生图成本仅 ¥0.04/张,碾压订阅计划
🏠 本地部署 完全本地化,出问题可以直接排查,没有黑盒
闪电快响 Hermes + Agent 驱动,2 分钟内出图(取决于提示词复杂度)
🔄 灵活切换 随时切换你的生图模型,不被单一方案绑架
🛠️ 即插即用 一键配置,无需登录,专注创意本身

📊 项目架构

Framework

三层架构设计:

┌─────────────────────────────────┐
│   MUSES Web UI(React + Vite)   │  ← 你的创意舞台
├─────────────────────────────────┤
│   Node.js 代理服务               │  ← 流量中枢
├─────────────────────────────────┤
│   Hermes 引擎(本地 LLM)         │  ← 大脑核心
├─────────────────────────────────┤
│   生图 API(GPT-4V / 其他模型)   │  ← 图像生成器
└─────────────────────────────────┘

💡 工作原理

提示词输入 → Hermes 理解 → 优化提示词 → 调用生图 API → 返回图片 → 展示效果
  1. 你输入一个创意提示词(比如"赛博朋克风格的城市夜景")
  2. Hermes 本地大模型理解你的意图,智能优化提示词细节
  3. Agent 驱动快速响应,直接调用生图 API
  4. 图片秒现到你的网页界面
  5. 历史记录自动保存,随时回顾创意过程

🎬 效果展示

首页界面

Homepage

生图效果

Output

Cost


📦 功能清单

零登录体验 - 打开即用,无繁琐注册
实时提示词输入 - 支持中英文混合
实时图像预览 - 生成即刻显示
历史记录面板 - 快速回顾往期创意
侧边栏模型配置 - 一键切换 API 和密钥
灵活部署选项 - 本地 / 服务器 / WSL 都支持


🔧 快速开始

环境要求

  • Node.js 18+
  • npm 或 yarn
  • Hermes 本地服务(运行在 127.0.0.1:8642 或你的自定义端口)
  • 生图 API Key(OpenAI / Replicate / 其他)

一键启动

# 1. 克隆仓库
git clone <your-repo-url>
cd muses

# 2. 安装依赖
npm install

# 3. 启动开发环境(自动启动 Node 代理 + Vite 前端)
npm run dev

# 现在打开浏览器访问 http://localhost:5173

环境变量配置

创建 .env.local 文件(可选,如需自定义):

# Hermes 代理地址(默认已配置,如无特殊需求可忽略)
VITE_HERMES_PROXY_TARGET=http://127.0.0.1:18789

# API 端点路径
VITE_HERMES_CONFIG_ENDPOINT=/api/hermes/config
VITE_HERMES_GENERATE_ENDPOINT=/api/hermes/generate

# Hermes 社区链接
VITE_HERMES_COMMUNITY_URL=https://example.com/community

其他命令

# 构建生产版本
npm run build

# 预览构建结果
npm run preview

# 仅启动 Node 服务器
npm run server

🔌 API 接口规范

1. 配置更新接口

POST /api/hermes/config
Content-Type: application/json

{
  "modelUrl": "https://api.openai.com/v1/images/generations",
  "apiKey": "sk-your-api-key",
  "model": "dall-e-3"
}

响应:

{
  "success": true,
  "message": "配置已保存",
  "data": {}
}

2. 生图请求接口

POST /api/hermes/generate
Content-Type: application/json

{
  "prompt": "幽蓝色赛博城市,雨夜,镜面反射,cyberpunk风格",
  "modelUrl": "https://api.openai.com/v1/images/generations",
  "apiKey": "sk-your-api-key"
}

响应:

{
  "success": true,
  "message": "图片生成成功",
  "data": {
    "images": [
      {
        "url": "https://example.com/image-1.png",
        "label": "原始生成"
      }
    ],
    "requestId": "req-12345",
    "generatedAt": "2024-05-10T10:30:00Z"
  }
}

🐛 常见问题排查

connect ECONNREFUSED 127.0.0.1:18789

问题: Vite 代理无法连接到 Hermes 服务

解决方案:

  1. 检查 Hermes 是否运行:

    netstat -ano | findstr :18789
  2. Hermes 未启动? 在 WSL 或本地启动 Hermes:

    hermes --port 18789
  3. 使用不同的端口? 设置环境变量:

    Windows CMD:

    set VITE_HERMES_PROXY_TARGET=http://127.0.0.1:你的端口
    npm run dev

    PowerShell:

    $env:VITE_HERMES_PROXY_TARGET = "http://127.0.0.1:你的端口"
    npm run dev

请求失败 - API Key 无效

检查清单:

  • ✓ API Key 是否正确复制(避免多余空格)
  • ✓ API Key 是否过期或被撤销
  • ✓ 生图 API 配额是否还有余额
  • ✓ 网络连接是否稳定

❌ 图片加载不出来

  • 检查生图 API 的响应 URL 是否正确
  • 确认图片服务器是否可访问
  • 查看浏览器控制台的网络请求错误

📁 项目结构

muses/
├── src/
│   ├── App.tsx              # 主应用组件
│   ├── main.tsx             # 入口文件
│   └── styles.css           # 样式文件
├── imgs/
│   ├── logo.png             # 项目 Logo
│   ├── framework.png        # 架构图
│   ├── index.png            # 首页截图
│   └── output.png           # 生图效果
├── server.js                # Node.js 代理服务
├── vite.config.ts           # Vite 配置
├── tsconfig.json            # TypeScript 配置
├── package.json             # 项目依赖
└── README.md                # 你在这里 👈

💬 工作流程示例

场景:你想生成一张"未来都市风景"

1️⃣  在 MUSES 界面输入提示词:
    "未来风格的摩天楼城市,蓝紫色灯光,夜间,赛博朋克美学"

2️⃣  Hermes 本地大模型进行智能优化:
    "A stunning cyberpunk metropolis at night with towering skyscrapers,
     neon blue and purple lights, holographic advertisements,
     dramatic volumetric lighting, 8K, ultra-detailed, trending on artstation"

3️⃣  生图 API 快速响应(平均 30-60 秒)

4️⃣  图片呈现在你的屏幕上 ✨

5️⃣  满意?一键保存;不满意?调整提示词重新生成

🛡️ 隐私 & 安全

  • 本地优先 - 你的配置和历史记录存储在本地
  • 无云同步 - 数据不会自动上传到任何远程服务器
  • 完全可控 - 你完全掌控 API Key 和生成内容
  • 开源透明 - 代码开放,任何人都可以审计

🎁 支持我们

如果 MUSES 让你的创意工作变得更高效、更省钱,请考虑支持我们:

⭐ 最简单的支持方式

在 GitHub 给我们一个 Star 🌟 - 你的支持是我们最大的动力!

💖 其他支持方式

  • 分享给朋友 - 口碑传播是最好的推广
  • 提交 Issue & PR - 帮助我们发现 bug、增加新功能
  • 反馈建议 - 告诉我们你的使用体验和想法
  • 社区贡献 - 参与文档编写、示例代码等

🤝 赞助者致敬

感谢所有支持 MUSES 项目的朋友们!你们的信任和支持是我们坚持下去的理由。


📝 License

MIT License - 自由使用,自由分享 ✌️


🔗 相关链接


用 MUSES,让每一个创意都闪闪发光! ✨

Have fun creating amazing images! 🎨

接口契约

默认请求地址如下:

  • 配置更新:POST /api/hermes/config
  • 生成请求:POST /api/hermes/generate

请求体示例:

{
  "modelUrl": "https://api.example.com/v1/images",
  "apiKey": "your-api-key",
  "prompt": "幽蓝色赛博城市,雨夜,镜面反射"
}

响应需要严格符合以下结构,页面只认这一种格式:

{
  "success": true,
  "message": "optional human readable text",
  "data": {
    "images": [
      {
        "url": "https://...",
        "label": "optional"
      }
    ],
    "requestId": "optional"
  }
}

配置更新接口同样要求返回 success: truedata 可选。

环境变量

如果你的 Hermes 代理地址不同,可以在启动前设置:

  • VITE_HERMES_PROXY_TARGET:Vite 开发代理目标,默认 http://127.0.0.1:18789
  • VITE_HERMES_CONFIG_ENDPOINT:配置接口路径,默认 /api/hermes/config
  • VITE_HERMES_GENERATE_ENDPOINT:生成接口路径,默认 /api/hermes/generate
  • VITE_HERMES_COMMUNITY_URL:侧边栏链接地址,默认官方资源入口

说明

侧边栏已经加入 Hermes 中文社区 / 资源入口链接位。如果你有内部中文社区链接,可以直接通过 VITE_HERMES_COMMUNITY_URL 替换成你们自己的地址。

常见问题

connect ECONNREFUSED 127.0.0.1:8787

这表示 Vite 代理无法连接到 Hermes 服务,通常是服务未启动或端口不匹配。

你当前环境里,已验证可用的网关端口是 18789/api/hermes/config 返回 200),项目默认已改为该端口。

排查步骤:

  1. 在 Windows 终端检查端口是否监听:
netstat -ano | findstr :18789
  1. 如果没有监听,确认 Hermes 在 WSL 中已启动,并且绑定 0.0.0.0:18789127.0.0.1:18789

  2. 若 Hermes 使用了其他端口,在项目根目录设置:

set VITE_HERMES_PROXY_TARGET=http://127.0.0.1:你的端口
npm run dev

PowerShell 可用:

$env:VITE_HERMES_PROXY_TARGET = "http://127.0.0.1:你的端口"
npm run dev

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors