基于 Flutter (Web) + Spring Boot 的专业AI小说创作平台,集成先进AI模型,提供从内容创作、世界观构建到平台运维的完整工具链。
马良AI写作是一个专为小说作者与平台运营者设计的智能化创作平台。它结合了强大的AI模型(支持OpenAI, Gemini, Anthropic等)与专业的在线富文本编辑器,旨在帮助作者激发灵感、提高写作效率、管理创作内容,同时为平台管理员提供了强大的后台管理与监控功能。
官网地址AINoval








🤖 沉浸式AI创作引擎:
GPT, Claude, Gemini, OpenRouter 等)。🌍 系统化世界观构建:
🔧 灵活的模型与提示词管理:
📊 强大的管理与可观测性后台:
作品 -> 卷 -> 章节 -> 场景 的四级结构,清晰管理长篇内容。Flutter Quill,支持上千章节连续滚动,提供稳定流畅的写作体验,支持丰富的格式选项。txt 导入,智能解析目录结构,并在导入的过程,有后台大模型快速生成每章大纲,快速迁移现有作品。
fl_chart 图表库,展示每日/每月的Token使用趋势。管理员后台是一个独立的 Flutter Web 应用(入口 lib/admin_main.dart),通过 AdminDashboardScreen 将各个管理模块整合在同一个侧边导航中,主要包括:
系统仪表盘 (AdminOverviewScreen): 汇总用户数、调用量、Token 消耗等指标,并通过图表组件 UserActivityChart、ModelUsageChart 展示用户活跃度与模型占比趋势。
用户管理 (UserManagementScreen + UserManagementTable):
CreditOperationDialog)、导出用户数据为 CSV 等操作。角色与权限 (RBAC) (RoleManagementScreen): 通过 RoleManagementTable 管理角色列表,支持查看角色权限、启用 / 禁用角色等,为前台和后台功能做精细化授权。
公共模型管理 (PublicModelManagementScreen):
PublicModelProviderGroupCard),例如 Gemini / OpenAI 等。jsonify / cheap / fast)为后端路由策略提供信号。
模型定价与计费审计 (ModelPricingManagementScreen, BillingAuditScreen):
BillingRepositoryImpl,可以结合 LLM 调用日志做成本核算与审计。LLM 可观测性 (LLMObservabilityScreen):
LLMObservabilityRepositoryImpl 拉取调用日志,支持按用户、提供商、模型、业务类型、TraceId / CorrelationId、时间范围、是否出错等多维过滤。MultiSeriesLineChart)帮助分析流量与异常。
订阅与积分管理 (SubscriptionManagementScreen): 结合 SubscriptionBloc 和后台订阅仓库管理订阅计划、用户订阅状态以及赠送积分。
模板与预设管理 (SystemPresetsManagementScreen, PublicTemplatesManagementScreen, EnhancedTemplatesManagementScreen): 管理系统级提示词预设、公共模板和增强模板,并为创作端的 AI 工具栏提供统一的策略来源。
知识库拆书任务 & 内容审核 (KnowledgeExtractionTaskManagementPage, ContentReviewScreen): 管理 AI 拆书任务进度与结果,对用户提交的公开内容进行人工或 AI 辅助审核。
马良AI写作集成了先进的剧情推演引擎和知识库拆书功能,为作者提供从学习成功案例到创意生成的完整闭环。
剧情推演是一个强大的AI辅助剧情构思工具,根据当前写作上下文智能生成多个后续剧情走向:


知识库拆书功能通过AI深度分析优秀小说作品,提取可复用的创作知识,帮助作者学习成功作品的叙事技巧和创作模式:
多维度知识提取: 从小说文本中智能提取多个维度的创作知识,包括:
番茄小说直连拆书: 集成第三方 「番茄小说拆书服务」,只需提供小说URL即可自动抓取全文并进行AI分析,快速构建专属知识库。该功能依赖外部服务接口进行小说内容获取与预处理。
自定义文本拆书: 支持用户上传或导入自己的小说文本,由AI进行多维度分析与知识提取,适用于学习任意小说作品的创作技巧。
分组批量任务: 可同时提取多个知识维度,后台异步处理,任务完成后自动保存到个人知识库中。
管理后台监控: 管理员可通过后台监控所有拆书任务的执行状态、进度、失败重试等,支持任务级和子任务级的精细管理。

外部服务说明:番茄小说拆书功能需要对接第三方小说内容获取服务。该服务负责从番茄小说平台爬取小说内容并返回给本系统进行AI分析。部署时需配置相应的服务地址和访问权限。
前端 (AINoval)
| 类型 | 技术 |
|---|---|
| 框架 | Flutter |
| 状态管理 | flutter_bloc, Provider |
| UI组件 | Flutter Quill (富文本编辑器), fl_chart (图表) |
| 本地存储 | Hive, shared_preferences |
| 网络 | Dio, flutter_client_sse (Server-Sent Events) |
| 工具 | file_picker, share_plus, fluttertoast |
后端 (AINovalServer)
| 类型 | 技术 |
|---|---|
| 框架 | Spring Boot 3 (WebFlux 响应式编程) |
| 语言 | Java 21 |
| AI框架 | LangChain4j |
| 数据库 | MongoDB (Reactive) |
| 向量数据库 | Chroma |
| 认证 | Spring Security + JWT |
| 云服务 | 阿里云 OSS & SMS |
| 异步任务 | RabbitMQ |
本指南面向开源用户,提供无需自行构建前端与后端的简易部署方案:一个镜像同时打包后端 JAR 与已编译的 Web 静态文件,配合 docker-compose 可一键启动,并内置可选的 MongoDB 服务。
deploy/ ├─ dist/ │ ├─ ainoval-server.jar # 预编译后端 │ └─ web/ # 预编译前端静态文件 ├─ open/ │ ├─ README.md # 本指南 │ ├─ Dockerfile # 开源镜像 Dockerfile │ ├─ docker-compose.yml # 开源 docker-compose │ ├─ production.env.example # 环境变量示例 │ └─ production.env # 实际运行环境变量
在 Windows 上,我们强烈建议通过 WSL2 (Windows Subsystem for Linux 2) 来运行 Docker 环境,以获得最佳的性能和兼容性。
安装 WSL2:
wsl --install
安装 Docker Desktop:
验证安装:
docker --version 和 docker compose version。如果能看到版本号,说明安装成功。在 Linux 系统上,您需要安装 Docker Engine 和 Docker Compose 插件。
对于 Ubuntu/Debian 系统:
安装 Docker Engine:
# 更新软件包列表
sudo apt-get update
# 安装必要的依赖
sudo apt-get install -y ca-certificates curl gnupg
# 添加 Docker 的官方 GPG 密钥
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# 设置 Docker 仓库
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 安装 Docker Engine
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin
安装 Docker Compose:
sudo apt-get install docker-compose-plugin -y
docker 组 (可选,但推荐):
这样可以避免每次都使用 sudo。
sudo usermod -aG docker $USER
# 重新登录或重启终端以使更改生效
newgrp docker
对于 CentOS/Fedora/RHEL 系统:
yum-utils:
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin
sudo systemctl start docker
sudo systemctl enable docker
sudo dnf install docker-compose-plugin -y
准备环境变量
deploy/open/production.env.example 到 deploy/open/production.env。构建镜像 在仓库根目录执行:
docker compose -f deploy/open/docker-compose.yml build
docker compose -f deploy/open/docker-compose.yml up -d
启动后访问:`http://localhost:18080/`
4. 初始化管理员账号 ⚠️ 重要步骤 服务启动后,需要运行初始化脚本创建管理员账号:
**Windows 用户:** ```powershell # 在项目根目录执行 .\deploy\init-admin.bat ``` **Linux/Mac 用户:** ```bash # 在项目根目录执行 chmod +x deploy/init-admin.sh ./deploy/init-admin.sh ``` 脚本会自动完成以下操作: - 创建用户名为 `admin` 的管理员账号 - 设置初始密码为 `123456` - 分配管理员权限 (ROLE_ADMIN) - 赠送 999999 初始积分 **管理后台登录:** - 地址:`http://localhost:18080/admin` - 用户名:`admin` - 密码:`123456` > ⚠️ **安全提示**:请在首次登录后立即修改默认密码!
SERVER_PORT, JVM_XMS, JVM_XMXSPRING_DATA_MONGODB_URI(默认 mongodb://mongo:27017/ainovel)VECTORSTORE_CHROMA_ENABLED, CHROMA_URLJWT_SECRET(务必改成强随机值)STORAGE_PROVIDER(local/alioss…)OPENAI_API_KEY, GEMINI_API_KEY, ANTHROPIC_API_KEY 等注意:
production.env.example仅用于演示,生产环境请务必替换为你自己的安全值。
docker compose -f deploy/open/docker-compose.yml logs -f ainoval
docker compose -f deploy/open/docker-compose.yml restart ainoval
docker compose -f deploy/open/docker-compose.yml down
现象:
[+] Running 5/5
✔ Network open_default Created
✔ Volume "open_mongo-config" Created
✔ Volume "open_mongo-data" Created
✘ Container ainoval-mongo Error
✔ Container ainoval-server Created
dependency failed to start: container ainoval-mongo is unhealthy
原因:
MongoDB 首次启动时需要初始化副本集,健康检查可能超时。这是 正常现象!
解决方法:
等待 10-20 秒后,手动启动 ainoval-server 容器:
# 方法1:直接启动 server 容器
docker start ainoval-server
# 方法2:重新执行 docker-compose
docker compose -f deploy/open/docker-compose.yml up -d
查看容器状态:
docker ps
# 应该看到 ainoval-mongo (healthy) 和 ainoval-server (Up)
现象: 访问 http://localhost:18080/admin 提示 401 或 404
解决方法:
docker psdocker compose -f deploy/open/docker-compose.yml logs -f ainoval我们欢迎所有形式的贡献!无论是提交 Issue、修复 Bug 还是贡献新功能。
git checkout -b feature/AmazingFeature)git commit -m 'Add some AmazingFeature')git push origin feature/AmazingFeature)
本项目基于 Apache License 2.0 协议开源。