Files
MuMuAINovel/README.md
T
2026-05-18 14:31:54 +08:00

318 lines
11 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 墨木灵思
![Version](https://img.shields.io/badge/version-1.4.8-blue.svg)
![Python](https://img.shields.io/badge/python-3.11-blue.svg)
![FastAPI](https://img.shields.io/badge/FastAPI-0.121.0-green.svg)
![React](https://img.shields.io/badge/react-18.3.1-blue.svg)
## 1. 项目简介
### 项目概述
**墨木灵思**是一款基于大语言模型的智能小说创作平台,帮助作者从大纲、角色到章节一气呵成地完成创作,让 AI 成为可靠的写作搭档。
### 项目起源
长篇网文与原创小说创作往往面临设定繁杂、人物关系难梳理、章节衔接不连贯等问题。墨木灵思将 AI 能力融入创作全流程,把「灵感 → 大纲 → 角色 → 章节」串联为可管理的结构化工作流,降低创作门槛并提升产出效率。
### 项目定位
| 维度 | 说明 |
|------|------|
| **目标用户** | 网文作者、业余写作者、内容创作者、文学爱好者 |
| **适用场景** | 长篇连载、短篇创作、世界观搭建、同人续写、拆书仿写 |
| **部署形态** | 支持 Docker 一键部署,也可本地开发运行 |
### 核心价值
- 用 AI 辅助完成大纲、角色、世界观等前期设定,缩短冷启动时间
- 多模型灵活切换,适配不同文风与成本需求
- 角色关系、伏笔、职业体系等结构化管理能力,保持长篇一致性
- 多用户数据隔离,适合个人或小团队私有化部署
---
## 2. 整体架构与技术栈
### 系统架构
采用**前后端分离**架构:React 单页应用负责交互,FastAPI 提供 REST APIPostgreSQL 持久化业务数据;生产环境通过 Docker Compose 编排应用与数据库,前端构建产物由后端静态托管,统一对外暴露 HTTP 服务。
```mermaid
flowchart LR
subgraph Client
UI[React SPA]
end
subgraph Server
API[FastAPI]
AI[AI 服务层]
DB[(PostgreSQL)]
Vec[ChromaDB / Embedding]
end
UI -->|HTTP / API| API
API --> AI
API --> DB
API --> Vec
AI -->|OpenAI 兼容 API| Ext[外部 LLM]
```
### 技术栈
| 分类 | 技术 | 版本 / 说明 |
|------|------|-------------|
| **后端** | Python | 3.11 |
| | FastAPI | 0.121.0 |
| | SQLAlchemy + Alembic | 2.0.25 / 1.14.0 |
| | Uvicorn | 0.38.0 |
| **前端** | React | 18.3.1 |
| | TypeScript + Vite | — |
| | Ant Design | 5.x |
| | Zustand | 5.x |
| **数据库** | PostgreSQL | 18(推荐) |
| | SQLite | 可选(开发 / 轻量场景) |
| **AI 与向量** | OpenAI / Anthropic SDK | 多模型接入 |
| | ChromaDB + Sentence Transformers | 长期记忆与语义检索 |
| **部署** | Docker + Docker Compose | 一键编排 |
| | GitHub Actions | 镜像构建与发布 |
### 技术选型说明
- **FastAPI**:异步性能好,自带 OpenAPI 文档,适合 AI 类长耗时接口。
- **PostgreSQL**:支持多用户、复杂关系与并发,满足生产级数据隔离。
- **React + Ant Design**:组件丰富,适合复杂表单与可视化(关系图、时间线等)。
- **Docker Compose**:降低部署成本,数据库与应用一键拉起。
---
## 3. 项目目录概览
```
MuMuAINovel/
├── backend/ # 后端服务
│ ├── app/
│ │ ├── api/ # REST API 路由
│ │ ├── models/ # 数据模型
│ │ ├── services/ # 业务逻辑(含 AI 调用)
│ │ ├── middleware/ # 中间件
│ │ ├── mcp/ # MCP 插件集成
│ │ └── main.py # 应用入口
│ ├── alembic/ # 数据库迁移
│ ├── scripts/ # 初始化与运维脚本
│ ├── static/ # 前端构建产物(生产)
│ └── requirements.txt
├── frontend/ # 前端应用
│ ├── src/
│ │ ├── pages/ # 页面
│ │ ├── components/ # 通用组件
│ │ ├── services/ # API 封装
│ │ ├── store/ # 状态管理
│ │ └── theme/ # 主题配置
│ └── package.json
├── images/ # 文档与截图资源
├── storage/ # 用户生成资源(如封面)
├── logs/ # 运行日志
├── docker-compose.yml # 容器编排
├── Dockerfile # 镜像构建
└── README.md
```
| 目录 | 作用 |
|------|------|
| `backend/app/api/` | 项目、章节、角色、提示词等业务接口 |
| `backend/app/services/` | AI 生成、润色、向量记忆等核心逻辑 |
| `frontend/src/pages/` | 书架、项目详情、设置、提示词模板等页面 |
| `backend/alembic/` | PostgreSQL / SQLite schema 迁移 |
| `backend/scripts/` | 数据库初始化、入口脚本 |
---
## 4. 核心业务功能
- **智能创作向导**:根据题材与设定,AI 自动生成大纲、角色档案与世界观框架。
- **多 AI 模型支持**:接入 OpenAI、Claude、Gemini 等,支持自定义 Base URL(兼容中转 API)。
- **项目管理与书架**:多项目并行,支持导入导出,便于备份与迁移。
- **角色与组织管理**:人物卡片、关系图谱、组织架构可视化编辑。
- **职业等级体系**:可自定义修仙境界、魔法等级等成长体系。
- **章节创作与润色**:章节生成、续写、重写、字数控制及 diff 对比。
- **世界观与大纲**:结构化维护故事背景与情节脉络。
- **伏笔管理**:追踪未回收伏笔,可视化时间线提醒。
- **灵感模式**:快速生成创作点子与情节灵感。
- **提示词工坊**:浏览、导入社区 Prompt 模板,可视化编辑自有模板。
- **拆书功能**:分析既有作品结构,辅助仿写与续写。
- **封面生成**:基于项目信息 AI 生成封面图。
- **长期记忆**:基于 Embedding 的语义记忆,保持跨章节一致性。
- **用户与认证**:本地账户、邮箱验证、LinuxDO OAuth;多用户数据隔离。
- **系统设置**:SMTP、AI 密钥、主题等可在线配置。
---
## 5. 实际应用场景示例
### 适用行业与领域
- 网络文学与自媒体连载
- 游戏、动漫、影视衍生文案
- 教育培训中的创意写作练习
- 个人 IP 与世界观孵化
### 典型场景
**场景一:新人作者快速开书**
输入题材与基调后,由向导生成大纲与主要角色,再逐章扩写;适合从零起步、需要结构指引的作者。
**场景二:长篇连载一致性维护**
在数百章规模下,通过角色关系图、伏笔管理与向量记忆,减少人设崩坏与情节穿帮。
**场景三:拆书仿写与风格学习**
导入参考作品或章节,分析结构后结合自身设定续写,用于练笔或同人向创作。
---
## 6. 帮助解决的核心问题
- **创作冷启动难**:自动生成大纲、角色与世界观,减少空白页焦虑。
- **设定易混乱**:关系图、职业体系、伏笔追踪让长篇设定可检索、可维护。
- **AI 调用分散**:统一配置多模型与 Prompt,降低切换成本。
- **协作与部署复杂**:Docker 私有化部署,数据留在自有环境。
- **章节质量不稳定**:润色、重写、分析建议一键应用,提升成稿效率。
- **提示词难以沉淀**:模板工坊与可视化编辑,复用优质 Prompt。
---
## 7. 快速开始
### 环境要求
| 方式 | 要求 |
|------|------|
| **Docker 部署(推荐)** | Docker 20.10+、Docker Compose 2.0+;至少一个 LLM API Key |
| **本地开发** | Python 3.11、Node.js 18+、PostgreSQL 18(或 SQLite);稳定网络(调用外部 AI API) |
**硬件建议(个人使用)**2 核 CPU、2 GB 内存、10 GB 磁盘;生产或小团队建议 4 核 / 8 GB 内存。项目依赖外部 AI API,无需本地 GPU。
### 安装步骤(Docker
```bash
# 1. 获取项目代码
git clone <你的仓库地址>
cd MuMuAINovel
# 2. 配置环境变量
cp backend/.env.example .env
# 编辑 .env:至少配置 AI API Key、数据库密码等
# 3. 确认必要文件存在
# - .env
# - backend/scripts/init_postgres.sql
```
### 运行步骤
```bash
# 启动全部服务
docker compose up -d
# 查看状态与日志
docker compose ps
docker compose logs -f
```
### 访问地址
| 服务 | 默认地址 |
|------|----------|
| **Web 应用** | http://localhost:8000 |
| **API 文档(Swagger** | http://localhost:8000/docs |
| **API 文档(ReDoc** | http://localhost:8000/redoc |
| **PostgreSQL** | localhost:5432(容器内通过服务名 `postgres` 访问) |
> 若修改 `.env` 中 `APP_PORT`(例如 `10003`),访问地址为 `http://localhost:10003`。
### 默认账号
`.env` 中启用本地登录时,默认配置示例:
| 项 | 默认值 |
|----|--------|
| 用户名 | `admin` |
| 密码 | `admin123` |
**请在生产环境中立即修改默认密码。**
### 本地开发(可选)
**后端**
```bash
cd backend
python -m venv .venv
# Windows: .venv\Scripts\activate
# Linux/macOS: source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env
# 配置 DATABASE_URL 与 AI Key 后启动
python -m uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload
```
**前端**
```bash
cd frontend
npm install
npm run dev
```
生产构建:`npm run build`,产物由后端 `backend/static` 托管。
### 必需配置示例
```bash
# 数据库(Docker 场景由 compose 注入,本地需自行填写)
POSTGRES_PASSWORD=your_secure_password
# AI 服务(至少配置一项)
OPENAI_API_KEY=your_key
OPENAI_BASE_URL=https://api.openai.com/v1
DEFAULT_AI_PROVIDER=openai
DEFAULT_MODEL=gpt-4o-mini
# 本地登录
LOCAL_AUTH_ENABLED=true
LOCAL_AUTH_USERNAME=admin
LOCAL_AUTH_PASSWORD=your_password
```
### 常见问题
| 问题 | 解决方案 |
|------|----------|
| 启动后无法访问 | 检查 `APP_PORT` 映射与防火墙;`docker compose ps` 确认容器健康 |
| 登录后 Cookie 未保存 | HTTP 部署时将 `SESSION_COOKIE_SECURE=false` 写入 `.env` 并重启 |
| AI 调用失败 | 核对 API Key、Base URL 及网络代理(`HTTP_PROXY` / `HTTPS_PROXY` |
| 数据库连接失败 | 确认 PostgreSQL 容器已 healthy;检查 `DATABASE_URL` 用户名密码 |
| 自建镜像缺少 Embedding | 使用官方镜像或按文档将模型放入 `backend/embedding/` 目录 |
---
## 8. 运行示例截图
![image-20260518142402652](images/image-20260518142402652.png)
![image-20260518142411086](images/image-20260518142411086.png)
![image-20260518142620791](images/image-20260518142620791.png)
![image-20260518142641345](images/image-20260518142641345.png)
![image-20260518143108652](images/image-20260518143108652.png)
![image-20260518143113951](images/image-20260518143113951.png)
![image-20260518143117651](images/image-20260518143117651.png)
![image-20260518143121175](images/image-20260518143121175.png)
![image-20260518143125197](images/image-20260518143125197.png)
![image-20260518143134898](images/image-20260518143134898.png)