📝 输入论文段落,AI 分析推荐图表方案![]() |
⚙️ 自动生成画图指令,实时流水线进度![]() |
🖼️ 高质量图表 + 源代码![]() |
🔄 自动重画 + AI 视觉审查迭代![]() |
✏️ TikZ 微调编辑器 — 可视化选中元素,精确调整属性![]() |
|
|
输入论文段落或描述,AI 自动分析并推荐合适的图表类型,全程无需手写代码
在已有图表基础上用自然语言描述修改需求,AI 在现有代码上迭代 |
Gemini Vision 自动检查生成图表的质量,发现问题自动修复,无需人工介入 内置多套学术配色方案,支持从图片提取自定义配色,一键应用 导出完整 可视化选中元素高亮定位,辅助手动微调代码 |
| 组件 | 职责 |
|---|---|
| Next.js Frontend | 用户界面、实时进度展示、代码编辑器、图表预览 |
| Go API Backend | AI Agent 编排、WebSocket 推送、渲染调度、数据持久化 |
| py-render Sidecar | Matplotlib 沙箱执行(进程隔离 + 受限 builtins) |
| PostgreSQL | 项目和生成记录存储 |
| Redis | 缓存(可选) |
| MinIO | 生成图片的 S3 兼容对象存储 |
| 依赖 | 版本 | 安装方式 |
|---|---|---|
| Docker & Compose | - | 下载 |
| Go | 1.23+ | 下载 |
| Node.js | 20+ | 下载 |
| Python | 3.11+ | 下载 |
| TeX 发行版 | - | macOS: brew install --cask mactexUbuntu: sudo apt install texlive-fullWindows: MiKTeX |
| Gemini API Key | - | 免费获取 → |
① 克隆项目
git clone https://github.com/0xE1337/ThesisViz.git
cd ThesisViz② 配置环境变量
cp .env.example .env
# 编辑 .env,填入你的 Gemini API Key(也可以启动后在网页上配置)③ 启动基础设施(PostgreSQL + Redis + MinIO)
make infra④ 安装 Python 依赖(首次运行)
make render-setup⑤ 一键启动所有服务
make dev⑥ 打开浏览器 → http://localhost:3000 🎉
💡 也可以在三个终端中分别启动
make api、make render、make web
📝 输入论文段落
│
▼
🤖 AI 分析 → 推荐 3 种图表方案
│
▼
🎯 选择方案 → AI 生成画图指令
│
▼
⚙️ 自动流水线:生成代码 → 编译渲染 → 视觉审查 → 自动修复
│
▼
🖼️ 得到图表 → 对话式修改 → 满意后导出
│
▼
📤 下载 PNG / 导出 .tex 到 Overleaf
- 创建项目 — 为你的论文创建项目,填写标题和摘要以提供上下文
- 输入文本 — 粘贴需要配图的论文段落
- AI 分析 — 系统分析文本,推荐 3 种图表方案(标题 + 描述)
- 选择方案 — 选定一个方案,AI 生成详细的画图指令
- 生成图表 — 自动化流水线实时推送进度到浏览器
- 迭代修改 — 用自然语言描述修改需求,AI 在现有代码上迭代
- 导出使用 — 下载 PNG 或导出
.tex到 Overleaf
ThesisViz 需要 Google Gemini API Key,支持两种配置方式:
|
🌐 网页配置(推荐本地使用) 启动后打开首页,在顶部卡片中输入 API Key 并保存。
|
⚙️ 环境变量(推荐部署) 在 GEMINI_API_KEY=AIzaSy...服务启动时自动加载,无需网页配置。 |
🔗 从 Google AI Studio 免费获取 API Key
| 变量 | 默认值 | 说明 |
|---|---|---|
GEMINI_API_KEY |
— | Gemini API 密钥(可通过网页配置) |
GEMINI_MODEL |
gemini-3-pro-preview |
默认 LLM 模型 |
DB_URL |
postgres://thesisviz:... |
PostgreSQL 连接串 |
REDIS_URL |
redis://localhost:6379/0 |
Redis 连接串 |
MINIO_ENDPOINT |
localhost:9000 |
MinIO 地址 |
MINIO_ACCESS_KEY |
minioadmin |
MinIO Access Key |
MINIO_SECRET_KEY |
minioadmin |
MinIO Secret Key |
MINIO_BUCKET |
thesisviz |
MinIO 存储桶名称 |
GO_API_PORT |
8080 |
Go API 端口 |
PY_RENDER_URL |
http://localhost:8081 |
Python 渲染服务地址 |
完整的默认值参见
.env.example
ThesisViz/
├── go-api/ # 🔧 Go 后端
│ ├── cmd/server/ # 入口
│ ├── internal/
│ │ ├── agent/ # AI Agent (Router / TikZ / Matplotlib / Mermaid)
│ │ ├── handler/ # HTTP & WebSocket 处理器
│ │ ├── llm/ # Gemini SDK 封装
│ │ ├── prompt/ # 提示词模板
│ │ ├── renderer/ # TikZ 编译器 (pdflatex / xelatex)
│ │ ├── service/ # 业务逻辑 & 流水线编排
│ │ └── ws/ # WebSocket Hub
│ └── pkg/ # 公共包 (配色方案 / 代码清洗)
│
├── py-render/ # 🐍 Python 渲染 Sidecar
│ ├── main.py # FastAPI 入口
│ └── executor.py # Matplotlib 沙箱执行器
│
├── web/ # 🌐 Next.js 前端
│ └── src/
│ ├── app/ # 页面路由
│ ├── components/ # UI 组件 (Shadcn/ui)
│ ├── lib/ # API 客户端 & 工具函数
│ └── stores/ # Zustand 状态管理
│
├── deploy/docker/ # 🐳 Dockerfile (go-api / py-render)
├── docker-compose.yml # 基础设施 (PostgreSQL / Redis / MinIO)
├── Makefile # 开发命令
└── .env.example # 环境变量模板
项目提供了生产级多阶段 Dockerfile:
# 构建 Go API 镜像
docker build -f deploy/docker/go-api.Dockerfile -t thesisviz-api .
# 构建 Python 渲染服务镜像
docker build -f deploy/docker/py-render.Dockerfile -t thesisviz-render .基础设施通过 Docker Compose 管理:
# 启动 PostgreSQL + Redis + MinIO
docker compose up -d
# 停止
docker compose downTikZ 图表编译失败?
确保已安装完整的 TeX 发行版:
- macOS → MacTeX (
brew install --cask mactex) - Linux → texlive-full (
sudo apt install texlive-full) - Windows → MiKTeX
如果使用中文标签,需要 xelatex(MacTeX 和 texlive-full 已包含)。
Matplotlib 图表中文显示为方块?
Python 渲染服务会自动使用 Arial Unicode MS 字体。如果系统没有此字体,安装任意支持中文的字体即可(如 Noto Sans CJK)。
API Key 安全吗?
通过网页配置的 API Key 仅存储在你的浏览器本地(localStorage),发送到你自己部署的后端服务。后端使用该 Key 直接调用 Google API,不经过任何第三方。
可以不用 Docker 吗?
Docker 仅用于基础设施(PostgreSQL、Redis、MinIO)。你也可以自行安装这些服务,修改 .env 中的连接信息即可。
支持哪些 Gemini 模型?
默认使用 gemini-3-pro-preview。你可以在界面侧边栏切换模型,也可以通过 GEMINI_MODEL 环境变量修改默认模型。
|
Go |
Next.js |
React |
Python |
PostgreSQL |
Redis |
Docker |
- Google Gemini API — AI 生成与视觉审查
- Gin — Go Web 框架
- Next.js — React 全栈框架
- Shadcn/ui — UI 组件库
- TikZ / PGF — TeX 矢量图形系统
- Matplotlib — Python 数据可视化
MIT — 自由使用、修改和分发。
如果觉得有用,请给个 ⭐ Star!
Made with ❤️ for researchers




