Skip to content

mumu-0922/GankAIGC

Repository files navigation

GankAIGC Logo

GankAIGC

论文降 AI、学术润色与原创性表达增强工具

Python FastAPI React PostgreSQL Docker Release License


✨ 项目简介

GankAIGC 是一个面向论文文本的降 AI 与学术润色工具,采用 FastAPI + React/Vite + PostgreSQL 架构,支持源码运行、Docker 部署和 Windows 一键整合包。


🧪 降 AI 效果展示

以下来自朱雀 AI 检测,用于展示中文与英文文本处理前后的检测变化;实际效果会受原文质量、模型配置和处理模式影响。

中文文本

降 AI 前 降 AI 后
中文文本降 AI 前朱雀 AI 检测截图 中文文本降 AI 后朱雀 AI 检测截图

英文文本

降 AI 前 降 AI 后
英文文本降 AI 前朱雀 AI 检测截图 英文文本降 AI 后朱雀 AI 检测截图

🧩 核心功能

功能 说明
📝 论文降 AI 支持论文润色、原创性增强、润色 + 增强、感情文章润色等模式
👤 账号体系 用户通过邀请码注册,登录后进入工作台,可修改昵称和查看个人信息
📨 邀请机制 管理员可创建或批量生成邀请码,支持复制和导出;普通用户只能生成 1 个自己的邀请码
🍺 啤酒额度 用户使用兑换码充值啤酒;平台模式按字符折算啤酒;管理员可批量生成、复制和导出兑换码
🔑 自带 API 用户可保存自己的 OpenAI 兼容接口配置,使用 BYOK 模式处理任务
📚 论文项目 支持按论文项目归档任务,查看历史会话、分段结果和改写记录
📦 结果导出 支持导出 Word .docx 和 Markdown .md
📢 后台公告 管理员可发布维护通知、模型切换通知和使用说明,用户工作台实时展示
🖥 Windows 包 Release 提供一键整合包,内置便携 PostgreSQL,解压后双击 start.bat
🛠 管理后台 数据面板、会话监控、用户管理、兑换码、封禁/解封、操作日志、系统配置

🏗 技术栈

  • 后端:FastAPI、SQLAlchemy、Alembic、PostgreSQL、JWT、OpenAI Python SDK
  • 前端:React 18、Vite、Tailwind CSS、React Router、Axios、Lucide React
  • 任务处理:PostgreSQL 队列;Docker 部署使用独立 worker
  • 部署:Docker Compose + PostgreSQL;Windows 一键包内置便携 PostgreSQL
  • 打包:PyInstaller、build-oneclick.ps1

📁 项目结构

GankAIGC/
├── package/
│   ├── main.py                  # 一体化启动入口,提供 API 与前端静态页面
│   ├── backend/
│   │   ├── app/routes/          # auth、user、admin、optimization 等 API
│   │   ├── app/services/        # AI 调用、啤酒、配置、任务队列等业务逻辑
│   │   ├── app/models/          # SQLAlchemy 数据模型
│   │   ├── migrations/          # Alembic 数据库迁移
│   │   └── tests/               # pytest 测试
│   ├── frontend/
│   │   ├── src/pages/           # 页面
│   │   ├── src/components/      # 组件
│   │   └── src/api/             # 前端 API 封装
│   ├── static/                  # 前端生产构建产物
│   ├── requirements.txt
│   ├── build.ps1                # Windows 普通 exe 构建脚本
│   ├── build-oneclick.ps1       # Windows 一键整合包构建脚本
│   ├── windows-oneclick/        # 一键包 start/stop/env 模板
│   └── build.sh                 # Linux/macOS 普通可执行文件构建脚本
├── docker-compose.yml
├── docker-compose.local.yml     # 本地暴露 PostgreSQL 5432 的附加配置
├── Dockerfile
├── scripts/                     # 启动诊断、PostgreSQL 备份/恢复脚本
├── docs/                        # 部署、运维、维护清单和 README 图片资源
└── .env.docker.example          # Docker 环境变量模板,不是真实密钥

🚀 运行与部署

按使用场景选择一种方式:

方式 适合场景 一句话说明
python main.py 源码运行 本机开发、调试、个人使用 需要 Python 和 PostgreSQL,可用 Docker 只启动数据库
Docker Compose 部署 本机 Docker、VPS、正式上线 一次启动 Web、worker、PostgreSQL 和自动备份
Windows 一键整合包 Windows 新手直接使用 Release 下载后解压,双击 start.bat,内置便携 PostgreSQL
云端网站运行 不想自行部署、直接体验 访问云端网站,邀请码进群获得

Windows 用户如果只想直接使用,优先下载:

https://github.com/mumu-0922/GankAIGC/releases/latest

通用访问地址:

1. 源码运行:python main.py

这种方式需要 Python + PostgreSQL。如果不想手动安装 PostgreSQL,推荐用 Docker 只启动数据库,项目本体仍用 python main.py 跑。

1)拉取项目

Windows / Linux 都一样:

git clone https://github.com/mumu-0922/GankAIGC.git
cd GankAIGC

2)准备 PostgreSQL 数据库(推荐 Docker 方式)

Windows PowerShell:

Copy-Item .env.docker.example .env.docker
notepad .env.docker

Linux:

cp .env.docker.example .env.docker
nano .env.docker

.env.docker 里至少修改数据库密码:

POSTGRES_PASSWORD=换成你自己的数据库密码

然后只启动 PostgreSQL:

docker compose --env-file .env.docker -f docker-compose.yml -f docker-compose.local.yml up -d postgres

如果你已经自己安装了 PostgreSQL,也可以不用这一步,但需要手动创建 ai_polish 用户和 ai_polish 数据库。

3)安装 Python 依赖

Windows PowerShell:

cd package
python -m venv venv
.\venv\Scripts\Activate.ps1
python -m pip install -r requirements.txt

Linux:

cd package
python3 -m venv venv
source venv/bin/activate
python -m pip install -r requirements.txt

推荐使用 Python 3.11。

4)生成并修改配置文件

第一次运行会在 package/.env 生成配置模板:

python main.py

打开 package/.env,重点修改这些配置:

DATABASE_URL=postgresql://ai_polish:你在.env.docker里的POSTGRES_PASSWORD@127.0.0.1:5432/ai_polish
SECRET_KEY=随机长字符串
ADMIN_USERNAME=admin
ADMIN_PASSWORD=你的后台密码
ENCRYPTION_KEY=Fernet加密密钥

POLISH_MODEL=gpt-5.5
POLISH_API_KEY=你的API密钥
POLISH_BASE_URL=https://api.openai.com/v1

ENHANCE_MODEL=gpt-5.5
ENHANCE_API_KEY=你的API密钥
ENHANCE_BASE_URL=https://api.openai.com/v1

EMOTION_MODEL=gpt-5.5
EMOTION_API_KEY=你的API密钥
EMOTION_BASE_URL=https://api.openai.com/v1

如果你在 Windows 一键包或本机源码运行时使用 cliproxynew-api 这类本地代理, Base URL 请使用 http://127.0.0.1:8317/v1 这种 HTTP 地址,并同时满足:

SERVER_HOST=127.0.0.1
ALLOW_LOCAL_MODEL_PROXY=true
POLISH_BASE_URL=http://127.0.0.1:8317/v1

修改 SERVER_HOSTALLOW_LOCAL_MODEL_PROXY 后建议重启服务;本地代理安全边界按服务启动时的绑定地址判断。

不要把本机代理写成 https://127.0.0.1:8317/v1。本地代理模式只放行 http://127.0.0.1:端口/v1http://localhost:端口/v1http://[::1]:端口/v1 或本地 Docker 场景的 http://host.docker.internal:端口/v1

本地 Docker 访问宿主机代理时,Base URL 可写成 http://host.docker.internal:8317/v1。公网或 VPS 部署不要开启本地代理模式; SERVER_HOST=0.0.0.0 时系统会拒绝本地 HTTP 代理,必须使用公网 HTTPS 代理地址,例如 https://proxy.example.com/v1

生成密钥示例:

python -c "import secrets; print(secrets.token_urlsafe(32))"
python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"

第一个填 SECRET_KEY,第二个填 ENCRYPTION_KEY

5)启动项目

python main.py

访问:

http://localhost:9800
2. Docker Compose 部署

Docker Compose 会一次启动完整服务:

  • app:GankAIGC Web 应用。
  • worker:后台任务处理进程。
  • postgres:PostgreSQL 16 数据库。

数据库数据保存在 Docker volume postgres_data 中。重建 app / worker 容器不会删除数据。

1)拉取项目并复制配置

Windows PowerShell:

git clone https://github.com/mumu-0922/GankAIGC.git
cd GankAIGC
Copy-Item .env.docker.example .env.docker
notepad .env.docker

Linux / VPS:

git clone https://github.com/mumu-0922/GankAIGC.git
cd GankAIGC
cp .env.docker.example .env.docker
nano .env.docker

2)修改 .env.docker

至少修改:

POSTGRES_PASSWORD=换成强数据库密码
SECRET_KEY=换成随机长字符串
ADMIN_USERNAME=admin
ADMIN_PASSWORD=换成后台强密码
ENCRYPTION_KEY=换成Fernet加密密钥
ALLOWED_ORIGINS=http://localhost:9800

如果部署到 VPS,并直接用 IP 访问:

ALLOWED_ORIGINS=http://你的服务器IP:9800

如果绑定域名:

ALLOWED_ORIGINS=https://你的域名

生成密钥:

python3 -c "import secrets; print(secrets.token_urlsafe(32))"
python3 -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"

Docker 会自动根据 POSTGRES_PASSWORD 拼出容器内的 DATABASE_URL,一般不要在 .env.docker 里手动添加 DATABASE_URL

还可以在 .env.docker 中配置平台 API:

POLISH_MODEL=gpt-5.5
POLISH_API_KEY=你的API密钥
POLISH_BASE_URL=https://api.openai.com/v1

Docker/VPS 公网部署必须使用公网 HTTPS Base URL,不要开启本地代理模式:

ALLOW_LOCAL_MODEL_PROXY=false

只有本机 Docker 测试需要连接宿主机上的本地代理时,才可以把服务改成本机绑定:

SERVER_HOST=127.0.0.1
ALLOW_LOCAL_MODEL_PROXY=true
POLISH_BASE_URL=http://host.docker.internal:8317/v1

修改 SERVER_HOSTALLOW_LOCAL_MODEL_PROXY 后建议重启服务;本地代理安全边界按服务启动时的绑定地址判断。

3)启动

docker compose --env-file .env.docker up --build -d

4)检查状态

docker compose --env-file .env.docker ps
curl http://127.0.0.1:9800/health

返回类似下面内容表示正常:

{"status":"healthy"}

查看日志:

docker compose --env-file .env.docker logs -f app
docker compose --env-file .env.docker logs -f worker
docker compose --env-file .env.docker logs -f backup

Docker 部署默认会启动自动数据库备份服务,备份文件保存在宿主机 backups/

BACKUP_RETENTION_DAYS=14
BACKUP_INTERVAL_SECONDS=86400

需要立刻手动备份一次:

docker compose --env-file .env.docker run --rm -e RUN_ONCE=true backup

停止服务但保留数据库数据:

docker compose --env-file .env.docker down

更新项目:

git fetch --tags origin main
git pull --ff-only origin main
docker compose --env-file .env.docker up -d --build

进入管理后台,点击左上角版本号,可以检查 GitHub 最新 Release 并复制 SSH 升级命令。后台不会直接控制 Docker;需要 SSH 到 VPS 的项目目录手动执行上面的命令。

不要随便执行 docker compose down -vdocker volume rm gankaigc_postgres_data。这些命令会删除 PostgreSQL 数据卷,用户、邀请码、兑换码、会话和啤酒流水都会丢失。

3. Windows 一键整合包

解压后双击 start.bat 即可运行。

注意:解压路径必须全是英文,路径中不要包含中文、空格或特殊符号。

重要:一键包本地部署后,你自己就是管理员。 用户注册需要邀请码;邀请码需要登录管理后台后,在「用户管理」→「邀请码管理」里自己生成。 后台账号密码首次启动会显示在窗口里,也会保存到 logs/first-run-admin.txt

直接下载使用

进入 Releases,下载:

GankAIGC-Windows-OneClick.zip

使用方式:

  1. 解压 GankAIGC-Windows-OneClick.zip
  2. 双击 start.bat
  3. 首次运行会自动初始化内置 PostgreSQL,并生成 .env、数据库密码、后台密码、JWT 密钥和加密密钥。
  4. 后台账号密码会显示在窗口里,也会保存到 logs/first-run-admin.txt
  5. 停止服务双击 stop.bat

注意:不要删除 data/,否则用户、邀请码、兑换码、会话等数据会丢失。

4. 云端网站运行

网址:https://ga.mumubuku.top

邀请码进群获得,QQ群:1071743320


⚙️ 配置说明

源码运行读取 package/.env;打包后的 exe 读取 exe 同目录 .env;Docker 读取 .env.docker

项目 只支持 PostgreSQL。核心配置示例见下方。

展开查看核心配置示例
SERVER_HOST=0.0.0.0
SERVER_PORT=9800
APP_ENV=development
ALLOWED_ORIGINS=http://localhost:9800

DATABASE_URL=postgresql://ai_polish:数据库密码@127.0.0.1:5432/ai_polish

ADMIN_USERNAME=admin
ADMIN_PASSWORD=replace-with-strong-password
SECRET_KEY=replace-with-random-secret
ENCRYPTION_KEY=replace-with-fernet-key

POLISH_MODEL=gpt-5.5
POLISH_API_KEY=KEY
POLISH_BASE_URL=https://api.openai.com/v1

ENHANCE_MODEL=gpt-5.5
ENHANCE_API_KEY=KEY
ENHANCE_BASE_URL=https://api.openai.com/v1

COMPRESSION_MODEL=gpt-5.5
COMPRESSION_API_KEY=KEY
COMPRESSION_BASE_URL=https://api.openai.com/v1

MAX_CONCURRENT_USERS=5
API_REQUEST_INTERVAL=6
REGISTRATION_ENABLED=true
WORD_FORMATTER_ENABLED=false
ADMIN_DATABASE_MANAGER_ENABLED=true
ADMIN_DATABASE_WRITE_ENABLED=false

关键说明:

  • REGISTRATION_ENABLED=false:关闭邀请码注册,已有用户仍可登录。
  • WORD_FORMATTER_ENABLED=false:不挂载 Word 排版 API,也不会出现在 OpenAPI 文档中。
  • ADMIN_DATABASE_WRITE_ENABLED=false:数据库管理器保持只读,生产环境建议保持关闭。
  • ENCRYPTION_KEY:用于加密用户保存的自带 API 配置,必须妥善保存。

🧭 使用流程

  1. 管理员访问 /admin 登录后台。
  2. 在「用户管理」中创建或批量生成注册邀请码,也可复制/导出邀请码。
  3. 用户通过邀请码注册并登录。
  4. 管理员创建或批量生成啤酒兑换码,用户在前台兑换啤酒。
  5. 管理员可在「公告」中发布维护通知、模型切换通知或使用说明。
  6. 用户进入工作台,选择平台啤酒模式或自带 API 模式。
  7. 提交论文文本,等待任务处理完成。
  8. 查看分段结果、改写记录,并导出 .docx.md

🛠 管理后台

后台地址:

http://localhost:9800/admin

默认账号为 admin;默认密码仅适合本地开发,部署前必须通过 ADMIN_PASSWORD 修改。

后台包含:

  • 📊 数据面板:用户、任务、完成率、模式统计等。
  • 会话监控:排队、处理中、历史任务。
  • 🛡 运维状态:检查数据库、worker、自动备份、版本更新、初始化事项和模型连接。
  • 👥 用户管理:新版后台分为用户列表、邀请码管理、兑换码、啤酒流水、API 配置。
  • 📢 公告管理:发布、启用/隐藏、删除公告,用户工作台展示启用中的公告。
  • 🧾 操作日志:记录创建邀请码、创建兑换码、充值啤酒、公告、封禁/解封、配置变更。
  • 🗄 数据库管理:默认只读,白名单表可查,敏感字段脱敏。
  • ⚙️ 系统配置:模型、Base URL、并发、请求间隔、思考模式等。
展开查看用户管理细节

用户管理内部分为 5 个工作区:

  • 用户列表:按 ID、用户名、昵称搜索,按状态和 API 配置筛选;支持封禁/启用、充值啤酒、设置/取消无限啤酒。
  • 邀请码管理:支持单个创建、批量生成 10/50/100、多选复制、CSV/TXT 导出和停用/启用。
  • 兑换码:支持单个创建、批量生成 10/50/100、多选复制、CSV/TXT 导出。
  • 啤酒流水:查看充值、兑换、降 AI 消耗和失败退款记录。
  • API 配置:只展示用户自带 API 的 Base URL、模型名和 API Key 后四位,不展示完整密钥。

🗄 数据库迁移、备份与恢复

数据库迁移

新库或升级部署时执行:

cd package/backend
python -m alembic upgrade head

备份 PostgreSQL

如果本机安装了 pg_dump

$env:DATABASE_URL="postgresql://ai_polish:数据库密码@127.0.0.1:5432/ai_polish"
PowerShell -NoProfile -ExecutionPolicy Bypass -File scripts/backup-postgres.ps1
Remove-Item Env:\DATABASE_URL

如果 PostgreSQL 在 Docker 容器 gankaigc-postgres 中,也可以使用容器内的 pg_dump

New-Item -ItemType Directory -Force backups
$ts = Get-Date -Format "yyyyMMdd_HHmmss"
$file = "gankaigc_ai_polish_$ts.dump"
docker exec gankaigc-postgres pg_dump -U ai_polish -d ai_polish -F c -f "/tmp/$file"
docker cp "gankaigc-postgres:/tmp/$file" ".\backups\$file"
docker exec gankaigc-postgres rm "/tmp/$file"

备份、恢复和换机器说明见:PostgreSQL 运维指南

❓ 常见问题

端口被占用怎么办?

关闭占用 9800 的旧进程,或修改 .env / .env.docker 中的端口配置。

启动提示 PostgreSQL 连接失败?

优先检查:

  • PostgreSQL 是否启动。
  • DATABASE_URL 是否以 postgresql://postgresql+psycopg:// 开头。
  • 用户名、密码、数据库名和端口是否正确。
  • Docker 部署是否使用了 docker compose --env-file .env.docker ...

用户无法使用自带 API?

确认用户已保存 Base URL、API Key 和模型名称,并且服务端配置了有效的 ENCRYPTION_KEY

如果提示“你正在使用本地/内网模型地址”,按部署方式处理:

  • Windows 一键包本机使用:后台把 SERVER_HOST 改为 127.0.0.1,打开“允许本地 HTTP 模型代理”,Base URL 填 http://127.0.0.1:端口/v1
  • 本地 Docker 测试:Base URL 填 http://host.docker.internal:端口/v1
  • 云端/VPS/公网部署:不要填 127.0.0.1localhost192.168.x.x10.x.x.x172.16-31.x.x,必须使用公网 HTTPS 地址,例如 https://proxy.example.com/v1

AI 调用失败?

检查 API Key、Base URL、模型名称和网络连通性。不要把真实 API Key 提交到仓库。

🔐 安全提醒

发布到公网前必须完成:

  • 修改 ADMIN_PASSWORD
  • 修改 SECRET_KEY
  • 修改 POSTGRES_PASSWORD
  • 设置有效的 ENCRYPTION_KEY
  • 备份 PostgreSQL 数据库。
  • 不要提交 .env.env.docker、数据库 dump、日志和真实 API Key。
  • 保持默认浏览器安全响应头开启,包括 CSP、点击劫持防护、MIME 嗅探防护、来源策略和权限策略。
  • 公网或 VPS 部署不要开启本地 HTTP 模型代理,模型 Base URL 使用公网 HTTPS 地址。

📄 许可证

本项目基于 BypassAIGC 深度修改,继续采用 CC BY-NC-SA 4.0 协议发布。

未经相关版权方授权,禁止商业使用。

完整署名与来源见 NOTICE


🙏 致谢

感谢 linux.do 社区


💬 QQ 群

QQ群:1071743320


⭐ Star History

Star History Chart