GitHub Actions 异步重处理(Actions)
DocsAll 的 Tier 5 层利用 GitHub Actions 公开仓库的免费无限额度,在云端跑重型后端工具(LibreOffice / Calibre / veraPDF / Ghostscript)。当你需要高保真转换(如 PDF → Word 排版不丢失)或合规验证(PDF/A)时,前端 WASM 引擎力不从心,Actions 是免费的最佳选择。
适用场景
- 高保真 PDF → Office:LibreOffice 引擎,排版 / 字体 / 表格精确保留
- 电子书转换:Calibre 引擎,支持 EPUB / MOBI / AZW3 / PDF / TXT 互转
- PDF/A 合规验证:veraPDF 引擎,验证 PDF/A-1a / 2b / 3a 等标准
- Ghostscript 高级处理:PDF 优化压缩 / 转 PostScript / 转 PDF/A
异步流程
浏览器 ──上传文件──> Workers(R2 存储 24h)
│
├─触发 repository_dispatch──> GitHub Actions
│ │
│ ├─下载输入
│ ├─LibreOffice/Calibre/veraPDF 处理
│ └─上传结果到 Release
│
└─前端轮询 /actions/status/<jobId>
│
└─Release 出现 → 返回下载 URL
整个流程通常 1-3 分钟,取决于 GitHub Actions 排队时间。
操作步骤
1. 切换到云端模式
Actions 工具需要 🔴 云端增强模式。按 Alt+P 循环切换,或在工具页右上角的隐私选择器选「云端增强」。
2. 选择工具
进工具总览,在「Actions」分类下选工具:
- PDF 高保真转 Office:输出 DOCX / XLSX / PPTX
- EPUB/MOBI 转换:电子书互转
- PDF/A 验证:返回合规报告
- Ghostscript 处理:优化 / 转换
3. 上传文件 + 配置参数
拖入文件,选择输出格式 / 验证版本 / 操作类型。点击「处理」提交任务。
4. 等待异步处理
页面会显示任务状态卡片:
- ⏳ 排队中:GitHub Actions 还未开始执行
- 🔄 处理中:Actions 正在跑(LibreOffice / Calibre 等)
- ✅ 完成:结果已上传到 Release,可下载
- ❌ 失败:通常是文件格式错误或 Actions 超时
前端每 5 秒轮询一次 Workers,Workers 内部也会主动查 Release。状态变化即时反映。
5. 下载结果
状态变为「完成」后,点击「下载结果」按钮。文件来自 GitHub Release,直链下载。
进阶技巧
任务保活
Workers 的 cron trigger 每 10 分钟跑一次:
- ping 所有 HF Spaces 保活
- 主动轮询 pending 状态的任务,刷新状态
所以即使你关闭浏览器,任务也会继续在 Actions 跑,下次打开页面用 jobId 查询即可。
多任务并发
可以同时提交多个任务(每个生成独立 jobId)。Actions 公开仓库可并行跑多个 workflow,但单 repo 默认并发上限 20。
文件保留期
- 输入文件存 R2,24 小时后自动清理(cron 每小时扫一次)
- 结果文件存 GitHub Release,永久保留(除非手动删除 release)
- jobId 元数据存 D1,30 天后自动清理
失败排查
任务失败时,状态卡片会显示错误信息。常见原因:
- 文件格式错误:输入不是有效 PDF / EPUB
- Actions 超时:文件过大(>50MB)或 LibreOffice 卡死
- Release 上传失败:GitHub 限流(罕见)
可重新提交,或换用前端 WASM 工具(Pandoc / pdf-lib)。
注意事项
- 隐私:文件会上传到 R2 + GitHub Actions runner,24h 后 R2 自动清理,但 Release 永久保留结果。敏感文档请用 🟢 纯本地模式
- 免费额度:GitHub Actions 公开仓库无限分钟,但单 job 最长 6 小时
- 排队时间:高峰期可能排队 1-5 分钟才开始执行
- 并发限制:单 repo 默认 20 并发,超出会排队
- 文件大小:建议 < 50MB;超大文件用前端 WASM 分批处理
- 网络:中国大陆访问 GitHub Release 可能慢,建议用代理或换用前端工具
与其他 Tier 的对比
| Tier | 引擎 | 保真度 | 速度 | 隐私 | 限制 | |---|---|---|---|---|---| | Tier 1(前端 WASM) | pdf-lib / Pandoc | 中 | 快 | 零上传 | 浏览器内存 | | Tier 4(HF Spaces) | PaddleOCR / Whisper | 高 | 中 | 云端 | HF 配额 | | Tier 5(Actions) | LibreOffice / Calibre | 最高 | 慢(异步) | 云端 | GitHub 限流 |
Actions 是保真度最高但最慢的层,适合不急的批量任务。