[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-72495":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":25,"hasPages":23,"topics":26,"createdAt":10,"pushedAt":10,"updatedAt":27,"readmeContent":28,"aiSummary":29,"trendingCount":16,"starSnapshotCount":16,"syncStatus":30,"lastSyncTime":31,"discoverSource":32},72495,"MuMuAINovel","xiamuceer-j\u002FMuMuAINovel","xiamuceer-j","一款基于 AI 的智能小说创作助手，帮助你轻松创作精彩故事","https:\u002F\u002Fmumuverse.space:1566\u002F",null,"Python",2564,515,15,10,0,17,46,199,51,30.14,"GNU General Public License v3.0",false,"main",true,[],"2026-06-12 02:03:04","# MuMuAINovel 📚✨\n\n\u003Cdiv align=\"center\">\n\n![Version](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fversion-1.4.9-blue.svg)\n![Python](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fpython-3.11-blue.svg)\n![FastAPI](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FFastAPI-0.109.0-green.svg)\n![React](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Freact-18.3.1-blue.svg)\n![License](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-GPL%20v3-blue.svg)\n\n**基于 AI 的智能小说创作助手**\n\n[特性](#-特性) • [快速开始](#-快速开始) • [配置说明](#%EF%B8%8F-配置说明) • [项目结构](#-项目结构)\n\n\u003C\u002Fdiv>\n\n---\n\n\u003Cdiv align=\"center\">\n\n## 💬 加入交流群\n\n欢迎扫码加入 QQ 交流群，一起交流 AI 小说创作心得、反馈问题、获取最新动态！\n\n\u003Cimg src=\"frontend\u002Fpublic\u002Fqq.jpg\" alt=\"QQ交流群二维码\" width=\"300\" \u002F>\n\n\u003C\u002Fdiv>\n\n---\n\n\u003Cdiv align=\"center\">\n\n## 💖 支持项目\n\n如果这个项目对你有帮助，欢迎通过以下方式支持开发：\n\n**[☕ 请我喝杯咖啡](https:\u002F\u002Fmumuverse.space:1588\u002F)**\n\n**[🌐 MuMuのAPI站点](https:\u002F\u002Fapi.mumuverse.space\u002Fregister?aff=4NN8)**\n\n> 在 MuMu の API 站点充值满 50 元及以上，也可以获得下方赞助专属权益。\n\n### 🎁 赞助专属权益\n\n| 权益 | 说明 |\n|------|------|\n| 📋 **优先需求响应** | 您的功能需求和问题反馈将获得优先处理 |\n| 🚀 **Windows一键启动** | 获取免安装 EXE 程序，双击即可使用 |\n| 💬 **专属技术支持** | 加入赞助者内部群，获得远程协助和配置指导 |\n\n### ☕ 赞助 \u002F API 站点充值档位\n\n| 金额 | 描述 |\n|------|------|\n| ¥5 | 🌶️ 一包辣条 |\n| ¥10 | 🍱 一顿拼好饭 |\n| ¥20 | ☕ 一杯咖啡 |\n| ¥50 | 🍖 一次烧烤  |\n| ¥99 | 🍲 一顿海底捞 |\n\n您的支持是我持续开发的动力！🙏\n\n\u003C\u002Fdiv>\n\n---\n\n## ✨ 特性\n\n- 🤖 **多 AI 模型** - 支持 OpenAI、Gemini、Claude 等主流模型\n- 📝 **智能向导** - AI 自动生成大纲、角色和世界观\n- 👥 **角色管理** - 人物关系、组织架构可视化管理\n- 📖 **章节编辑** - 支持创建、编辑、重新生成和润色\n- 🌐 **世界观设定** - 构建完整的故事背景\n- 🔐 **多种登录** - LinuxDO OAuth 或本地账户登录\n- 💾 **PostgreSQL** - 生产级数据库，多用户数据隔离\n- 🐳 **Docker 部署** - 一键启动，开箱即用\n\n## 📸 项目预览\n\n\u003Cdetails>\n\n\u003Csummary>多图预警\u003C\u002Fsummary>\n\n\u003Cdiv align=\"center\">\n\n### 登录界面\n![登录界面](images\u002F1.png)\n\n![登录界面](images\u002F1-1.png)\n\n### 主界面\n![主界面](images\u002F2.png)\n\n![主界面（暗色）](images\u002F2-1.png)\n\n### 项目管理\n![项目管理](images\u002F3.png)\n\n![项目管理](images\u002F3-1.png)\n\n### 赞助我 💖\n![赞助我](images\u002F4.png)\n\n![赞助我](images\u002F4-1.png)\n\n\u003C\u002Fdiv>\n\n\u003C\u002Fdetails>\n\n## 📋 TODO List\n\n### ✅ 已完成功能\n\n- [x] **灵感模式** - 创作灵感和点子生成\n- [x] **自定义写作风格** - 支持自定义 AI 写作风格\n- [x] **数据导入导出** - 项目数据的导入导出\n- [x] **Prompt 调整界面** - 可视化编辑 Prompt 模板\n- [x] **章节字数限制** - 用户可设置生成字数\n- [x] **思维链与章节关系图谱** - 可视化章节逻辑关系\n- [x] **根据分析一键重写** - 根据分析建议重新生成\n- [x] **Linux DO 自动创建账号** - OAuth 登录自动生成账号\n- [x] **职业等级体系** - 自定义职业和等级系统，支持修仙境界、魔法等级等多种体系\n- [x] **角色\u002F组织卡片导入导出** - 单独导出角色和组织卡片，支持跨项目数据共享\n- [x] **伏笔管理** - 智能追踪剧情伏笔，提醒未回收线索，可视化伏笔时间线\n- [x] **提示词工坊** - 社区驱动的 Prompt 模板分享平台，一键导入优质提示词\n- [x] **拆书功能** - 目前呼声比较高的功能，一键拆书，给当年的ta一个圆满的结局\n\n### 📝 规划中功能\n\n......\n\n> 💡 欢迎提交 Issue 或 Pull Request！\n\n## 💻 硬件配置要求\n\n### 最低配置（个人使用\u002F开发环境）\n\n| 组件 | 要求 |\n|------|------|\n| **CPU** | 2 核 |\n| **内存** | 2 GB RAM |\n| **存储** | 10 GB 可用空间 |\n| **网络** | 稳定互联网连接（用于调用 AI API） |\n\n### 推荐配置（小型团队\u002F生产环境）\n\n| 组件 | 要求 |\n|------|------|\n| **CPU** | 4 核 |\n| **内存** | 8 GB RAM |\n| **存储** | 20 GB SSD |\n| **网络** | 稳定互联网连接 |\n\n### 高并发配置（80-150 用户）\n\n| 组件 | 要求 |\n|------|------|\n| **CPU** | 8 核 |\n| **内存** | 16 GB RAM |\n| **存储** | 50 GB+ SSD |\n| **网络** | 高带宽连接 |\n\n> **📌 说明**\n> - **Embedding 模型**：约 400 MB 磁盘空间，运行时加载到内存\n> - **PostgreSQL**：默认配置使用 256 MB shared_buffers，1 GB effective_cache_size\n> - **Docker 部署**：建议预留额外 1-2 GB 内存给容器运行时\n> - 本项目主要依赖外部 AI API（OpenAI\u002FClaude\u002FGemini），不需要本地 GPU\n\n## 🚀 快速开始\n\n### 前置要求\n\n- Docker 和 Docker Compose\n- 至少一个 AI 服务的 API Key（OpenAI\u002FGemini\u002FClaude）\n\n### Docker Compose 部署（推荐）\n\n```bash\n# 1. 克隆项目\ngit clone https:\u002F\u002Fgithub.com\u002Fxiamuceer-j\u002FMuMuAINovel.git\ncd MuMuAINovel\n\n# 2. 配置环境变量（必需）\ncp backend\u002F.env.example .env\n# 编辑 .env 文件，填入必要配置（API Key、数据库密码等）\n\n# 3. 确保文件准备完整\n# ⚠️ 重要：确保以下文件存在\n# - .env（配置文件，必需挂载到容器）\n# - backend\u002Fscripts\u002Finit_postgres.sql（数据库初始化脚本）\n\n# 4. 启动服务\ndocker-compose up -d\n\n# 5. 访问应用\n# 打开浏览器访问 http:\u002F\u002Flocalhost:8000\n```\n\n> **📌 注意事项**\n>\n> 1. **`.env` 文件挂载**: `docker-compose.yml` 会自动将 `.env` 挂载到容器，确保文件存在\n> 2. **数据库初始化**: `init_postgres.sql` 会在首次启动时自动执行，安装必要的PostgreSQL扩展\n> 3. **自行构建**: 如需从源码构建，请先下载 embedding 模型文件（[加群获取](frontend\u002Fpublic\u002Fqq.jpg)）\n\n### 使用 Docker Hub 镜像（推荐新手）\n\n```bash\n# 1. 拉取最新镜像（已包含模型文件）\ndocker pull mumujie\u002Fmumuainovel:latest\n\n# 2. 创建 docker-compose.yml（点击下方展开查看完整配置）\n```\n\n\u003Cdetails>\n\u003Csummary>📄 点击展开 docker-compose.yml 完整配置\u003C\u002Fsummary>\n\n```yaml\nservices:\n  postgres:\n    image: postgres:18-alpine\n    container_name: mumuainovel-postgres\n    environment:\n      POSTGRES_DB: ${POSTGRES_DB:-mumuai_novel}\n      POSTGRES_USER: ${POSTGRES_USER:-mumuai}\n      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-123456}\n      POSTGRES_INITDB_ARGS: \"--encoding=UTF8 --locale=C\"\n      TZ: ${TZ:-Asia\u002FShanghai}\n    volumes:\n      - postgres_data:\u002Fvar\u002Flib\u002Fpostgresql\n      - .\u002Fbackend\u002Fscripts\u002Finit_postgres.sql:\u002Fdocker-entrypoint-initdb.d\u002Finit.sql:ro\n    ports:\n      - \"${POSTGRES_PORT:-5432}:5432\"\n    restart: unless-stopped\n    healthcheck:\n      test: [\"CMD-SHELL\", \"pg_isready -U ${POSTGRES_USER:-mumuai} -d ${POSTGRES_DB:-mumuai_novel}\"]\n      interval: 10s\n      timeout: 5s\n      retries: 5\n      start_period: 10s\n    networks:\n      - ai-story-network\n    command:\n      - postgres\n      - -c\n      - max_connections=${POSTGRES_MAX_CONNECTIONS:-200}\n      - -c\n      - shared_buffers=${POSTGRES_SHARED_BUFFERS:-256MB}\n      - -c\n      - effective_cache_size=${POSTGRES_EFFECTIVE_CACHE_SIZE:-1GB}\n      - -c\n      - maintenance_work_mem=${POSTGRES_MAINTENANCE_WORK_MEM:-64MB}\n      - -c\n      - checkpoint_completion_target=${POSTGRES_CHECKPOINT_COMPLETION_TARGET:-0.9}\n      - -c\n      - wal_buffers=${POSTGRES_WAL_BUFFERS:-16MB}\n      - -c\n      - default_statistics_target=${POSTGRES_DEFAULT_STATISTICS_TARGET:-100}\n      - -c\n      - random_page_cost=${POSTGRES_RANDOM_PAGE_COST:-1.1}\n      - -c\n      - effective_io_concurrency=${POSTGRES_EFFECTIVE_IO_CONCURRENCY:-200}\n      - -c\n      - work_mem=${POSTGRES_WORK_MEM:-4MB}\n      - -c\n      - min_wal_size=${POSTGRES_MIN_WAL_SIZE:-1GB}\n      - -c\n      - max_wal_size=${POSTGRES_MAX_WAL_SIZE:-4GB}\n\n  mumuainovel:\n    image: mumujie\u002Fmumuainovel:latest\n    container_name: mumuainovel\n    depends_on:\n      postgres:\n        condition: service_healthy\n    ports:\n      - \"${APP_PORT:-8000}:8000\"\n    volumes:\n      - .\u002Flogs:\u002Fapp\u002Flogs\n      - .\u002F.env:\u002Fapp\u002F.env:ro\n      - .\u002Fstorage\u002Fgenerated_covers:\u002Fapp\u002Fbackend\u002Fstorage\u002Fgenerated_covers\n    environment:\n      # 应用配置\n      - APP_NAME=${APP_NAME:-MuMuAINovel}\n      - APP_VERSION=${APP_VERSION:-1.0.0}\n      - APP_HOST=${APP_HOST:-0.0.0.0}\n      - APP_PORT=8000\n      - DEBUG=${DEBUG:-false}\n      # 数据库配置\n      - DATABASE_URL=postgresql+asyncpg:\u002F\u002F${POSTGRES_USER:-mumuai}:${POSTGRES_PASSWORD:-123456}@postgres:5432\u002F${POSTGRES_DB:-mumuai_novel}\n      - DB_HOST=postgres\n      - DB_PORT=5432\n      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-123456}\n      # PostgreSQL 连接池配置\n      - DATABASE_POOL_SIZE=${DATABASE_POOL_SIZE:-30}\n      - DATABASE_MAX_OVERFLOW=${DATABASE_MAX_OVERFLOW:-20}\n      - DATABASE_POOL_TIMEOUT=${DATABASE_POOL_TIMEOUT:-60}\n      - DATABASE_POOL_RECYCLE=${DATABASE_POOL_RECYCLE:-1800}\n      - DATABASE_POOL_PRE_PING=${DATABASE_POOL_PRE_PING:-True}\n      - DATABASE_POOL_USE_LIFO=${DATABASE_POOL_USE_LIFO:-True}\n      # 全局代理配置（可选）\n      - HTTP_PROXY=${HTTP_PROXY:-}\n      - HTTPS_PROXY=${HTTPS_PROXY:-}\n      - NO_PROXY=${NO_PROXY:-localhost,127.0.0.1}\n      # AI 服务配置\n      - OPENAI_API_KEY=${OPENAI_API_KEY:-}\n      - OPENAI_BASE_URL=${OPENAI_BASE_URL:-https:\u002F\u002Fapi.openai.com\u002Fv1}\n      - GEMINI_API_KEY=${GEMINI_API_KEY:-}\n      - GEMINI_BASE_URL=${GEMINI_BASE_URL:-}\n      - ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY:-}\n      - ANTHROPIC_BASE_URL=${ANTHROPIC_BASE_URL:-}\n      - DEFAULT_AI_PROVIDER=${DEFAULT_AI_PROVIDER:-openai}\n      - DEFAULT_MODEL=${DEFAULT_MODEL:-gpt-4o-mini}\n      - DEFAULT_TEMPERATURE=${DEFAULT_TEMPERATURE:-0.7}\n      - DEFAULT_MAX_TOKENS=${DEFAULT_MAX_TOKENS:-32000}\n      # LinuxDO OAuth 配置\n      - LINUXDO_CLIENT_ID=${LINUXDO_CLIENT_ID:-11111}\n      - LINUXDO_CLIENT_SECRET=${LINUXDO_CLIENT_SECRET:-11111}\n      - LINUXDO_REDIRECT_URI=${LINUXDO_REDIRECT_URI:-http:\u002F\u002Flocalhost:8000\u002Fapi\u002Fauth\u002Flinuxdo\u002Fcallback}\n      - LINUXDO_PROXY_URL=${LINUXDO_PROXY_URL:-}\n      - FRONTEND_URL=${FRONTEND_URL:-http:\u002F\u002Flocalhost:8000}\n      # 本地账户登录配置\n      - LOCAL_AUTH_ENABLED=${LOCAL_AUTH_ENABLED:-true}\n      - LOCAL_AUTH_USERNAME=${LOCAL_AUTH_USERNAME:-admin}\n      - LOCAL_AUTH_PASSWORD=${LOCAL_AUTH_PASSWORD:-admin123}\n      - LOCAL_AUTH_DISPLAY_NAME=${LOCAL_AUTH_DISPLAY_NAME:-本地管理员}\n      # 会话配置\n      - SESSION_EXPIRE_MINUTES=${SESSION_EXPIRE_MINUTES:-120}\n      - SESSION_REFRESH_THRESHOLD_MINUTES=${SESSION_REFRESH_THRESHOLD_MINUTES:-30}\n      - SESSION_COOKIE_SECURE=${SESSION_COOKIE_SECURE:-true}\n    restart: unless-stopped\n    healthcheck:\n      test: [\"CMD\", \"python\", \"-c\", \"import urllib.request; urllib.request.urlopen('http:\u002F\u002Flocalhost:8000\u002Fhealth')\"]\n      interval: 30s\n      timeout: 10s\n      retries: 3\n      start_period: 30s\n    networks:\n      - ai-story-network\n\nvolumes:\n  postgres_data:\n    driver: local\n\nnetworks:\n  ai-story-network:\n    driver: bridge\n```\n\n\u003C\u002Fdetails>\n\n```bash\n# 3. 启动服务\ndocker-compose up -d\n\n# 4. 查看日志\ndocker-compose logs -f\n\n# 5. 更新到最新版本\ndocker-compose pull\ndocker-compose up -d\n```\n\n> **💡 提示**: Docker Hub 镜像已包含所有依赖和模型文件，无需额外下载\n\n### 本地开发 \u002F 从源码构建\n\n#### 前置准备\n\n```bash\n# ⚠️ 重要：如果从源码构建，需要先下载 embedding 模型文件\n# 模型文件较大（约 400MB），需放置到以下目录：\n# backend\u002Fembedding\u002Fmodels--sentence-transformers--paraphrase-multilingual-MiniLM-L12-v2\u002F\n#\n# 📥 获取方式：\n# - 加入项目 QQ 群或 Linux DO 讨论区获取下载链接\n# - 群号：见项目主页\n# - Linux DO：https:\u002F\u002Flinux.do\u002Ft\u002Ftopic\u002F1100112\n```\n\n#### 后端\n\n```bash\ncd backend\npython -m venv .venv\nsource .venv\u002Fbin\u002Factivate  # Windows: .venv\\Scripts\\activate\npip install -r requirements.txt\n\n# 配置 .env 文件\ncp .env.example .env\n# 编辑 .env 填入必要配置\n\n# 启动 PostgreSQL（可使用 Docker）\ndocker run -d --name postgres \\\n  -e POSTGRES_PASSWORD=your_password \\\n  -e POSTGRES_DB=mumuai_novel \\\n  -p 5432:5432 \\\n  postgres:18-alpine\n\n# 启动后端\npython -m uvicorn app.main:app --host localhost --port 8000 --reload\n```\n\n#### 前端\n\n```bash\ncd frontend\nnpm install\nnpm run dev  # 开发模式\nnpm run build  # 生产构建\n```\n\n## ⚙️ 配置说明\n\n### 必需配置\n\n创建 `.env` 文件：\n\n```bash\n# PostgreSQL 数据库（必需）\nDATABASE_URL=postgresql+asyncpg:\u002F\u002Fmumuai:your_password@postgres:5432\u002Fmumuai_novel\nPOSTGRES_PASSWORD=your_secure_password\n\n# AI 服务\nOPENAI_API_KEY=your_openai_key\nOPENAI_BASE_URL=https:\u002F\u002Fapi.openai.com\u002Fv1\nDEFAULT_AI_PROVIDER=openai\nDEFAULT_MODEL=gpt-4o-mini\n\n# 本地账户登录\nLOCAL_AUTH_ENABLED=true\nLOCAL_AUTH_USERNAME=admin\nLOCAL_AUTH_PASSWORD=your_password\n```\n\n### 可选配置\n\n```bash\n# LinuxDO OAuth\nLINUXDO_CLIENT_ID=your_client_id\nLINUXDO_CLIENT_SECRET=your_client_secret\nLINUXDO_REDIRECT_URI=http:\u002F\u002Flocalhost:8000\u002Fapi\u002Fauth\u002Fcallback\n# LinuxDO 登录专用代理（可选，仅影响 OAuth token 与用户信息请求）\nLINUXDO_PROXY_URL=http:\u002F\u002F127.0.0.1:7890\n\n# PostgreSQL 连接池（高并发优化）\nDATABASE_POOL_SIZE=30\nDATABASE_MAX_OVERFLOW=20\n\n# 会话 Cookie Secure 标记\n# 默认 true，适合 HTTPS 部署；如果使用 HTTP 访问并且浏览器不保存登录 Cookie，可设为 false\nSESSION_COOKIE_SECURE=true\n```\n\n> **🔐 Cookie Secure 说明**\n>\n> - HTTPS 部署：建议保持 `SESSION_COOKIE_SECURE=true`，浏览器只会通过 HTTPS 发送登录 Cookie。\n> - HTTP 部署：如果登录后浏览器没有保存 Cookie，请在 `.env` 中设置 `SESSION_COOKIE_SECURE=false`，然后重启后端或 Docker 容器。\n> - Docker Compose 示例默认使用 `SESSION_COOKIE_SECURE=${SESSION_COOKIE_SECURE:-true}`，如需关闭必须在 `.env` 中显式配置。\n>\n> **🌐 LinuxDO 专用代理说明**\n>\n> - 如果只有 LinuxDO 授权登录在当前网络不可达，优先配置 `LINUXDO_PROXY_URL`，不要配置全局 `HTTP_PROXY` \u002F `HTTPS_PROXY`。\n> - `LINUXDO_PROXY_URL` 只会用于 LinuxDO OAuth 的 token 交换和用户信息请求，不影响 AI 服务、SMTP、数据库等其他网络调用。\n> - 常见示例：`LINUXDO_PROXY_URL=http:\u002F\u002F127.0.0.1:7890`；Docker 容器内访问宿主机代理时通常需要使用宿主机在 Docker 网络中的地址，而不是容器内的 `127.0.0.1`。\n> - 当前示例按 HTTP 代理配置；如果需要 SOCKS 代理，请先确保运行环境安装了 httpx 的 SOCKS 支持依赖。\n\n### 中转 API 配置\n\n支持所有 OpenAI 兼容格式的中转服务：\n\n```bash\n# New API 示例\nOPENAI_API_KEY=sk-xxxxxxxx\nOPENAI_BASE_URL=https:\u002F\u002Fapi.new-api.com\u002Fv1\n\n# 其他中转服务\nOPENAI_BASE_URL=https:\u002F\u002Fyour-proxy-service.com\u002Fv1\n```\n\n## 🐳 Docker 部署详情\n\n### 服务架构\n\n- **postgres**: PostgreSQL 18 数据库\n  - 端口: 5432\n  - 数据持久化: `postgres_data` volume\n  - 初始化脚本: `backend\u002Fscripts\u002Finit_postgres.sql`（自动挂载）\n  - 优化配置: 支持 80-150 并发用户\n\n- **mumuainovel**: 主应用服务\n  - 端口: 8000\n  - 日志目录: `.\u002Flogs`\n  - 配置挂载: `.env` 文件\n  - 自动等待数据库就绪\n  - 健康检查: 每 30 秒检测一次\n\n### 重要文件说明\n\n| 文件 | 说明 | 是否必需 |\n|------|------|---------|\n| `.env` | 环境配置（API Key、数据库密码等） | ✅ 必需 |\n| `docker-compose.yml` | 服务编排配置 | ✅ 必需 |\n| `backend\u002Fscripts\u002Finit_postgres.sql` | PostgreSQL 扩展安装脚本 | ✅ 自动挂载 |\n| `backend\u002Fembedding\u002Fmodels--*\u002F` | Embedding 模型文件 | ⚠️ 自建需要 |\n\n> **注意**: 使用 Docker Hub 镜像时，模型文件已包含在镜像中，无需额外下载\n\n### 常用命令\n\n```bash\n# 启动服务\ndocker-compose up -d\n\n# 查看状态\ndocker-compose ps\n\n# 查看日志\ndocker-compose logs -f\n\n# 停止服务\ndocker-compose down\n\n# 重启服务\ndocker-compose restart\n\n# 查看资源使用\ndocker stats\n```\n\n### 数据持久化\n\n- `.\u002Fpostgres_data` - PostgreSQL 数据库文件\n- `.\u002Flogs` - 应用日志文件\n\n### 端口配置\n\n修改 `docker-compose.yml` 中的端口映射：\n\n```yaml\nports:\n  - \"8800:8000\"  # 宿主机:容器\n```\n\n## 📁 项目结构\n\n```\nMuMuAINovel\u002F\n├── backend\u002F                 # 后端服务\n│   ├── app\u002F\n│   │   ├── api\u002F            # API 路由\n│   │   ├── models\u002F         # 数据模型\n│   │   ├── services\u002F       # 业务逻辑\n│   │   ├── middleware\u002F     # 中间件\n│   │   ├── database.py     # 数据库连接\n│   │   └── main.py         # 应用入口\n│   ├── scripts\u002F            # 工具脚本\n│   └── requirements.txt    # Python 依赖\n├── frontend\u002F               # 前端应用\n│   ├── src\u002F\n│   │   ├── pages\u002F         # 页面组件\n│   │   ├── components\u002F    # 通用组件\n│   │   ├── services\u002F      # API 服务\n│   │   └── store\u002F         # 状态管理\n│   └── package.json\n├── docker-compose.yml      # Docker Compose 配置\n├── Dockerfile             # Docker 镜像构建\n└── README.md\n```\n\n## 🛠️ 技术栈\n\n**后端**: FastAPI • PostgreSQL • SQLAlchemy • OpenAI\u002FClaude\u002FGemini SDK\n\n**前端**: React 18 • TypeScript • Ant Design • Zustand • Vite\n\n## 📖 使用指南\n\n1. **登录系统** - 使用本地账户或 LinuxDO 账户\n2. **创建项目** - 选择\"使用向导创建\"\n3. **AI 生成** - 输入基本信息，AI 自动生成大纲和角色\n4. **编辑完善** - 管理角色关系，生成和编辑章节\n\n### API 文档\n\n- Swagger UI: `http:\u002F\u002Flocalhost:8000\u002Fdocs`\n- ReDoc: `http:\u002F\u002Flocalhost:8000\u002Fredoc`\n\n## 🤝 贡献\n\n欢迎提交 Issue 和 Pull Request！\n\n1. Fork 本项目\n2. 创建特性分支 (`git checkout -b feature\u002FAmazingFeature`)\n3. 提交更改 (`git commit -m 'Add some AmazingFeature'`)\n4. 推送到分支 (`git push origin feature\u002FAmazingFeature`)\n5. 提交 Pull Request\n\n### 贡献者\n\n感谢所有为本项目做出贡献的开发者！\n\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fxiamuceer-j\u002FMuMuAINovel\u002Fgraphs\u002Fcontributors\">\n  \u003Cimg src=\"https:\u002F\u002Fcontrib.rocks\u002Fimage?repo=xiamuceer-j\u002FMuMuAINovel\" \u002F>\n\u003C\u002Fa>\n\n## 📝 许可证\n\n本项目采用 [GNU General Public License v3.0](LICENSE)\n\n**GPL v3 意味着：**\n- ✅ 可自由使用、修改和分发\n- ✅ 可用于商业目的\n- 📝 必须开源修改版本\n- 📝 必须保留原作者版权\n- 📝 衍生作品必须使用 GPL v3 协议\n\n## 🙏 致谢\n\n- [FastAPI](https:\u002F\u002Ffastapi.tiangolo.com\u002F) - Python Web 框架\n- [React](https:\u002F\u002Freact.dev\u002F) - 前端框架\n- [Ant Design](https:\u002F\u002Fant.design\u002F) - UI 组件库\n- [PostgreSQL](https:\u002F\u002Fwww.postgresql.org\u002F) - 数据库\n\n## 📧 联系方式\n\n- 提交 [Issue](https:\u002F\u002Fgithub.com\u002Fxiamuceer-j\u002FMuMuAINovel\u002Fissues)\n- Linux DO [讨论](https:\u002F\u002Flinux.do\u002Ft\u002Ftopic\u002F1106333)\n- 加入QQ群 [QQ群](frontend\u002Fpublic\u002Fqq.jpg)\n- 加入WX群 [WX群](frontend\u002Fpublic\u002FWX.png)\n\n---\n\n\u003Cdiv align=\"center\">\n\n**如果这个项目对你有帮助，请给个 ⭐️ Star！**\n\nMade with ❤️\n\n\u003C\u002Fdiv>\n\n## Star History\n\n\u003Ca href=\"https:\u002F\u002Fwww.star-history.com\u002F#xiamuceer-j\u002FMuMuAINovel&type=date&legend=top-left\">\n \u003Cpicture>\n   \u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\"https:\u002F\u002Fapi.star-history.com\u002Fsvg?repos=xiamuceer-j\u002FMuMuAINovel&type=date&theme=dark&legend=top-left\" \u002F>\n   \u003Csource media=\"(prefers-color-scheme: light)\" srcset=\"https:\u002F\u002Fapi.star-history.com\u002Fsvg?repos=xiamuceer-j\u002FMuMuAINovel&type=date&legend=top-left\" \u002F>\n   \u003Cimg alt=\"Star History Chart\" src=\"https:\u002F\u002Fapi.star-history.com\u002Fsvg?repos=xiamuceer-j\u002FMuMuAINovel&type=date&legend=top-left\" \u002F>\n \u003C\u002Fpicture>\n\u003C\u002Fa>\n\n## History\n\n![Alt](https:\u002F\u002Frepobeats.axiom.co\u002Fapi\u002Fembed\u002Fee7141a5f269c64759302e067abe23b46796bafe.svg \"Repobeats analytics image\")\n","MuMuAINovel 是一款基于 AI 的智能小说创作助手，旨在帮助用户轻松创作精彩故事。该项目采用 Python 编写，集成了 FastAPI 和 React 技术栈，支持 OpenAI、Gemini、Claude 等多种主流 AI 模型。其核心功能包括智能向导生成大纲与角色设定、章节编辑、世界观构建以及多用户数据隔离等。此外，项目还提供了 Docker 一键部署方案，便于快速启动。适用于个人创作者、小型团队乃至有一定规模的写作社群使用，在降低创作门槛的同时提升了故事创作的质量与效率。",2,"2026-06-11 03:42:19","high_star"]