2026年自建Overleaf服务器:面向高校与科研机构的LaTeX基础设施部署指南
1. 为什么2026年还要自己部署Overleaf不是有官方云服务吗Overleaf 官方托管服务确实省心——注册即用、协作流畅、编译稳定对绝大多数本科生写课程报告、研究生初稿、会议投稿来说完全够用。但如果你正面临这些场景需要在内部网络中协作撰写涉密科研材料要求所有PDF生成过程100%本地可控团队要批量处理上百份带自定义宏包和字体的学位论文每次编译都卡在官方队列里等半小时或者你正在为某高校信息中心做LaTeX教学平台建设必须把编译日志、错误定位、资源占用全部暴露给教务系统做审计——那官方云服务就不再是“省心”而是“不可控”。我去年帮一所双一流高校部署过三套环境一套给数学学院做符号计算教学平台要求支持asymptote矢量图实时渲染一套给物理系做粒子物理实验报告系统需集成ROOT输出的.eps图表自动转PDF还有一套给校史馆做古籍排版系统要加载ctexfontspec自定义宋体字库。这三套全被官方Overleaf拒之门外——不是功能不支持而是其沙箱机制禁止调用外部二进制、限制字体加载路径、禁用--shell-escape权限。而这些恰恰是学术出版的真实刚需。关键词里反复出现的Docker、TexLive、服务器已经点明了技术路径这不是在复刻一个网页版编辑器而是在构建一个可审计、可定制、可嵌入现有IT基础设施的LaTeX编译服务中枢。它和vscode连接ssh远程服务器、阿里云服务器、ubuntu安装docker这些热词的共现说明真实需求来自运维侧——不是“怎么用Overleaf”而是“怎么让Overleaf变成我服务器上一个可管理的服务单元”。所以2026年部署它核心价值从来不是替代官方服务而是补足其能力盲区把LaTeX从“个人写作工具”升级为“机构级排版基础设施”。提示别被“部署Overleaf服务器”这个说法带偏。你真正部署的不是Overleaf前端而是TeX Live编译引擎 latexmk自动化调度 nginx反向代理 redis会话缓存 postgresql项目元数据存储这一整套后端栈。Overleaf的Web界面只是最表层的皮肤就像你不会说“我在部署WordPress服务器”而是在部署LAMP栈。2. Docker镜像选型为什么不能直接用overleaf/overleaf镜像Overleaf官方确实在Docker Hub上提供了overleaf/overleaf镜像最新tag为v3.5.0但直接拉取运行会立刻踩进三个深坑2.1 镜像体积失控12GB起步且无法精简官方镜像基于Ubuntu 22.04预装了完整texlive-full约8GB、Node.js 18、MongoDB 6、Redis 7、Nginx 1.22还硬编码了/opt/overleaf路径下的所有依赖。当你执行docker images时会看到REPOSITORY TAG SIZE overleaf/overleaf v3.5.0 12.4GB而实际生产环境中90%的用户根本不需要mongod——Overleaf v3已将元数据存储迁移到PostgreSQL但镜像仍保留MongoDB服务并默认启动。更致命的是texlive-full包含3000宏包但你的高校论文模板可能只用到ctex、xeCJK、algorithm2e等不到50个。多装的7GB不仅浪费磁盘更导致容器启动慢实测冷启动需217秒、镜像推送耗时推送到私有仓库平均18分钟。2.2 编译沙箱权限僵化--shell-escape默认关闭且无法开启这是学术用户最痛的点。当你的.tex文件包含\immediate\write18{python3 generate_plot.py}或\includegraphics{diagram.asy}时官方镜像会直接报错! Package ifplatform Error: Shell escape not enabled.翻遍其docker-compose.yml和config/defaults.json发现shell_escape被硬编码为false且启动脚本entrypoint.sh中无任何开关逻辑。有人尝试修改/etc/texmf/web2c/texmf.cnf但容器内该文件被设为只读。最终解决方案只能是放弃官方镜像从零构建。2.3 字体加载路径锁定无法挂载自定义字体高校论文强制要求使用特定宋体如“方正书宋_GBK”而官方镜像的fontspec搜索路径固定为/usr/share/fonts/opentype/和/opt/overleaf/texmf-local/fonts/opentype/。当你用-v /my/fonts:/usr/share/fonts/opentype挂载时容器内fc-list能识别字体但xelatex编译仍报Font FZShuSong not found。根源在于其fontconfig缓存未重建且/opt/overleaf目录下无fonts.conf覆盖入口。我的实操方案是彻底弃用官方镜像改用分层构建策略Base层debian:bookworm-slim仅124MB手动安装texlive-latex-recommendedtexlive-fonts-recommendedtexlive-lang-chinese总计1.8GBCompile层添加latexmk、asy、ghostscript配置~/.latexmkrc启用$pdflatex xelatex --shell-escape %O %SRuntime层仅安装nginxpostgresql-clientredis-tools业务逻辑由独立服务承载这样构建出的镜像仅2.3GB冷启动时间压至19秒且所有权限、路径均可按需定制。关键参数对比见下表维度官方overleaf/overleaf镜像自建分层镜像基础OSUbuntu 22.04 (328MB)Debian Bookworm-slim (124MB)TeX Live安装方式apt install texlive-fulltlmgr install latex latex-bin xetex fontspec ctex xeCJK默认Shell Escape强制禁用可通过环境变量OVERLEAF_SHELL_ESCAPEtrue动态开启字体挂载支持仅支持/opt/overleaf/texmf-local/路径支持任意挂载点自动触发fc-cache -fvPostgreSQL版本14.12硬编码15.5与Ubuntu 24.04 LTS对齐启动后端服务数7个nginx/mongo/redis/postgres/node/compile/worker3个nginx/postgres/compile注意tlmgr在线安装虽方便但2026年CTAN镜像站已普遍启用HTTP/3而Debian Bookworm默认curl不支持。实测需先执行apt install curl -t http3再运行tlmgr install否则会卡在Retrieving tlpdb阶段超时。这是文档里绝不会写的细节。3. TeX Live深度定制如何让编译速度提升3倍部署Overleaf服务器的核心瓶颈从来不是前端响应而是后端编译耗时。我统计过某高校2025年春季学期的编译日志平均单次编译耗时8.7秒其中xelatex初始化占4.2秒字体映射占2.1秒实际排版仅2.4秒。这意味着70%的时间花在环境准备上。优化必须直击这三个环节。3.1 编译引擎预热绕过xetex的字体缓存重建xelatex每次启动都要扫描/usr/share/fonts/下所有字体并生成/var/cache/fontconfig/缓存这个过程在容器内尤其慢——因为/var/cache是临时文件系统重启即丢。解决方案是将字体缓存固化到镜像层# 在Dockerfile中添加 RUN apt install -y fontconfig \ fc-cache -fv \ cp -r /var/cache/fontconfig /tmp/fontcache \ rm -rf /var/cache/fontconfig # 构建时挂载临时缓存 COPY --from0 /tmp/fontcache /var/cache/fontconfig更关键的是在entrypoint.sh中加入预热逻辑#!/bin/bash # 检查字体缓存完整性 if [ ! -f /var/cache/fontconfig/CacheDir ]; then echo Font cache missing, rebuilding... fc-cache -fv fi # 预热xetex引擎执行一次空编译 echo \\documentclass{article}\\begin{document}\\end{document} /tmp/test.tex xelatex -no-pdf -interactionbatchmode /tmp/test.tex /dev/null 21 rm -f /tmp/test.*实测效果首次编译从8.7秒降至3.2秒后续编译稳定在1.8秒内。3.2 宏包按需加载用texdef精准定位依赖很多用户习惯性安装texlive-full以为“多装总没错”。但algorithm2e宏包会隐式加载etoolbox、kvoptions、ltxcmds等12个依赖而这些在ctex中早已存在。冲突导致xelatex反复解析宏定义拖慢编译。正确做法是用texdef反向追踪# 查看ctex.cls实际加载的宏包 texdef -t xelatex -c ctex \ctexset | grep Loaded # 输出Loaded: etoolbox, kvoptions, ltxcmds, xparse, expl3, ... # 查看algorithm2e.sty的依赖树 texdef -t xelatex -c article \algorithmstyle | grep Loaded # 输出Loaded: etoolbox, kvoptions, ltxcmds, ...发现etoolbox等5个包重复加载。于是构建时只装ctex和algorithm2e再用tlmgr path add将ctex的texmf-dist/tex/latex/etoolbox/路径优先级设为最高避免重复解析。3.3 PDF生成流水线用latexmk替代原始xelatex调用Overleaf官方编译流程是xelatex → bibtex → xelatex ×2。但bibtex对中文参考文献支持极差且xelatex二次编译常因交叉引用未更新而失败。我们改用latexmk的-pdfxe模式并定制.latexmkrc$pdflatex xelatex --shell-escape -interactionnonstopmode -synctex1 %O %S; $bibtex biber %O %B; # 强制用biber替代bibtex $pdf_mode 5; # pdfxe模式 $max_repeat 3; # 最大重试次数 $clean_ext aux log out toc nlo bbl blg run.xml synctex.gz; # 关键优化启用增量编译 $compiling_cmd xelatex --shell-escape -interactionnonstopmode -draftmode %O %S; $success_cmd xelatex --shell-escape -interactionnonstopmode %O %S;此配置使编译成功率从82%升至99.7%且对含biblatex的文档编译耗时降低40%。原理在于-draftmode先快速验证语法成功后再执行完整编译避免无效的PDF生成。踩坑实录某次升级biblatex到3.19版后biber报错Error: Found biblatex control file version 3.18, expected 3.19。排查发现biber二进制文件版本2.19与biblatex宏包版本3.19不匹配。解决方案不是降级而是用tlmgr update --self tlmgr update biber同步更新且必须在biber安装后执行biber --version验证。这是tlmgr文档里刻意忽略的兼容性陷阱。4. 生产环境加固从能跑通到可运维的关键配置部署完成≠生产就绪。我见过太多团队在测试环境跑得飞起一上生产就崩溃凌晨三点编译队列堆积、PDF生成乱码、用户上传的.bst文件引发latexmk死循环。这些都不是功能问题而是运维设计缺陷。4.1 编译资源隔离用cgroups限制单次编译内存Overleaf默认不限制xelatex进程内存当用户上传含pgfplots的复杂图表时单次编译可能吃掉4GB内存导致宿主机OOM Killer干掉PostgreSQL。解决方案是用Docker的--memory和--cpus参数但更精细的做法是在编译进程启动前注入cgroups规则# 在compile.sh中添加 mkdir -p /sys/fs/cgroup/memory/overleaf-compile echo $$ /sys/fs/cgroup/memory/overleaf-compile/cgroup.procs echo 1G /sys/fs/cgroup/memory/overleaf-compile/memory.limit_in_bytes # 启动xelatex xelatex --shell-escape $同时配置/etc/docker/daemon.json启用cgroups v2{ exec-opts: [native.cgroupdriversystemd], default-runtime: runc, cgroup-parent: overleaf.slice }这样即使容器内xelatex进程崩溃cgroups仍能强制回收内存保障宿主机稳定性。4.2 日志审计体系把编译错误转化为可追踪事件Overleaf官方日志只记录HTTP 500但用户真正需要的是“为什么我的公式不显示”——这需要关联xelatex.log中的Undefined control sequence行号、nginx访问日志中的X-Real-IP、以及postgresql中该用户的最后操作时间。我们构建三层日志管道应用层修改compile.js在spawn(xelatex)后捕获stderr用正则提取错误类型const errorRegex /! LaTeX Error: (.?)\./; const match stderr.toString().match(errorRegex); if (match) { logger.error(COMPILE_ERROR:${match[1]}|USER_ID:${userId}|FILE:${fileName}); }传输层用fluentd收集/var/log/overleaf/compile.log添加kubernetes.pod_name标签存储层日志写入Elasticsearch建立索引模板{ mappings: { properties: { error_type: {type: keyword}, user_id: {type: long}, file_name: {type: text}, timestamp: {type: date} } } }当用户反馈“公式编译失败”运维可直接在Kibana中输入error_type:Undefined control sequence AND user_id:123455秒内定位到具体.tex行和错误上下文。4.3 安全边界控制禁用危险命令的终极方案--shell-escape是双刃剑。曾有用户上传.tex文件执行rm -rf /虽在容器内但会清空/tmp导致其他用户编译失败。官方方案是白名单命令但维护成本高。我们的方案是用seccomp-bpf过滤系统调用创建seccomp.json{ defaultAction: SCMP_ACT_ERRNO, architectures: [SCMP_ARCH_X86_64], syscalls: [ { names: [open, read, write, close, stat, lstat], action: SCMP_ACT_ALLOW }, { names: [execve, fork, clone], action: SCMP_ACT_ERRNO, errnoRet: 1 } ] }然后在docker run时指定docker run --security-opt seccompseccomp.json overleaf-server此配置下xelatex可正常读写文件但execve系统调用直接返回EPERM错误码1write18命令彻底失效。比shell_escapefalse更底层且无法被用户绕过。实战技巧某次安全扫描发现/opt/overleaf/compile/目录权限为777任何容器内进程都可写入。紧急修复不是改权限而是用mount --bind -o ro /dev/null /opt/overleaf/compile将该目录挂载为只读空设备。这是Linux内核级防护比chmod更可靠。5. 教学场景适配如何让本科生3分钟学会用私有Overleaf技术部署完成真正的挑战才开始如何让不熟悉命令行的本科生在没有IT支持的情况下顺利提交符合《XX大学学位论文格式规范》的PDF我们为某高校设计的“零学习成本接入方案”包含三个层次5.1 模板即服务把格式规范编译成可点击的按钮高校教务处发布的Word格式模板我们用pandoc转换为LaTeX模板并封装成Overleaf项目模板。但关键创新是在Web界面上增加“格式检查”按钮用户点击后后台执行# 检查页边距 pdftotext -layout thesis.pdf - | head -n 50 | grep -q Abstract echo 页眉检测通过 # 检查参考文献编号 grep -o \\bibitem{[^}]*} thesis.aux | wc -l | grep -q 23 echo 参考文献数量合规结果以可视化卡片呈现[✓] 页边距左3.0cm / 右2.5cm符合规范 [!] 图表编号图3.1应为“图3-1”需修改\caption{} [✗] 参考文献检测到27条超出上限23条这比让学生逐条对照Word文档高效10倍。上线后格式退回率从63%降至7%。5.2 错误翻译器把LaTeX报错转成中文教学提示当学生遇到! Undefined control sequence.官方Overleaf只显示原始错误。我们开发了错误映射引擎建立error_map.json{ Undefined control sequence: { pattern: \\\\([a-zA-Z]), hint: 您输入了未定义的命令\\\\$1请检查是否拼写错误或是否遗漏了\\usepackage{$1} } }在compile.js中解析xelatex.log匹配后插入教学提示! Undefined control sequence. l.123 \\citet{smith2020} ↑ 您使用了\\citet命令但未加载natbib宏包。请在导言区添加\\usepackage{natbib}这个功能让LaTeX学习曲线陡峭度下降50%学生不再因报错退出。5.3 本地VS Code无缝衔接用SSH隧道复用同一套环境很多学生习惯用VS Code写LaTeX但又想用学校私有Overleaf的编译服务。我们的方案是让VS Code的LaTeX Workshop插件直连私有服务器在服务器上启用SSH# /etc/ssh/sshd_config PermitTunnel yes AllowTcpForwarding yesVS Code中配置settings.jsonlatex-workshop.latex.recipe.default: xelatex, latex-workshop.latex.tools: [{ name: xelatex, command: ssh, args: [ -o StrictHostKeyCheckingno, userserver, cd /home/user/thesis xelatex --shell-escape %DOC% ] }]学生只需在VS Code中按CtrlAltB编译请求即通过SSH隧道发送到私有服务器执行PDF自动生成在本地。这套方案让教学平台从“必须用浏览器”的束缚中解放学生用惯用工具学校保有编译控制权双赢。最后分享一个血泪教训某次升级texlive到2025版后所有ctex文档编译报错! Package ctex Error: Invalid option fontset。排查三天才发现ctex宏包在2025版中将fontset选项重命名为fontset且旧版ctex的ctex.cfg配置文件被新版本忽略。解决方案不是回滚而是用tlmgr pin ctex 2.5.8锁定版本并在Dockerfile中显式声明RUN tlmgr pin ctex 2.5.8。版本锁不是保守而是生产环境的呼吸阀。

相关新闻

蓝牙5.4 LE Audio与PIC18微控制器的无线音频方案设计

蓝牙5.4 LE Audio与PIC18微控制器的无线音频方案设计

1. 项目背景与硬件选型考量在无线音频传输领域,蓝牙5.4标准带来的LE Audio特性正在重塑行业格局。IDC777-1模块与PIC18F96J65微控制器的组合,为开发者提供了一套高性价比的解决方案。这套方案特别适合需要兼顾低功耗和高音质的应用场景,如TWS…

2026/7/8 18:07:34阅读更多 →
Java Swing写的经典扫雷游戏,带完整工程文件和运行截图

Java Swing写的经典扫雷游戏,带完整工程文件和运行截图

本文还有配套的精品资源,点击获取 简介:直接双击就能玩的Java扫雷游戏,打包成MineSweeper.jar,Windows、Linux、Mac都能运行。项目结构标准,包含Eclipse配置文件(.project、.classpath、.settings&#…

2026/7/8 18:07:34阅读更多 →
DDrawCompat终极指南:让Windows 10/11完美运行经典DirectX游戏的免费解决方案

DDrawCompat终极指南:让Windows 10/11完美运行经典DirectX游戏的免费解决方案

DDrawCompat终极指南:让Windows 10/11完美运行经典DirectX游戏的免费解决方案 【免费下载链接】DDrawCompat DirectDraw and Direct3D 1-7 compatibility, performance and visual enhancements for Windows Vista, 7, 8, 10 and 11 项目地址: https://gitcode.co…

2026/7/8 18:07:34阅读更多 →
VS Code集群远程开发:免密信任链与远程Agent实战

VS Code集群远程开发:免密信任链与远程Agent实战

1. 这不是“连上就行”,而是集群级远程协同工作流的重构在 VS Code 里点几下就 SSH 连上一台服务器,这早就不叫技术了——它只是个起点。真正卡住团队手脚的,是当你手头有 5 台测试机、3 台预发节点、2 台 GPU 计算节点,还要同时跑…

2026/7/8 19:08:23阅读更多 →
Openclaw:ClaudeCode 的飞书与Discord神经接口

Openclaw:ClaudeCode 的飞书与Discord神经接口

1. 这不是“换壳”,而是给 ClaudeCode 装上飞书与 Discord 的神经末梢 你肯定试过 ClaudeCode——那个界面清爽、响应快、写 Python 脚本像呼吸一样自然的本地 AI 编程助手。但很快你会发现:它再聪明,也只是你电脑里一个安静的“单机版大脑”…

2026/7/8 19:08:23阅读更多 →
终极指南:3分钟解锁你的QQ聊天记录数据库

终极指南:3分钟解锁你的QQ聊天记录数据库

终极指南:3分钟解锁你的QQ聊天记录数据库 【免费下载链接】qq-win-db-key 全平台 QQ 聊天数据库解密 项目地址: https://gitcode.com/gh_mirrors/qq/qq-win-db-key 你是否曾因为更换手机或重装系统,眼睁睁看着珍贵的QQ聊天记录消失无踪&#xff1…

2026/7/8 19:08:23阅读更多 →
VSCode配置Claude Code Agent的模型选型与避坑指南

VSCode配置Claude Code Agent的模型选型与避坑指南

1. 为什么VSCode里配Claude Code Agent不是“装个插件就完事”——先破除三个典型幻觉 在最近两个月的客户支持和社区答疑中,我反复看到开发者带着一种近乎虔诚的期待打开VSCode:点开扩展市场搜“Claude”,装上标着“Official”或“Verified”…

2026/7/8 19:08:23阅读更多 →
影刀RPA Excel的Sheet管理:新增、复制、重命名、删除

影刀RPA Excel的Sheet管理:新增、复制、重命名、删除

影刀RPA Excel的Sheet管理:新增、复制、重命名、删除 作者:林焱 一个Excel文件往往不止一个Sheet。采集数据按日期分Sheet存储、报表按部门分Sheet展示、原始数据和清洗结果放在不同Sheet里。很多新手只会操作固定的"Sheet1",一旦…

2026/7/8 19:08:23阅读更多 →
微信小程序云开发+混元Lite实战:零服务器构建AI增强应用

微信小程序云开发+混元Lite实战:零服务器构建AI增强应用

1. 项目概述:这不是“薅羊毛”,而是一次微信生态内真实可用的云资源实践“微信小程序送补贴!手把手教你薅免费云开发资源 混元 Token(附使用教程)”——这个标题里藏着三个被严重误读的关键词:“送补贴”“…

2026/7/8 19:03:22阅读更多 →
从GitHub安全案例解析常见漏洞与防护实践

从GitHub安全案例解析常见漏洞与防护实践

1. 项目概述:从GitHub Trending看安全实战 最近在GitHub Trending上看到一个项目,叫 skills4/skills ,它因为一些安全漏洞案例被大家讨论。这其实是一个挺典型的场景:一个旨在展示或教授某种技能的仓库,本身却成了安…

2026/7/8 5:12:14阅读更多 →
MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

# MLT 2026启示:因果推理与概率建模驱动下一代LLM应用## 一、背景与挑战:从“黑箱预测”到“可信推理”2026年6月,第7届机器学习与趋势国际会议(MLT 2026)将在悉尼召开。会议议程中,“因果与可解释机器学习…

2026/7/8 7:00:12阅读更多 →
通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

1. 项目概述与漏洞背景最近在梳理一些历史OA系统的安全风险时,通达OA v11.6版本中的一个老漏洞又进入了我的视线。这个漏洞位于/general/bi_design/appcenter/report_bi.func.php文件中,是一个典型的SQL注入点。虽然这个漏洞的利用方式看起来并不复杂&am…

2026/7/8 2:26:06阅读更多 →
作为一个给团队打绩效的人,我想说几句

作为一个给团队打绩效的人,我想说几句

我每半年都会给团队成员打绩效,也会参与和 CTO 的绩效校准,所以从管理者的视角,说说这件事 首先,我先把结论告诉你:接受结果,但一定要把原因问清楚。 因为当绩效公布到你这里的时候,结果基本已…

2026/7/8 0:01:17阅读更多 →
A股股指期货:全维度解析(多表格结构化完整版)

A股股指期货:全维度解析(多表格结构化完整版)

一、基础定义与核心本质股指期货全称股票价格指数期货,是中国金融期货交易所(中金所)上市的标准化金融期货合约,交易标的为 A 股大盘指数,约定未来特定时间按约定价格现金交割指数涨跌差价,不交割一篮子股票…

2026/7/8 0:01:17阅读更多 →
iOS越狱新手指南:从困惑到掌控,3天解锁iPhone无限潜能的真实故事

iOS越狱新手指南:从困惑到掌控,3天解锁iPhone无限潜能的真实故事

iOS越狱新手指南:从困惑到掌控,3天解锁iPhone无限潜能的真实故事 【免费下载链接】Jailbreak iOS 26.4 - 26, 17 - 17.7.5 & iOS 18 - 18.7.3 Jailbreak Tools, Cydia/Sileo/Zebra Tweaks & Jailbreak News Updates || AI Jailbreak Finder &…

2026/7/8 0:01:17阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/8 6:59:54阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/8 13:42:39阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/8 13:42:39阅读更多 →