GankAIGC 是一个面向论文文本的降 AI 与学术润色工具,采用 FastAPI + React/Vite + PostgreSQL 架构,支持源码运行、Docker 部署和 Windows 一键整合包。
以下来自朱雀 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
通用访问地址:
- 🌐 用户首页:http://localhost:9800
- 🛠 管理后台:http://localhost:9800/admin
- 📖 API 文档:http://localhost:9800/docs
1. 源码运行:python main.py
这种方式需要 Python + PostgreSQL。如果不想手动安装 PostgreSQL,推荐用 Docker 只启动数据库,项目本体仍用 python main.py 跑。
Windows / Linux 都一样:
git clone https://github.com/mumu-0922/GankAIGC.git
cd GankAIGCWindows PowerShell:
Copy-Item .env.docker.example .env.docker
notepad .env.dockerLinux:
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数据库。
Windows PowerShell:
cd package
python -m venv venv
.\venv\Scripts\Activate.ps1
python -m pip install -r requirements.txtLinux:
cd package
python3 -m venv venv
source venv/bin/activate
python -m pip install -r requirements.txt推荐使用 Python 3.11。
第一次运行会在 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 一键包或本机源码运行时使用 cliproxy、new-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_HOST 或 ALLOW_LOCAL_MODEL_PROXY 后建议重启服务;本地代理安全边界按服务启动时的绑定地址判断。
不要把本机代理写成 https://127.0.0.1:8317/v1。本地代理模式只放行
http://127.0.0.1:端口/v1、http://localhost:端口/v1、http://[::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。
python main.py访问:
http://localhost:9800
2. Docker Compose 部署
Docker Compose 会一次启动完整服务:
app:GankAIGC Web 应用。worker:后台任务处理进程。postgres:PostgreSQL 16 数据库。
数据库数据保存在 Docker volume postgres_data 中。重建 app / worker 容器不会删除数据。
Windows PowerShell:
git clone https://github.com/mumu-0922/GankAIGC.git
cd GankAIGC
Copy-Item .env.docker.example .env.docker
notepad .env.dockerLinux / VPS:
git clone https://github.com/mumu-0922/GankAIGC.git
cd GankAIGC
cp .env.docker.example .env.docker
nano .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/v1Docker/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_HOST 或 ALLOW_LOCAL_MODEL_PROXY 后建议重启服务;本地代理安全边界按服务启动时的绑定地址判断。
docker compose --env-file .env.docker up --build -ddocker 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 backupDocker 部署默认会启动自动数据库备份服务,备份文件保存在宿主机 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 -v、docker volume rm gankaigc_postgres_data。这些命令会删除 PostgreSQL 数据卷,用户、邀请码、兑换码、会话和啤酒流水都会丢失。
3. Windows 一键整合包
解压后双击 start.bat 即可运行。
注意:解压路径必须全是英文,路径中不要包含中文、空格或特殊符号。
重要:一键包本地部署后,你自己就是管理员。 用户注册需要邀请码;邀请码需要登录管理后台后,在「用户管理」→「邀请码管理」里自己生成。 后台账号密码首次启动会显示在窗口里,也会保存到
logs/first-run-admin.txt。
进入 Releases,下载:
GankAIGC-Windows-OneClick.zip
使用方式:
- 解压
GankAIGC-Windows-OneClick.zip。 - 双击
start.bat。 - 首次运行会自动初始化内置 PostgreSQL,并生成
.env、数据库密码、后台密码、JWT 密钥和加密密钥。 - 后台账号密码会显示在窗口里,也会保存到
logs/first-run-admin.txt。 - 停止服务双击
stop.bat。
注意:不要删除
data/,否则用户、邀请码、兑换码、会话等数据会丢失。
源码运行读取 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 配置,必须妥善保存。
- 管理员访问
/admin登录后台。 - 在「用户管理」中创建或批量生成注册邀请码,也可复制/导出邀请码。
- 用户通过邀请码注册并登录。
- 管理员创建或批量生成啤酒兑换码,用户在前台兑换啤酒。
- 管理员可在「公告」中发布维护通知、模型切换通知或使用说明。
- 用户进入工作台,选择平台啤酒模式或自带 API 模式。
- 提交论文文本,等待任务处理完成。
- 查看分段结果、改写记录,并导出
.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如果本机安装了 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 是否启动。
DATABASE_URL是否以postgresql://或postgresql+psycopg://开头。- 用户名、密码、数据库名和端口是否正确。
- Docker 部署是否使用了
docker compose --env-file .env.docker ...。
确认用户已保存 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.1、localhost、192.168.x.x、10.x.x.x或172.16-31.x.x,必须使用公网 HTTPS 地址,例如https://proxy.example.com/v1。
检查 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。
QQ群:1071743320



