MuMuAINovel
一款基于 AI 的智能小说创作助手,帮助你轻松创作精彩故事
Install / Use
/learn @xiamuceer-j/MuMuAINovelREADME
MuMuAINovel 📚✨
<div align="center">
基于 AI 的智能小说创作助手
</div><div align="center">
💬 加入交流群
欢迎扫码加入 QQ 交流群,一起交流 AI 小说创作心得、反馈问题、获取最新动态!
<img src="frontend/public/qq.jpg" alt="QQ交流群二维码" width="300" /> </div><div align="center">
💖 支持项目
如果这个项目对你有帮助,欢迎通过以下方式支持开发:
在 MuMu の API 站点充值满 50 元及以上,也可以获得下方赞助专属权益。
🎁 赞助专属权益
| 权益 | 说明 | |------|------| | 📋 优先需求响应 | 您的功能需求和问题反馈将获得优先处理 | | 🚀 Windows一键启动 | 获取免安装 EXE 程序,双击即可使用 | | 💬 专属技术支持 | 加入赞助者内部群,获得远程协助和配置指导 |
☕ 赞助 / API 站点充值档位
| 金额 | 描述 | |------|------| | ¥5 | 🌶️ 一包辣条 | | ¥10 | 🍱 一顿拼好饭 | | ¥20 | 🧋 一杯咖啡 | | ¥50 | 🍖 一次烧烤 | | ¥99 | 🍲 一顿海底捞 |
您的支持是我持续开发的动力!🙏
</div>✨ 特性
- 🤖 多 AI 模型 - 支持 OpenAI、Gemini、Claude 等主流模型
- 📝 智能向导 - AI 自动生成大纲、角色和世界观
- 👥 角色管理 - 人物关系、组织架构可视化管理
- 📖 章节编辑 - 支持创建、编辑、重新生成和润色
- 🌐 世界观设定 - 构建完整的故事背景
- 🔐 多种登录 - LinuxDO OAuth 或本地账户登录
- 💾 PostgreSQL - 生产级数据库,多用户数据隔离
- 🐳 Docker 部署 - 一键启动,开箱即用
📸 项目预览
<details> <summary>多图预警</summary> <div align="center">登录界面


主界面


项目管理


赞助我 💖


📋 TODO List
✅ 已完成功能
- [x] 灵感模式 - 创作灵感和点子生成
- [x] 自定义写作风格 - 支持自定义 AI 写作风格
- [x] 数据导入导出 - 项目数据的导入导出
- [x] Prompt 调整界面 - 可视化编辑 Prompt 模板
- [x] 章节字数限制 - 用户可设置生成字数
- [x] 思维链与章节关系图谱 - 可视化章节逻辑关系
- [x] 根据分析一键重写 - 根据分析建议重新生成
- [x] Linux DO 自动创建账号 - OAuth 登录自动生成账号
- [x] 职业等级体系 - 自定义职业和等级系统,支持修仙境界、魔法等级等多种体系
- [x] 角色/组织卡片导入导出 - 单独导出角色和组织卡片,支持跨项目数据共享
- [x] 伏笔管理 - 智能追踪剧情伏笔,提醒未回收线索,可视化伏笔时间线
- [x] 提示词工坊 - 社区驱动的 Prompt 模板分享平台,一键导入优质提示词
- [x] 拆书功能 - 目前呼声比较高的功能,一键拆书,给当年的ta一个圆满的结局
📝 规划中功能
......
💡 欢迎提交 Issue 或 Pull Request!
💻 硬件配置要求
最低配置(个人使用/开发环境)
| 组件 | 要求 | |------|------| | CPU | 2 核 | | 内存 | 2 GB RAM | | 存储 | 10 GB 可用空间 | | 网络 | 稳定互联网连接(用于调用 AI API) |
推荐配置(小型团队/生产环境)
| 组件 | 要求 | |------|------| | CPU | 4 核 | | 内存 | 8 GB RAM | | 存储 | 20 GB SSD | | 网络 | 稳定互联网连接 |
高并发配置(80-150 用户)
| 组件 | 要求 | |------|------| | CPU | 8 核 | | 内存 | 16 GB RAM | | 存储 | 50 GB+ SSD | | 网络 | 高带宽连接 |
📌 说明
- Embedding 模型:约 400 MB 磁盘空间,运行时加载到内存
- PostgreSQL:默认配置使用 256 MB shared_buffers,1 GB effective_cache_size
- Docker 部署:建议预留额外 1-2 GB 内存给容器运行时
- 本项目主要依赖外部 AI API(OpenAI/Claude/Gemini),不需要本地 GPU
🚀 快速开始
前置要求
- Docker 和 Docker Compose
- 至少一个 AI 服务的 API Key(OpenAI/Gemini/Claude)
Docker Compose 部署(推荐)
# 1. 克隆项目
git clone https://github.com/xiamuceer-j/MuMuAINovel.git
cd MuMuAINovel
# 2. 配置环境变量(必需)
cp backend/.env.example .env
# 编辑 .env 文件,填入必要配置(API Key、数据库密码等)
# 3. 确保文件准备完整
# ⚠️ 重要:确保以下文件存在
# - .env(配置文件,必需挂载到容器)
# - backend/scripts/init_postgres.sql(数据库初始化脚本)
# 4. 启动服务
docker-compose up -d
# 5. 访问应用
# 打开浏览器访问 http://localhost:8000
📌 注意事项
.env文件挂载:docker-compose.yml会自动将.env挂载到容器,确保文件存在- 数据库初始化:
init_postgres.sql会在首次启动时自动执行,安装必要的PostgreSQL扩展- 自行构建: 如需从源码构建,请先下载 embedding 模型文件(加群获取)
使用 Docker Hub 镜像(推荐新手)
# 1. 拉取最新镜像(已包含模型文件)
docker pull mumujie/mumuainovel:latest
# 2. 创建 docker-compose.yml(点击下方展开查看完整配置)
<details>
<summary>📄 点击展开 docker-compose.yml 完整配置</summary>
services:
postgres:
image: postgres:18-alpine
container_name: mumuainovel-postgres
environment:
POSTGRES_DB: ${POSTGRES_DB:-mumuai_novel}
POSTGRES_USER: ${POSTGRES_USER:-mumuai}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-123456}
POSTGRES_INITDB_ARGS: "--encoding=UTF8 --locale=C"
TZ: ${TZ:-Asia/Shanghai}
volumes:
- postgres_data:/var/lib/postgresql
- ./backend/scripts/init_postgres.sql:/docker-entrypoint-initdb.d/init.sql:ro
ports:
- "${POSTGRES_PORT:-5432}:5432"
restart: unless-stopped
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-mumuai} -d ${POSTGRES_DB:-mumuai_novel}"]
interval: 10s
timeout: 5s
retries: 5
start_period: 10s
networks:
- ai-story-network
command:
- postgres
- -c
- max_connections=${POSTGRES_MAX_CONNECTIONS:-200}
- -c
- shared_buffers=${POSTGRES_SHARED_BUFFERS:-256MB}
- -c
- effective_cache_size=${POSTGRES_EFFECTIVE_CACHE_SIZE:-1GB}
- -c
- maintenance_work_mem=${POSTGRES_MAINTENANCE_WORK_MEM:-64MB}
- -c
- checkpoint_completion_target=${POSTGRES_CHECKPOINT_COMPLETION_TARGET:-0.9}
- -c
- wal_buffers=${POSTGRES_WAL_BUFFERS:-16MB}
- -c
- default_statistics_target=${POSTGRES_DEFAULT_STATISTICS_TARGET:-100}
- -c
- random_page_cost=${POSTGRES_RANDOM_PAGE_COST:-1.1}
- -c
- effective_io_concurrency=${POSTGRES_EFFECTIVE_IO_CONCURRENCY:-200}
- -c
- work_mem=${POSTGRES_WORK_MEM:-4MB}
- -c
- min_wal_size=${POSTGRES_MIN_WAL_SIZE:-1GB}
- -c
- max_wal_size=${POSTGRES_MAX_WAL_SIZE:-4GB}
mumuainovel:
image: mumujie/mumuainovel:latest
container_name: mumuainovel
depends_on:
postgres:
condition: service_healthy
ports:
- "${APP_PORT:-8000}:8000"
volumes:
- ./logs:/app/logs
- ./.env:/app/.env:ro
- ./storage/generated_covers:/app/backend/storage/generated_covers
environment:
# 应用配置
- APP_NAME=${APP_NAME:-MuMuAINovel}
- APP_VERSION=${APP_VERSION:-1.0.0}
- APP_HOST=${APP_HOST:-0.0.0.0}
- APP_PORT=8000
- DEBUG=${DEBUG:-false}
# 数据库配置
- DATABASE_URL=postgresql+asyncpg://${POSTGRES_USER:-mumuai}:${POSTGRES_PASSWORD:-123456}@postgres:5432/${POSTGRES_DB:-mumuai_novel}
- DB_HOST=postgres
- DB_PORT=5432
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-123456}
# PostgreSQL 连接池配置
- DATABASE_POOL_SIZE=${DATABASE_POOL_SIZE:-30}
- DATABASE_MAX_OVERFLOW=${DATABASE_MAX_OVERFLOW:-20}
- DATABASE_POOL_TIMEOUT=${DATABASE_POOL_TIMEOUT:-60}
- DATABASE_POOL_RECYCLE=${DATABASE_POOL_RECYCLE:-1800}
- DATABASE_POOL_PRE_PING=${DATABASE_POOL_PRE_PING:-True}
- DATABASE_POOL_USE_LIFO=${DATABASE_POOL_USE_LIFO:-True}
# 代理配置(可选)
- HTTP_PROXY=${HTTP_PROXY:-}
- HTTPS_PROXY=${HTTPS_PROXY:-}
- NO_PROXY=${NO_PROXY:-localhost,127.0.0.1}
# AI 服务配置
- OPENAI_API_KEY=${OPENAI_API_KEY:-}
- OPENAI_BASE_URL=${OPENAI_BASE_URL:-https://api.openai.com/v1}
- GEMINI_API_KEY=${GEMINI_API_KEY:-}
- GEMINI_BASE_URL=${GEMINI_BASE_URL:-}
- ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY:-}
- ANTHROPIC_BASE_URL=${ANTHROPIC_BASE_URL:-}
- DEFAULT_AI_PROVIDER=${DEFAULT_AI_PROVIDER:-openai}
- DEFAULT_MODEL=${DEFAULT_MODEL:-gpt-4o-mini}
- DEFAULT_TEMPERATURE=${DEFAULT_TEMPERATURE:-0.7}
- DEFAULT_MAX_TOKENS=${DEFAULT_MAX_TOKENS:-32000}
# LinuxDO OAuth 配置
- LINUXDO_CLIENT_ID=${LINUXDO_CLIENT_ID:-11111}
- LINUXDO_CLIENT_SECRET=${LINUXDO_CLIENT_SECRET:-11111}
- LINUXDO_REDIRECT_URI=${LINUXDO_REDIRECT_URI:-http://localhost:8000/api/auth/linuxdo/callback}
- FRONTEND_URL=${FRONTEND_URL:-http://localhost:8000}
# 本地账户登录配置
- LOCAL_AUTH_ENABLED=${LOCAL_AUTH_ENABLED:-true}
- LOCAL_AUTH_USERNAME=${LOCAL_AUTH_USERNAME:-admin}
- LOCAL_AUTH_PASSWORD=${LOCAL_AUTH_PASSWORD:-admin123}
- LOCAL_AUTH_DISPLAY_NAME=${LOCAL_AUTH_DISPLAY_NAME:-本地管理员}
# 会话配置
- SESSION_EXPIRE_MINUTES=${SESSION_EXPIRE_MINUTES:-120}
- SESSION_REFRESH_THRESHOLD_MINUTES=${SESSION_REFRESH_THRESHOLD_MINUTES:-30}
restart: unless-stopped
healthcheck:
test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:8000/health')"]
interval: 30s
timeout: 10s
retries: 3
start_period: 30s
networks:
- ai-story-network
volumes:
postgres_data:
driver: local
networks:
ai-story-network:
driver: bridge
</details>
# 3. 启动服务
docker-compose up -d
# 4. 查看日志
docker-compose logs -f
# 5. 更新到最新版本
docker-compose pull
docker-compose up -d
💡 提示: Docker Hub 镜像已包含所有依赖和模型文件,无需额外下载
本地开发 / 从源码构建
前置准备
# ⚠️ 重要:如果从源码构建,需要先下载 embedding 模型文件
# 模型文件较大(约 400MB),需放置到以下目录:
# backend/embedding/models--sentence-transformers--paraphrase-multilingual-MiniLM-L12-v2/
#
# 📥 获取方式:
# - 加入项目 QQ 群或 Linux DO 讨论区获取下载链接
# - 群号:见项目主页
# - Linux DO:https://linux.do/t/topic/1100112
后端
cd backend
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r requirements.txt
# 配置 .env 文件
cp .env.example .env
# 编辑 .env 填入必要配置
# 启动 PostgreSQL(可使用 Docker)
docker run -d --name postgres \
-e POSTGRES_PASSWORD=your_password \
-e POSTGRES_DB=mumuai_novel \
-p 5432:5432 \
postgres:18-alpine
# 启动后端
python -m uvicorn app.main:app --host localhost --port 8000 --reload
前端
cd frontend
npm install
npm run dev # 开发模式
npm run build # 生产构建
⚙️ 配置说明
必需配置
创建 .env 文件:
# PostgreSQL 数据库(必需)
DATABASE_URL=postgresql+asyncpg://mumuai:your_password@postgres:5432/mumuai_novel
POSTGRES_PASSWORD=your_secure_password
# AI 服务
OPENAI_API_KEY=your_openai_key
OPENAI_BASE_URL=https://api.openai.com/v1
DEFAULT_AI_PROVIDER=openai
DEFAULT_MODEL=gpt-4o-mini
# 本地账户登录
LOCAL_AUTH_ENABLED=true
LOCAL_AUTH_
Related Skills
node-connect
352.5kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
111.3kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
352.5kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
352.5kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
