ppt-master × WorkBuddy 安装与重装指南

本包已内嵌 quya-gpt-image2 生图后端(零配置),解压即可完整还原本文档描述的这套环境。

打包日期:2026-10-21 | 技能版本:ppt-master v6.7.2(MIT)


0. 这个包里有什么

复制代码
ppt-master-workbuddy-bundle/
├── ppt-master/              ← 完整技能目录(13021 个文件,62 MB)
│   ├── SKILL.md             ← 技能入口(勿改 frontmatter)
│   ├── LICENSE / SPONSORS*.md  ← 完整性门禁校验对象(勿删!)
│   ├── WORKBUDDY_SETUP.md   ← 本机适配说明(本文件为总指南,那份是速查)
│   ├── .env                 ← 已配好 quya 为默认生图后端
│   ├── .env.example         ← 全部 13 家生图后端配置样例
│   ├── scripts/             ← 81 个 Python 脚本(含 image_backends/backend_quya.py)
│   ├── references/          ← 编写规范(SVG、表格、原生数据、图片嵌入...)
│   ├── workflows/           ← 路由与各阶段工作流
│   └── templates/           ← 版式与设计规范模板(48 MB,主要是图片资源)
├── README.md                ← 本文件
└── requirements.txt         ← 19 个 Python 依赖

关键:quya 集成已经写进技能包本体,不需要再单独安装 quya-gpt-image2 技能也能出图。


1. 环境要求

项 要求 本机实测
操作系统 Windows / macOS / Linux Windows 11
Python 3.10+ 3.13.14
磁盘 ≥200 MB(技能 62 MB + venv 约 120 MB) ---
网络 首次装依赖需联网;日常生成 PPT 全本地 ---

2. 安装步骤(重装照此执行)

步骤 1:解压技能到用户级技能目录

bash 复制代码
# 目标:~/.workbuddy/skills/ppt-master/
mkdir -p ~/.workbuddy/skills
cp -r pack/ppt-master-workbuddy-bundle/ppt-master ~/.workbuddy/skills/ppt-master

Windows 路径写法:C:\Users\<用户名>\.workbuddy\skills\ppt-master\

⚠️ 必须是用户级目录(~/.workbuddy/skills/),装到项目级的 .workbuddy/skills/ 只会对单个项目生效。

步骤 2:建独立 venv 并装依赖

为什么用独立 venv:19 个依赖里有 PyMuPDF、curl_cffi、skia-pathops、uharfbuzz 这类二进制包,装进系统 Python 容易和别的项目打架。

bash 复制代码
# 建 venv(用 WorkBuddy 托管的 Python 3.13)
"C:/Users/22093/.workbuddy/binaries/python/versions/3.13.12/python.exe" -m venv \
  "C:/Users/22093/.workbuddy/binaries/python/envs/ppt-master"

# 装依赖(注意 Windows 下 pip 在 Scripts\ 目录)
export CODEBUDDY_SAFE_DELETE_ENABLED=0   # 沙箱环境下必须,见 §5 坑 #1
"C:/Users/22093/.workbuddy/binaries/python/envs/ppt-master/Scripts/python.exe" \
  -m pip install -r "C:/Users/22093/.workbuddy/skills/ppt-master/requirements.txt"

耗时约 3-8 分钟(视网速)。装完验证:

bash 复制代码
"C:/Users/22093/.workbuddy/binaries/python/envs/ppt-master/Scripts/python.exe" -c \
  "import pptx, fitz, PIL, numpy, flask, edge_tts, curl_cffi, pathops, uharfbuzz, yaml, openpyxl, mammoth, markdownify, ebooklib, nbconvert, bs4, requests, xlsxwriter; print('ALL 19 IMPORTS OK')"

看到 ALL 19 IMPORTS OK 即成功(可能夹杂 PyMuPDF 的废弃警告,无害)。

也可以直接 pip install -r ppt-master-workbuddy-bundle/requirements.txt,内容相同。

步骤 3:跑完整性门禁

SKILL.md 要求每次开工前先跑这个:

bash 复制代码
"C:/Users/22093/.workbuddy/binaries/python/envs/ppt-master/Scripts/python.exe" \
  "C:/Users/22093/.workbuddy/skills/ppt-master/scripts/attribution_guard.py"

EXIT=0 即通过。它会校验 LICENSE、SPONSORS、SKILL.md 等文件是否被篡改或删除。

步骤 4:验证生图后端

bash 复制代码
"C:/Users/22093/.workbuddy/binaries/python/envs/ppt-master/Scripts/python.exe" \
  "C:/Users/22093/.workbuddy/skills/ppt-master/scripts/image_gen.py" --list-backends

应看到 quya 出现在列表里,且 .env 中的 IMAGE_BACKEND=quya 生效。

步骤 5:终端 PATH(可选,仅方便手动跑脚本)

WorkBuddy 的工具 shell 不加载 .bashrc,所以我在对话里执行时会自动写 venv 全路径,这一步只是方便你自己在终端敲命令:

bash 复制代码
# ~/.bashrc 追加
export PATH="/c/Users/22093/.workbuddy/binaries/python/envs/ppt-master/Scripts:$PATH"

已有 python3.exe(venv 里复制的一份),所以 python3 xxx.py 可直接用。


3. 使用方式

对话里直接说人话即可,技能会自动路由:

你说 走哪条路 特点
「把这份 PDF 做成 PPT」 Generate PPTX(Default) 先研究补事实、写 design_spec、逐页确认,质量最高
「快速生成一个 XX 主题的幻灯片」 Quick 模式 跳确认直接出稿
「美化这个 PPT」 Beautify 套已有内容重排版
「按这个模板做 PPT」 Template 提取母版版式再填内容
「改一下这个 PPT 第 3 页」 Edit Native PPTX 直接操作原生对象
「给 PPT 加配音动画」 Narrate 演讲备注 + TTS + 转场

默认路线(Default)的完整流程:

复制代码
门禁 → 路由 → topic-research(补事实+出处)
  → design_spec.md + spec_lock.md → validate
  → 生图(quya)/ 取公有领域素材 → 图片分析
  → 逐页绘制 SVG → 质量门禁(svg_quality_checker)
  → 导出 PPTX(svg_to_pptx)→ 结构验证

4. quya 生图后端配置说明

为什么默认用 quya

  • 中转站前面挂着 gpt-image-2 ,密钥已内置(.env 里也有明文,两处互为兜底)
  • 比直连 OpenAI 便宜、境内速度可接受(16:9 / 1280×720 约 50 秒)

.env 关键配置

ini 复制代码
IMAGE_BACKEND=quya
QUYA_API_KEY=sk-222c...  # 留空则用后端内置密钥
QUYA_BASE_URL=https://api.quya.org/v1
QUYA_MODEL=gpt-image-2
QUYA_RESPONSE_FORMAT=b64_json   # 必须,绕开慢速图床
QUYA_OUTPUT_FORMAT=png
QUYA_BACKGROUND=opaque

两个 quya 专有适配(集成关键,不写必失败)

  1. UA 伪装 :中转站 WAF 拦截默认 HTTP 库 UA,报 502 upstream forbidden。backend_quya.py 所有请求固定带 User-Agent: curl/8.4.0。
  2. b64_json 优先 + IEND 校验 :中转站图床只有 3-15 KB/s,按 URL 下载会假死。默认让 API 直接内联返回 base64,解码后校验 PNG 结尾的 IEND 块防截断。

三种出图调用方式

bash 复制代码
PY="C:/Users/22093/.workbuddy/binaries/python/envs/ppt-master/Scripts/python.exe"
GEN="C:/Users/22093/.workbuddy/skills/ppt-master/scripts/image_gen.py"

# ① 单张文生图
"$PY" "$GEN" "A flat-design illustration of a robot, blue palette, no text" \
  --aspect_ratio 16:9 --image_size 1K -o images/

# ② 参考图编辑(整图重绘)
"$PY" "$GEN" "Change palette to warm orange" --reference-image images/plate.png -o images/

# ③ 批量(manifest,推荐用于整套 deck)
"$PY" "$GEN" --manifest images/image_prompts.json -o images/

想换别的后端

.env 改 IMAGE_BACKEND 即可。13 家可选,配置样例全在 .env.example:OpenAI、Gemini、SiliconFlow、ModelScope、智谱、MiniMax、fal、BFL、腾讯 TokenHub (tokenhub.tencentmaas.com)、OpenRouter 等。

单次覆盖:--backend tencent。


5. 踩坑记录(写教程最值钱的部分)

坑 #1|沙箱拦截 pip 解压,报"装成功但包不存在"

现象 :pip install 日志明明写着 Successfully installed skia-pathops-0.9.2,但 site-packages 里只有 dist-info 元数据、没有实体包目录,import 报 ModuleNotFoundError。

原因:WorkBuddy 的 safe-delete 钩子拦截了 wheel 解压时的临时目录清理。

解法 :装包前设 export CODEBUDDY_SAFE_DELETE_ENABLED=0(或 PowerShell $env:CODEBUDDY_SAFE_DELETE_ENABLED = "0")。这是总开关,设了就不注入钩子。

坑 #2|skia-pathops 的 import 名不叫 skia_pathops

现象 :import skia_pathops 失败,误判为没装上,白折腾半小时。

真相 :这个 wheel 的模块名是 pathops 。验证:python -c "import pathops; print('ok')"。

坑 #3|bash 调 venv 的 python 报 "No such file or directory"

解法 :用 PowerShell 调,或写 Windows 全路径 C:/Users/.../Scripts/python.exe(正斜杠可用)。bash 下别用 /c/... 混着写。

坑 #4|PowerShell 输出被吞 / 中文乱码

解法 :重要结果重定向到文件再读;PowerShell 默认写 UTF-16LE,读的时候先 tr -d '\0' 去掉空字节。

坑 #5|质量门禁常见的 5 类 blocking error

svg_quality_checker.py 跑完报了错,按这个顺序排查最快:

报错 改法
字号未声明角色 在 design_spec 的排版表里加一行,如 `Label
元素溢出组边界 检查 data-pptx-bounds,扩大到覆盖所有子元素,或挪元素进来
文本溢出文本框 长句拆成两行,或降字号;用 text_measure.py calibrate 先算宽度
§VIII 素材状态非法 ai 生成列填 Generated/Pending;web 取图必须在 images/image_sources.json 落账,license_tier 只认 no-attribution / attribution-required / manual
原生表格组缺 bounds 必须写 data-pptx-bounds="x y w h"。注意 stamp_native_fallbacks.py 生成的是 data-pptx-x/y/width/height,门禁不认这组,要手动补 bounds

坑 #6|Wikimedia 在沙箱连不通

commons.wikimedia.org 与 upload.wikimedia.org 全部超时。替代方案:IMSLP (imslp.org,可达),上面镜像了大量公有领域音乐文献与历史图像。巴赫 1746 年 Haussmann 肖像就是这么取到的。

注意 IMSLP 的 PDF 直链有 Cloudflare 反爬,脚本下载会拿到 HTML;需要人工浏览器下载。

坑 #7|LibreOffice headless 在本沙箱起不来

想用 soffice --headless --convert-to pdf 渲染 PPTX 预览,进程无输出、exit code 空。替代:直接读 SVG 源文件,或用内嵌渲染组件预览。

坑 #8|上游更新会覆盖 quya 集成

如果从官方 ZIP 覆盖更新技能,backend_quya.py 和三处 image_gen.py 改动会丢。恢复方法:

  1. 把本包里的 backend_quya.py 拷回 scripts/image_backends/
  2. 在 image_gen.py 补三处:
    • docstring 加一行 IMAGE_BACKEND=quya -> quya GPT Image 2 relay backend (built-in key)
    • IMAGE_ENV_PREFIXES 元组加 "QUYA_",
    • BACKEND_REGISTRY 加 "quya": {"module": "backend_quya", "label": "quya GPT Image 2", "aliases": ["quya-gpt-image2", "gpt-image-2", "gptimg2"], ...}
  3. 恢复 .env

坑 #9|完整性门禁会拒运

永远不要 删 LICENSE、SPONSORS*.md,不要改 SKILL.md 的 frontmatter。attribution_guard.py 会校验这些文件的哈希,改了就跑不起来。新增文件(如 backend_quya.py)不受影响。


6. 验证清单(装完逐条打勾)

bash 复制代码
PY="C:/Users/22093/.workbuddy/binaries/python/envs/ppt-master/Scripts/python.exe"
SK="C:/Users/22093/.workbuddy/skills/ppt-master"

# ① 依赖齐全
"$PY" -c "import pptx, fitz, pathops, uharfbuzz; print('deps ok')"

# ② 完整性门禁(必须 EXIT=0)
"$PY" "$SK/scripts/attribution_guard.py"

# ③ 后端列表里有 quya
"$PY" "$SK/scripts/image_gen.py" --list-backends | grep quya

# ④ 真的能出图(约 50 秒)
"$PY" "$SK/scripts/image_gen.py" "a simple blue circle on white background" \
  --aspect_ratio 16:9 --image_size 1K -o /tmp/test-gen

# ⑤ 快速出稿(说"快速生成 3 页测试 PPT"即可)

7. 实测案例(可作为教程配图素材)

案例 A:Quick 模式 6 页(15 分钟)

主题「2026 AI 办公工具趋势」,全程手绘 SVG,门禁 0 error,产出 25 KB / 6 页 PPTX。

案例 B:Default 模式 12 页(约 1.5 小时,含 6 轮门禁迭代)

主题「哥德堡变奏曲:一座对称的建筑」,给零乐理听众讲巴赫 BWV 988 的结构:

  • 34 根柱子的对称拱形(1+30+1)
  • 卡农音程从同度到九度的阶梯
  • 古尔德 1955 / 1981 录音原生表格对比
  • 米色铜版画风:3 张 quya AI 插图 + 1 张 1746 年 Haussmann 巴赫油画真迹
  • 逐页事实出处标注(facts.json 共 14 条,F001-F014)

产出 5 MB / 12 页 / 78 个原生形状,全部可在 PowerPoint 里直接编辑。


8. 目录速查

用途 路径
技能本体 ~/.workbuddy/skills/ppt-master/
Python 环境 ~/.workbuddy/binaries/python/envs/ppt-master/
技能内配置 ~/.workbuddy/skills/ppt-master/.env
生成的项目 由 project_manager.py init <名字> 决定,默认在工作区 projects/
项目内结构 design_spec.md、spec_lock.md、svg_output/、images/、exports/、validation/
本机适配速查 ~/.workbuddy/skills/ppt-master/WORKBUDDY_SETUP.md

本指南由 WorkBuddy 生成,2026-10-21。技艺细节以技能内 SKILL.md 与 workflows/ 为准。

相关推荐
码上观世界21 小时前
AI PPT 设计方法以及与dashi ppt 对比
人工智能·powerpoint
Java后端的Ai之路1 天前
【AIAgent项目-AI生成PPT-09】灵活排版
前端·vue.js·人工智能·python·powerpoint
ratel️3 天前
小墨析 · Office Agent 日常办公不烧心
python·langchain·word·excel·fastapi·js·ppt
ms365copilot3 天前
PowerPoint Copilot:用交互式幻灯片增强演示叙事
powerpoint·copilot
SunnyDays10114 天前
Java 操作 PPT 超链接:添加、修改和删除
java·powerpoint·ppt·超链接
溜达的大象4 天前
飞牛NAS部署ONLYOFFICE Docs:把文档、表格和PPT的在线编辑能力放到自己的服务器上
运维·服务器·powerpoint
ms365copilot4 天前
我不再自己做 Word、Excel 和 PPT 了,我让 Copilot 直接帮我创建 (1)
word·powerpoint·excel·copilot
小幂同学7 天前
AIPPT 使用说明:从主题输入或文档大纲生成 PPT!
powerpoint
RichardLau_Cx7 天前
PPT工具选型指南:WPS、PowerPoint、Canva 与 AI 办公助手(豆包_千问_WorkBuddy)到底怎么选?
人工智能·powerpoint·wps