PPT制作全能工具(自包含版)
> 规范底稿:《完善版PPT设计指引(v2.0整合版)》,外部工具现状核实日期 2026-10-17。
> 自包含化:本技能随附 内置生成器 bin/make_pptx.py(python-pptx),并把第三方设计数据(huashu-design 的 20 种设计哲学)内嵌为 references/design-styles.md。因此即使目标环境未安装 workbuddy-pptx / huashu-design / ai-ppt-skill / academic-skills 等任何第三方技能,本技能仍可完整运行并产出可编辑 PPTX。外部技能仅作为"可选替代引擎"——当你已安装它们且需要其特定长板(如 huashu 的浏览器渲染、ai-ppt-skill 的模板继承)时使用,不安装也不影响本技能功能。
> 本技能定位:路由 + 纪律 + 生成(自包含)层。生成能力已完全内嵌,使"单点收口"在离线环境下也有可执行体。
0. 自包含设计与独立使用
目标:技能组合自身完整,在「未安装或配置任何类似第三方技能/环境」的条件下仍能完整使用 PPT 生成能力。
本技能自带、不依赖第三方的资产:
| 资产 | 路径 | 作用 | 第三方依赖 |
|---|---|---|---|
| 内置生成器(L1/L2) | bin/make_pptx.py | spec→可编辑 PPTX;支持渐变/图片/视频/切换动画/入场动画/11 种图表/free 六类元素 | 仅 python-pptx(必要环境,见 SETUP.md) |
| 内置 HTML 生成器 | bin/make_html.py | spec→单文件自包含 HTML 演示;12 套视觉风格 + CSS 变量 + JS 交互(键盘/触摸/滚轮翻页、进度条、导航点、入场动效、hash 深链、打印导出 PDF);本地图片(含公式 PNG)base64 内联保持单文件自包含 | 无(仅需 Python 标准库) |
| 公式/图表离线渲染器 | bin/render_assets.py | 扫描 deck 或按 --math/--svg 把数学公式/SVG 渲染为透明 PNG,供 PPTX(contain 缩放)与 HTML(base64 内联)双端嵌入 | 可选:matplotlib(公式/图表)、pillow(保底图像处理)、cairosvg(SVG→PNG,可选) |
| HTML→PPTX 浏览器路径 | bin/html2pptx.py | 每页一个 HTML 文件 → 原生 PPT 对象(真 L2),替代 huashu-design | 可选:还需 playwright + chromium |
| 自训练入口 | bin/ingest_training.py + training/ | 投喂并沉淀风格/版式/结构/领域四类素材 | 无(仅需 Python 标准库) |
| 示例 spec(4 份,含两份实战复现) | examples/ | 即开即用的模板与复现样本;产物可用 bin/ 内脚本一键重新生成 | 无 |
| HTML 风格库(12 套) | references/html-slide-styles.md | 「多种视觉风格」事实底稿(内嵌自 frontend-slides) | 无 |
| 设计哲学库(20 种风格) | references/design-styles.md | 「多种风格可选」事实底稿(内嵌自 huashu-design) | 无 |
| 纪律与路由 | SKILL.md + references/ | 元规则/反模式/工具采纳映射 | 无 |
独立使用流程(无任何第三方技能):
1. 安装必要环境:pip install python-pptx(详见 SETUP.md)。HTML 输出连这一步都不需要。
2. 按 README.md 的「Deck Spec 格式」编写 JSON(或让本技能把用户需求转写为 spec)。
3. 同时产出两种形态(双交付,强制):用同一份 deck spec 分别渲染 PPTX 与 HTML(自由版式坐标自动换算,无需改动 spec),两份一并交付:
- PPTX:python bin/make_pptx.py --spec deck.json --out deck.pptx [--mode l1|l2]
- HTML:python bin/make_html.py --spec deck.json --out deck.html --style swiss-modern
- 用户若明确只要其一(如"只要 PPTX 打印""只要 HTML 大屏自播放"),可在确认卡片中特例说明,否则默认双交付。
4. 按本技能四层反模式清单自检,出具四件套。
离线保证:上述流程不读取、不调用、不要求 frontend-slides / workbuddy-pptx / huashu-design / ai-ppt-skill / academic-skills / think-cell 中任何一个。第三方技能仅在「用户已安装且需要其特定长板」时作为可选替代引擎介入(见第 3 节路径 A/B/C 的"可选"标注与 §0.1 双重性说明)。
0.1 HTML 输出:路由 + 零依赖 双重性
> 用户要求「整合 frontend-slides 的多种视觉风格作为 PPT 效果呈现方式之一,且嵌入部分兼具路由与零依赖双重性」。实现如下。
零依赖面(默认路径)
- 12 套风格(Bold Signal / Electric Studio / Creative Voltage / Dark Botanical / Notebook Tabs / Pastel Geometry / Split Pastel / Vintage Editorial / Neon Cyber / Terminal Green / Swiss Modern / Paper & Ink)已作为数据副本内嵌于 references/html-slide-styles.md,含色板、字体配对、识别元素、视口适配基线 CSS、动效模式、CSS 陷阱、禁用清单。
- bin/make_html.py 只用 Python 标准库生成单文件自包含 HTML(CSS + JS 全内联),含:视口适配(100dvh + clamp + 高度断点)、键盘/触摸/滚轮翻页、进度条、导航点、IntersectionObserver 入场动效、URL hash 深链、@media print 打印导出 PDF、prefers-reduced-motion 无障碍。
- 字体走外链但断网自动回落本地字体栈,版式不塌。
路由面(可选增强)
- 若已安装 frontend-slides,可路由过去用其原生能力(ppt-extract.py 从既有 PPTX 抽取、image-processing.py 图片预处理、原始预设件与其后续升版)。
- 未安装时不得声称"需要前端技能才能出 HTML"——内置路径已覆盖 12 套风格与全部交互能力。
- 装了也不改变交付层级标注:HTML 是与 PPTX 并列的独立交付形态,不参与 L1/L2 冒充。
- 双重性的完整说明、安装与排错见 SETUP.md 第「二·五」节。
路由判定(加入第 3 节判据链)
- 判据 7(已升级为「双交付」硬规则)|标准交付 = 同一份 deck spec 经两个内置生成器分别渲染出 PPTX 与 HTML,两份一并交付。HTML 不再是可选项,而是与 PPTX 并列的强制产出。PPTX 走 make_pptx.py(L1 原生 / L2 等价),HTML 走 make_html.py(12 套风格可选,仅标准库,零依赖默认)。
- 特例:仅当用户在确认卡片中明确指定只要其一(如"只要 PPTX 拿去打印""只要 HTML 大屏自播放"),才单交付;未指定的标准场景一律双交付。
- HTML 零依赖路径在需要 frontend-slides 原生脚本(从既有 PPTX 抽取资源、图片预处理)且它确实已安装时方可路由过去——未安装不得声称需要它。
0.2 自训练接口
> 用户要求「技能具有自训练能力,可自由接受用户投喂或训练素材(或语义),包括但不限于 PPT 版面及风格素材、PPT 内容逻辑和结构素材、PPT 新增领域功能等,故预留接口能力」。
四类可投喂素材
| 类型 | 投喂什么 | 沉淀成什么 |
|---|---|---|
style |
版面与视觉风格(配色、字体、版式样例、CSS 变量、参考说明) | 新的视觉风格预设,进入 theme.colors / HTML STYLES |
layout |
版式结构(新 layout、区块划分、栅格约定) | 新版式;先以 free 坐标模板落地,高频后升级为一等 RENDERER |
structure |
内容逻辑与结构(叙事骨架、论证范式、章节模板) | 领域判定的结构范式库,指导纵向线组织 |
domain |
新增领域能力包(触发词、判定规则、验收红线、术语表) | 新的领域范式,进入第 1 节判定与第 6 节验收 |
四条投喂通道:① 对话直接投喂("把这个配色收进技能")→ 本技能转写为 JSON 后登记;② 文件投喂到 training/inbox/ + --scan;③ CLI --add;④ 自动写入:新建领域流程完成后由 bin/intake.py --propose-domain 自动登记(先过三通道查重,近似者拒绝)。
入口:bin/ingest_training.py(--list / --scan / --add / --validate / --get)与 bin/intake.py(--classify / --check-dup / --propose-domain / --promote / --list-domains),均仅依赖 Python 标准库。格式规范见 training/README.md,可直接抄 training/examples/example-materials.json。
硬边界(不可逾越):投喂素材只能扩展风格 / 版式 / 结构 / 领域四类能力;不得改写元规则 R1–R7、四层反模式清单与交付层级纪律(L1/L2 不得冒充)。素材入库前必须过 validate;同名冲突登记为新条目而非静默覆盖;引用第三方素材保留署名。
0.3 独立性与完整性声明
本技能在未安装任何第三方技能、未配置任何专属环境(除通用 Python)的条件下,仍是一个完整可用的演示创作技能。 判据:
| 能力 | 是否依赖第三方 | 实现 |
|---|---|---|
| 输入端语义检视 / 领域判定 / 新领域查重沉淀 | ❌ 完全不依赖 | bin/intake.py + references/domains.json(20 领域) |
| 生成可编辑 PPTX | ❌ 不依赖 | bin/make_pptx.py(+ python-pptx) |
| 生成 HTML 演示(12 套风格) | ❌ 完全不依赖 | bin/make_html.py(仅标准库)+ 内嵌风格库 |
| HTML → PPTX | ⚠️ 可选 | bin/html2pptx.py(+ playwright,可选) |
| 「多种风格可选」 | ❌ 不依赖 | 内嵌 design-styles.md(20) + html-slide-styles.md(12) |
| 渐变/图片/视频/动画/11 种图表 | ❌ 不依赖 | 内置于 make_pptx.py |
| 公式/图表渲染为 PNG(双端嵌入) | ⚠️ 可选依赖 | bin/render_assets.py + matplotlib(可选装);不装则不渲染公式 PNG,但文字版式与图表能力不受影响 |
| 自训练与能力沉淀 | ❌ 不依赖 | bin/ingest_training.py + training/ |
| 纪律、路由、验收 | ❌ 不依赖 | 本文件 + references/ |
唯一不可封装项:think-cell 原生图表(商业第三方软件,非本生态技能);缺失时标注"通用图表"。此外幻灯片内路径动画/自定义缓动尚未实现——这两项已在 README 诚实边界明示,不掩盖。
兼容性边界(诚实声明,不冒充):
- 内置生成器产出 L1 原生 PPTX(形状/文本框/图表均可独立编辑);其 free 布局在 --mode l2 下提供逐元素自由放置(L2 等价),不经过浏览器渲染。
- 以下能力现已内置,不再需要 huashu-design:渐变填充(fill.gradient)、图片、video(add_movie)、切换动画(p:transition)、元素入场动画(p:timing 淡入)、11 种图表类型。故原"不做渐变/动画/视频"的限制已解除。
- 内置 HTML 路径(bin/html2pptx.py)已端到端验证可用:chromium 装好后实测 9/9 页、253 个真文本框,与 huashu 原版横向对照一致 → huashu-design 由"需要"变为"可不用"。该路径需可选安装 playwright + chromium;未安装时不得声称此路径可用(应改走 make_pptx.py,其不需浏览器)。判定浏览器是否就绪,须做真实 launch 测试,不可用 ls ~/.cache 判断(Windows 实际在 %LOCALAPPDATA%\ms-playwright)。
- 不可封装项:think-cell 原生图表属商业第三方软件(非本生态的"技能"),无法打包;缺失时标注"通用图表,非 think-cell 专用图表"。幻灯片内路径动画/自定义缓动尚未实现。
- 学术保真路径(C1/C2a/C2b)若未安装对应学术技能,则由内置生成器以 L1 兜底(保留 [MISSING]/[UNVERIFIED] 占位,不得栅格化掩盖)。
0.4 输入端引擎
> 用户要求「输入端设计到用户需求与素材:有素材的自主检视语义并判断路由、无素材的解析语义并全网搜索预选素材,均须复述供确认后继续;领域与触发词要扩写;未命中现有领域时按新建领域实时交互创作并在完成后自动写入技能包,且不得重复啰嗦」。实现如下。
| 资产 | 路径 | 作用 | 第三方依赖 |
|---|---|---|---|
| 输入端引擎 | bin/intake.py |
领域匹配打分、新领域三通道查重、自动登记与晋升、复述卡片骨架 | 无(仅标准库) |
| 领域注册表(事实源) | references/domains.json |
4 个认知范式 + 20 个领域(触发词/范式/骨架/红线/术语) | 无 |
| 领域注册表(人读) | references/domain-registry.md |
由 bin/intake.py --render-registry 按需生成(包内不预置,避免双源漂移),含触发词→领域反查表 |
无 |
| 输入端协议 | references/intake-protocol.md |
S/N 两分支流程、确认机制、新建领域流程、硬边界 | 无 |
零依赖保证:intake.py 不联网、不用浏览器、不调用任何第三方技能。联网只发生在模型侧(N 分支的全网搜索),且不可用时降级为"内置领域库 + 向用户补问",不声明失败。
0.5 内容增益与篇幅档位
> 用户要求「内容上保真、保质、保全——真实可靠、高质量符合目标任务、系统全面」,且「篇幅按简洁/适中/详细/加长/超长五档,供用户选择确认后组织内容与结构」。实现如下。定位:辅助性、增益性、非必要性。
| 资产 | 路径 | 作用 | 第三方依赖 |
|---|---|---|---|
| 增益与档位引擎 | bin/augment.py |
--map(领域→顾问 + 可用性)/--plan(增益清单 + 章节配额 + 页级骨架)/--check(防注水体检)/--render-profiles |
无(仅标准库) |
| 增益映射(事实源) | references/augment-map.json |
20 领域 → 增益顾问(含科研学术的 econ 子路由)、契约三不、通用增补包 GAP | 无 |
| 篇幅档位(事实源) | references/length-profiles.json |
五档区间 / 章节配额 / 每页密度 / 版式配比 / 必备·禁用 / 防注水阈值 | 无 |
| 人读协议 | references/content-augment.md |
增益契约、GAP 六项、三态开关、档位与防注水 | 无 |
| 人读档位表 | references/length-profiles.md |
由 bin/augment.py --render-profiles 按需生成(包内不预置) |
无 |
内容增益的角色(硬边界):内容主体始终由本技能按领域纵向骨架撰写;外部内容技能只做三件事——给质料(事实/证据/文献/口径)、做校验(覆盖度/一致性/可追溯性)、提质疑(反方视角/替代解释/失效条件)。契约三不:不改结构骨架、不改视觉配置、不改收口执行器(辅助技能永远不得成为页面正本,守 R2 单点收口)。其输出须经本技能翻译进 spec 的 notes/evidence/source 字段,不得直接成为正文。
无专用技能的领域(20 个里占 15 个):直接走通用增补包 GAP 六项(G1 断言—来源配对 / G2 覆盖度矩阵 / G3 数字三性 / G4 术语一致 / G5 反方视角 / G6 缺口标注),并由模型侧全网检索补料。任何情况下不得声明"需要安装某某技能才能做",缺失只标注、不阻断。
0.6 公式 / 图表 离线渲染(独立完整状态下的显示保障)
> 用户要求「要完整显示公式(可边界模式)和推导过程;如涉及公式/图表/图形/图例等无法正常表现的,须解决,并将解决方案一并纳入技能包,使该技能在独立完整状态下仍能正常显示相关公式图表等」。本小节即该解决方案的固化。
问题:deck spec 是 JSON 纯文本,无法直接表现数学公式(如 Δu = u₂₀₂₆₋₀₉ − u₂₀₂₆₋₀₈)、复杂图形、图例等;若只写文字,观众看不到公式本貌,违反 R2「原生可编辑优先于视觉效果」的底层诉求,也无法满足"完整显示公式与推导过程"的硬要求。
解决方案(构建期渲染、双端嵌入):
1. 渲染:bin/render_assets.py 在构建期把 spec 里的 formula 字段(mathtext 子集)或 svg 字段渲染为透明背景 PNG(公式用 matplotlib mathtext;图表因已知数据,走原生 chart/gallery 版式重绘,无需栅格化)。
2. PPTX 嵌入:make_pptx.py 的 add_image 用 contain 等比缩放(Pillow 可选,缺失回退原拉伸),公式/图表 PNG 不变形。
3. HTML 嵌入:make_html.py 对本地图片(含公式 PNG)做 base64 内联——HTML 仍是单文件自包含、断网可用,不再依赖外部文件路径。
独立性保障:
- 整条链路不依赖任何第三方技能(workbuddy-pptx / huashu-design / 等)。
- 公式渲染仅需可选装 matplotlib(pip install matplotlib)——这是通用 Python 库,不是 AI 技能包;装好后完全离线可用。
- cairosvg 缺失时 render_svg 给出替代方案(HTML 直接内联 SVG / 原生 chart 重绘 / 作者自备 PNG),不阻断。
用法:
# 渲染若干公式到透明 PNG(透明背景,dpi=200)
python bin/render_assets.py --math "$\Delta u = u_{2026-09} - u_{2026-08} = 4.2\% - 4.1\% = +0.1\,\mathrm{pp}$" \
--math "$\mathrm{gap} = u_{2026-09} - \bar{u}_{1948-2026} = 4.2\% - 6.30\% = -2.10\,\mathrm{pp}$" \
--out-dir assets --prefix f
# 扫描 deck.json:自动渲染含 formula / svg 字段的页并回写 spec
python render_assets.py --from-spec deck.json --out-dir assets --rewrite
> bash 调用提示:公式字符串请用单引号包裹(双引号会让 bash 吞掉 \ 反斜杠与 $,导致 mathtext 解析失败);render_assets.py 内部已对 \_/\text/\,/$ 做规整,传入 \Delta u = ... 或 $\Delta u = ...$ 均可。
与 §0.3 诚实边界的关系:公式/图表 PNG 渲染是"可选依赖"能力——装好 matplotlib 即解锁,未装不影响其余全部功能;它不属于 §0.3 列出的"不可封装项"(think-cell 商业图表),后者缺失时仍标注"通用图表"。详细机制与排错见 references/formula-chart-rendering.md。
1. 输入端与领域判定
> 完整细则见 references/intake-protocol.md。一句话纪律:输入端只做分析与复述,不做生成;未经用户确认的路由结论不得推进到创作。
1.1 两条输入分支(先分流,再处理)
| 分支 | 触发条件 | 本技能的动作 |
|---|---|---|
| S 有素材 | 有明确目标任务 且 提供了素材(文件/URL/粘贴文本/PDF/DOCX/表格/图片) | 自主检视素材语义 → 判定领域与路由 → 复述四段式卡片 → 等确认 |
| N 无素材 | 只有简要目标任务,未附素材 | 解析目标任务语义 → 全网搜索语义相关预选素材(3–5 条,标来源+时点)→ 组织成 2–3 套可选内容方向 → 复述 → 等确认 |
混合情形(给了素材但不完整)→ 按 S 处理,缺口列在卡片第 ③ 段,由用户决定补齐还是授权代搜。
1.2 复述确认(硬确认 + 放行口令)
四段式卡片(intake.py --card --goal "..." --materials ... 出骨架,模型填语义):
① 素材清单与类型判定 / ② 语义摘要(映射到目标任务) / ③ 缺口与前置资产 / ④ 路由结论(含一个备选)。
- 默认阻断推进,输出卡片后停下等回应。
- 回「继续 / 按你说的办」→ 按推荐项执行;回具体修改 → 调整后复述变化部分再确认。
- 弱命中必须并列候选:
--classify置信=弱(仅 1 个触发词)时并列 Top2–3 让用户点选,不得只报一个。
1.3 领域判定(4 个认知范式 + 20 个领域)
python bin/intake.py --classify "<目标任务>" [--top 3] [--json]
python bin/intake.py --list-domains # 列出内置 20 领域 + 自训练领域与复用次数
python bin/intake.py --card --goal "..." --materials a.pdf b.xlsx # 生成确认卡片
- 上层 4 范式(论证—决策 / 证据—验证 / 合规—问责 / 说服—发布)决定结构纪律;下层 20 领域可扩展:金融投资、科研学术、政务与公共管理、产品发布与品牌、医疗健康、教育教学与培训、法律与合规法务、制造与供应链、能源电力与双碳、消费零售与电商、房地产与建筑、互联网与人工智能、战略与管理咨询、人力资源与组织、财务审计与内控、招投标与方案应答、农业农村与乡村振兴、文化传媒与文旅、保险与财富规划、公益非营利与 ESG。
- 每领域给出:触发词表、主/辅范式、纵向骨架
spine、验收红线、术语表、是否强制来源行。 - 多义触发词跑
bin/intake.py --render-registry生成人读版后查其消歧表,或直接查domains.json;消歧不了就并列候选给用户。
1.4 未命中 → 新建领域(实时交互 + 自动沉淀)
① 解析目标任务(谁读/要他们做什么/成功证据)+ 全网搜索足量素材
→ 复述【解析方向 + 搜索结果】请用户确认
② 实时交互敲定领域卡:名称/主范式/触发词/纵向骨架/验收红线/术语
③ 按确认后的领域创作(大纲确认复用工作流步骤 4,不新增检查点)
④ 完成后:查重 → 通过后自动登记 → 回执给用户(可改名/驳回/合并到某现有领域)
三个交互点:① 解析结论确认 → ② 大纲确认 → ③ 入库回执确认。
1.5 查重三通道(总分 = 范式 30 + 骨架 40 + 触发词 30)
| 通道 | 满分 | 算法 |
|---|---|---|
| 范式 P | 30 | 主范式相同 30;仅辅/变体同向 10;不同 0 |
| 骨架 S | 40 | spine token 的 Jaccard ≥0.60 得满档,否则线性折算 |
| 触发词 T | 30 | 重叠率(交集/较小集合)≥0.30 得满档,否则线性折算 |
| 总分 | 判定 | 动作 |
|---|---|---|
| ≥70 | MERGE 近似 | 拒绝新建:只输出"向现有领域 X 追加触发词/骨架/红线"的建议清单 |
| <70 且主范式相同 | VARIANT | 建为现有领域下的 variant,记录 parent |
| <70 且主范式不同 | NEW | 新建顶级领域 |
> 推论(须知):范式相同即 variant,故 4 个范式各有领域后,绝大多数新领域落成 variant(层级下沉、能力照常沉淀),顶级领域只在某范式下确无同类时新增。这是刻意的收敛设计。
自动登记与晋升:--propose-domain 拒绝 MERGE(须 --force-new 并写理由才强制,留痕)→ 登记后 reuse_count=0,此后 --classify 命中自动 +1 → 累计 ≥3 次 --promote <id> 晋升为一等领域(写入 domains.json 并重渲染 registry)。只写领域卡七字段 + 精简 skeleton,不写本次 deck 的具体内容(防啰嗦)。
1.6 篇幅档位(输入端必问项)
> 用户要求「按简洁版 20–30 / 适中版 30–50 / 详细版 50–80 / 加长版 80–150 / 超长版 150–300 页设置选项,供用户选择确认后再组织相应内容与结构」。
| 档位 | 页数 | 默认 | 重点 |
|---|---|---|---|
concise 简洁版/简报版 |
20–30 | 24 | 只讲结论,背景与方法压缩到最小 |
standard 适中版 |
30–50 | 40 | 结论 + 关键数据/信息详细解析 |
detailed 详细版 |
50–80 | 64 | 各章节结论细节 + 关键数据解析 + 图表公式重点演绎 + 多角度表现 |
extended 加长版 |
80–150 | 110 | 前情细节 + 目的 + 环境分析回顾 + 上述全部详细演绎 |
ultra 超长版 |
150–300 | 200 | 每一部分都极其详细解析;硬上限 300 页,超出须拆册 |
确认机制:与 §1.2 同为硬阻断 + "继续"放行口令,默认 standard(40 页)。用户可直接说页数("我要 72 页")或档位名。档位确认后由脚本出章节配额:
python bin/augment.py --plan --domain academic-research --length detailed --pages 64 --goal "..."
python bin/augment.py --check deck.json # 成稿后防注水体检
两层叠加:章节名与顺序由领域纵向骨架(spine)决定,每章页数由档位配额决定——不为 20 个领域各写一套配额(避免 100 份模板膨胀)。每档另给每页密度(要点数/字数上限/图表页与数据页最低占比)、版式配比、必备项与禁用项。
spec 字段:length_profile: {"profile": "detailed", "target_pages": 64};--check 优先读它,--profile 可覆盖。
防注水(机械校验,合计问题页 >15% 判不合格):无主张页 ≤10%(标题只是名词短语)、重复主张页 ≤5%(标题与前文重复或 Jaccard ≥0.70)、无来源页 ≤10%(含数字/断言但无来源行)。页数越出档位区间亦判不合格并给出应增删页数。宁可下调档位,也不靠注水凑页数。
管:从零创建 PPT 的全部请求。触发词全量收录(含"汇报/演讲/展示"等广义词)——非 PPT 请求会被领域判断分流并声明退出,代价仅一次声明;漏收录才会真正丢失请求。
不管:
- 编辑/改版既有本地 PPT 文件 → 转 workbuddy-office-routing(既有编辑通道)
- 书面汇报、演讲稿、Word/PDF 等非 PPT 文档 → 声明非本技能场景,按文档类技能处理
2. 七步工作流(检查点分级)
| 步骤 | 动作 | 检查点类型 |
|---|---|---|
| 0 输入端 | 分流 S/N:S 自主检视素材语义,N 解析任务语义 + 全网搜索预选素材;intake.py --classify 定领域 |
硬阻断:复述四段式卡片,经用户确认后才进入路由 |
| 0.5 篇幅档位 | 五档选择(§1.6),默认 standard 40 页 |
硬阻断:档位与目标页数经用户确认("继续"即按默认);确认后由 augment.py --plan 出章节配额 |
| 0.6 配色方案 | 四选项(见 §5.1):① 本域标准配色(默认)② 跨域/跨范式标准方案 ③ 上传参考配色(图片或 hex)④ 完全自定义(hex 列表);选择记入 spec.color_scheme_choice,生成器自动注入 spec.theme |
硬阻断:配色方案经用户确认后才进入领域判断/视觉配置("继续"即按本域标准);新建领域在 1.4 后补问 |
| 1 领域判断 | 4 个认知范式 + 20 个领域(§1.3);取纵向骨架、验收红线、术语表;未命中走 §1.4 新建领域 | 报告型:向用户复述判定结果与理由(弱命中须并列候选) |
| 2 路径路由 | 按第 3 节判据 1–6 顺序检查,命中即停 | 报告型:显式声明路由四要素——收口工具、规则顾问、think-cell 是否激活、R2 目标层级(L1/L2/L3 承诺) |
| 3 前置资产检查 | 涉及品牌/产品时:按 R7 核对 Logo/产品图/UI 截图/色值/字体;按 R6 核实事实性断言 | 条件阻断:缺项停下问用户,不静默糊弄 |
| 4.5 内容增益 | 按 augment-map.json 接入领域增益顾问(auto/on/off)+ 通用增补包 GAP 六项;补料与覆盖度校验 |
报告型:并入步骤 4 的大纲确认卡片一并复述,不新增检查点;顾问缺失只标注、不阻断 |
| 4 结构规划 | 章节关系(纵向可倒推 + 横向 MECE)、动作标题写法、页面密度;章节页数按 §1.6 档位配额 | 硬阻断:大纲经用户确认后才进入视觉配置 |
| 5 视觉配置 | 按第四至第七部分注入领域色彩/图表/公式/动画参数 | 报告型:色彩与图表选型说明推荐理由 |
| 6 逐页生成(双渲染) | 以单一 deck spec 为唯一内容正本,派发两个内置生成器分别渲染 PPTX 与 HTML;规则顾问以约束参数或验收清单形式参与,本技能不亲自生成 | 报告型:声明唯一正本身份(spec)与双交付形态 |
| 7 导出校验(双交付) | 反模式清单逐层检查(内容/视觉/AI slop/动态/交付)+ R2 层级核验 + 防注水体检(augment.py --check) + PPTX 与 HTML 两份产物校验(页数一致、可正常打开)+ 交付说明 |
报告型:验收结论随交付一并给出,交付说明须含 PPTX 与 HTML 双文件路径 |
3. 路由判据(硬规则,命中即停,不允许"让模型自由选择")
> 前置:进入判据链前必须已完成 §1 输入端(分流 + 领域判定 + 复述确认)。未经确认不得开始路由与生成。
按顺序检查,命中即停:
判据 1|交付格式硬需求:可编辑 PPTX 是否必须支持"逐元素深度编辑"(形状、文本框、图表均可独立修改且不依赖外部翻译层,即 L1)?
→ 是:路径 A 或 C1/C2a。否:进入判据 2。
判据 2|学术保真是否是第一优先级(来源可追溯、[MISSING] 门控、公式/引用不可栅格化)?
→ 是:路径 C(按判据 3 三选一)。否:进入判据 4。
判据 3|学术路径内部三选一:要原生可编辑 PPTX + 中文学术版式惯例/组件库 → C1(academic-skills,先完成仓库核实);要原生可编辑 PPTX + figure 驱动叙事 → C2a(research-slide);可接受 PDF + 保真门控第一 + 英文默认 → C2b(scholar-slides)。
判据 4|视觉方向本身是否是交付价值(品牌、发布、高端咨询、动画/视频),且接受 HTML 翻译型 PPTX 的可编辑边界(L2)?
→ 是且用户接受 L2:路径 B(huashu-design,可选引擎;其未安装时由内置生成器的 --mode l2 free 布局提供 L2 等价兜底,见 §0)。
→ 是但用户要求 L1 原生可编辑:路径 B 出局,回到路径 A(L2 不得冒充 L1,见第 7 节与第 12 节对比洞察)。
→ 否(内容/结构/数据为交付核心价值):回到路径 A(默认由内置生成器 L1 收口)。
判据 5|think-cell 是否可用(Microsoft Office + Windows/Mac VM 环境)?
→ 是:在路径 A 或 B 的导出后阶段激活 think-cell 作为增量增强层。否(WPS/LibreOffice):不激活 think-cell,图表由收口工具的原生能力承担,交付说明标注"通用图表,非 think-cell 专用图表"。
判据 6|技能身份核实:路由目标涉及 academic-skills 时,是否已确认仓库与 skill ID?
→ 否:先用 find-skills 检索候选、向用户呈现选项并确认,再继续路由。不凭名字猜测激活。
判据 7|双交付(输出形态:PPTX + HTML 同时产出)
> 硬规则(2026-10-18 确立):标准交付 = 同一份 deck spec 经两个内置生成器分别渲染出 PPTX 与 HTML,两份一并交付。HTML 不再是可选项,而是与 PPTX 并列的强制产出。
→ 默认且强制:bin/make_pptx.py(L1 原生 / L2 等价)→ PPTX;bin/make_html.py(12 套风格可选,仅标准库)→ 单文件自包含 HTML。两者共用同一 spec(自由版式坐标自动换算,无须改 spec)。
→ 特例(须显式声明):仅当用户在确认卡片中明确指定只要其一(如"只要 PPTX 打印""只要 HTML 大屏自播放"),才单交付;未指定的标准场景一律双交付,缺一不可。
→ HTML 零依赖路径在需要 frontend-slides 原生脚本(从既有 PPTX 抽取资源、图片预处理)且它确实已安装时方可路由过去——未安装不得声称需要它。
→ 交付说明须分别标注两种形态与各自层级:PPTX 的 L1/L2;HTML 标"HTML 演示",不参与 L1/L2 冒充。
> 公式/图表显示:双交付产物里的数学公式与图表已由 bin/render_assets.py 在构建期渲染为透明 PNG,分别经 make_pptx.py(contain 缩放)与 make_html.py(base64 内联)嵌入,HTML 仍保持单文件自包含。相关机制见 §0.6 与 references/formula-chart-rendering.md。
路径 A 执行器场景分流
> 默认收口执行器 = 内置生成器 bin/make_pptx.py(L1,零第三方依赖)。下列"可选引擎"仅在你已安装且需要其特定长板时启用;不安装时一律走内置生成器,功能不降级。
| 场景 | 默认收口执行器(必可用) | 可选替代引擎(须已安装) | 理由 |
|---|---|---|---|
| 从零新建(无既有材料),标准/自由版式、逐元素语义着色 | 内置生成器 L1(bin/make_pptx.py) | ppt-master(ai-ppt-skill)|workbuddy-pptx | 内置生成器支持 per-element 颜色(涨红跌绿)、图表、表格、画廊、自由版式,覆盖绝大多数场景 |
| 从既有材料重构页面(PDF / DOCX / URL / Markdown / 粘贴文本) | 内置生成器 L1(先把材料转为 deck spec) | ppt-master(ai-ppt-skill) | ai-ppt-skill 多格式输入 + 模板继承更省事,但非必需 |
| 需自由多栏/混排或逐元素语义着色(金融涨红跌绿、逐柱红绿) | 内置生成器 L1(chart 逐点着色 / free 布局) | workbuddy-pptx | 内置生成器原生支持逐点着色,无需 series 级限制 |
| 视觉/品牌/动画为第一交付价值且接受 L2 | 内置生成器 --mode l2(free 布局,L2 等价) |
huashu-design(浏览器渲染,支持渐变/视频/动画) | huashu 视觉自由度更高,但需装 Playwright+Chromium;内置 l2 零浏览器依赖 |
两条路都产出可编辑 PPTX;交付说明须标注实际执行器。可选引擎调用失败时不降级到另一个可选引擎(见第 7 节);但可回退到内置生成器(它本就是默认体,非"降级")。
路径速查
| 路径 | 默认收口执行器(必可用) | 可选替代引擎(须已安装) | 层级 | think-cell |
|---|---|---|---|---|
| A 原生工厂 | 内置生成器 L1(bin/make_pptx.py) | ppt-master / workbuddy-pptx | L1 原生 | 仅 MS Office,导出后增量增强 |
| B 审美工作室 | 内置生成器 --mode l2(free 布局) |
huashu-design | L2(等价 / 浏览器渲染) | 仅 MS Office,导出后替换式介入 |
| C1 学术 Office | 内置生成器 L1(保留 [MISSING] 占位) | academic-skills(需仓库核实+用户确认) | L1 原生 | 不进入 |
| C2a 学术 figure 驱动 | 内置生成器 L1 | research-slide | L1 原生 | 不进入 |
| C2b 学术保真 PDF | 内置生成器 L1(或导出 PDF) | scholar-slides | L2/L3(PDF 保真) | 不进入 |
4. 派发表(与现有技能的关系)
| 技能 / 资产 | 在本技能中的角色 |
|---|---|
| bin/make_pptx.py(内置生成器) | 默认收口执行器(必可用,零第三方依赖):L1 原生 / L2 等价;把 deck spec 渲染为可编辑 PPTX。所有路径的兜底体。 |
| ppt-master(ai-ppt-skill) | 路径 A 可选替代引擎(标准模板/材料重构场景);约束:固定 7 类版式、图表按 series 着色、8 类目色板须按 R3 覆盖、禁用 3D 图表(bar_3d/pie_3d/line_3d) |
| workbuddy-pptx(内置系统技能) | 路径 A 可选替代引擎(轻量新建 / 自由混排 / 逐元素语义着色场景) |
| huashu-design | 路径 B 可选替代引擎(HTML 优先,L2 导出);其反 slop 纪律与本技能反模式清单一致,但导出 PPTX 为 L2,不得标 L1;需 Playwright+Chromium |
| academic-skills / research-slide / scholar-slides | 路径 C 可选收口执行器(未安装时由内置生成器以 L1 兜底,保留 [MISSING]/[UNVERIFIED] 占位) |
| find-skills | 判据 6 的技能检索通道(academic-skills 多仓库消歧) |
| 内容增益顾问(academic-paper / econpaper-architect / research-report-standard / consulting-analysis / tender-bid / biaoshu-bailian / gcjc-bid-review / literature-retrieval / scientific-visualization / academic-paper-review / econ-indicator-reader / pkulaw 等) | §0.5 内容增益层:只做「给质料 / 做校验 / 提质疑」,非执行器、非正本;按领域映射与子路由接入(科研学术→academic-paper、经济学计量→econpaper-architect),无专用者走 GAP。缺失静默降级,不得声明需要它才能做 |
| workbuddy-office-routing | 既有本地 PPT 文件的编辑路由入口(本技能不拦截编辑类请求) |
| think-cell | 路径 A/B 的后置增强层(仅 MS Office,非 Agent Skill;未安装则标"通用图表") |
调用关系(自包含版):本技能被触发 → 跑领域判断与路由判据 → 默认由内置生成器收口(必要时叠加可选引擎的长板)→ 本技能跑反模式清单验收 → 交付。不依赖任何第三方技能即可完成全链路。
5. 元规则索引(全文见 references/design-system.md 第一部分)
| # | 规则 | 一句话 |
|---|---|---|
| R1 | 一页一主张 | 一页一个核心判断或一个核心数据事实;说不清就拆页,不压缩 |
| R2 | 原生可编辑优先于视觉效果 | L1 原生 > L2 翻译 > L3 栅格;不得以 L2/L3 冒充 L1 |
| R3 | 颜色承担语义,不承担装饰 | 每个非中性色必须回答"它标记了什么" |
| R4 | 动画用于控制信息出现的时机 | 去掉动画听众会提前读到不该读的内容吗?不会就去掉 |
| R5 | 结构先于风格 | 先章节关系、动作标题、证据链,后模板配色 |
| R6 | 事实践证先于假设 | 产品/版本/规格断言先检索验证,禁止凭记忆断言 |
| R7 | 品牌资产协议 | Logo/产品图/UI 截图优先于色值字体;禁 CSS 剪影替代真实产品图 |
> R3 落地提示(金融/数据场景):ai-ppt-skill 的 8 类别固定色板(如 汇报总结=#2C3E50)是装饰默认值,必须按领域语义覆盖——A 股复盘用「涨=红(#5A0E13) / 跌=绿(#177B57)」中国惯例;逐元素着色优先走 workbuddy-pptx(ai-ppt-skill 仅 series 级循环着色,难以逐柱红绿)。任意非中性色都要能回答"它标记了什么"。
> R3 × 领域标准配色方案:每个领域在 references/domains.json 的 color_scheme 提供一套语义色 token 标准方案(bg/fg/muted/accent + up/down/warn/brand…),生成器在 build 时按 spec.domain 自动注入 spec.theme(显式 theme 优先,向后兼容旧 spec)。关键界定:说服—发布 范式"整套只用一个品牌强调色"指一个装饰性/品牌强调色;up/down/warn/ok/anomaly 等语义色承载信息、不计入该纪律。体系与协调分层见 references/color-schemes.md;制作前用户可在 step 0.6 选择 标准 / 跨域 / 上传参考 / 自定义。
5.1 领域标准配色系统
- 两层架构:4 范式基色板(
paradigm_color_bases,结构层 + 用色纪律)+ 20 领域覆写(color_scheme,强调色 hue + 领域语义 token)。每个范式硬约束(如合规—问责单页文字色≤4、背景 1–2 色系;说服—发布单品牌强调色)是方案设计的上界,由bin/apply_colors.py --validate在生成前校验。 - 自动注入(自然状态出标准配色):
bin/make_pptx.py/bin/make_html.py的build()首步调用apply_domain_colors(spec);若 spec 已显式 authortheme(含 bg/fg/accent/colors 任一)则不覆盖。选择由spec.color_scheme_choice驱动:standard(用本域方案)/other:<key>(跨域)/custom/upload(用户自行管理 theme)。 - 协调分层(防冲突核心):领域方案 = 语义色 token(PPTX 与 HTML 共用);HTML 12 风格 = 表面/排版处理,仍可由
--style选,但 bg/fg/accent 被领域方案覆盖;huashu 20 设计哲学 = 可选"视觉方向"(非另一套配色);ai-ppt 8 类目色板 / think-cell 图表色 = 仅作结构参考,一律过 R3 语义覆盖。优先级铁律:领域方案 > HTML 风格预设(对 bg/fg/accent)。 - 制作前询问(step 0.6,硬阻断):四选项——① 本域标准配色(默认)② 从其他域/范式标准方案中选择 ③ 上传参考配色(图片或 hex)④ 完全自定义(hex 列表)。选择记入
spec.color_scheme_choice,生成器据此注入。 - 用户上传参考:hex 列表直接作为 custom 方案;图片走
bin/apply_colors.py --from-image(需 Pillow,缺失则优雅降级为"请给 hex"),默认覆盖整套方案 token,可指定仅取强调色。 - 工具:
bin/colors_lib.py(读/注入/校验/提色)、bin/apply_colors.py(--list/--show/--validate/--inject/--from-image/--base)、bin/intake.py --list-schemes。完整表与范例见references/color-schemes.md。
6. 反模式清单索引(全文见 references/design-system.md 第八部分)
四层组织,任何一条命中直接判为不合格:内容层(一页多主张、满屏数字无判断、数据无来源、逻辑断裂)|视觉层(图表炫技、对比度不足、字体不统一、单页超 4 色 + AI slop 六类)|动态层(切换超 1–2 种、动画超 0.50s)|交付层(L2/L3 冒充 L1、多正本、事实断言未验证)。
> 反模式清单对生成器的强制约束:① ai-ppt-skill 的 bar_3d/pie_3d/line_3d 属「图表炫技」,禁用;② huashu-design 经 export_deck_pptx.mjs 导出的 PPTX 为 L2,交付说明必须标注 L2,不得冒充 L1;③ 两生成器的配色若未过 R3(颜色承担语义)一律判不合格。详见第 12 节对比洞察。
AI slop 六类:激进紫色渐变 / Emoji 作图标 / 圆角卡片+左彩色 border accent / SVG 手绘 imagery / CSS 剪影替代真实产品图 / Inter 系 display 字体。唯一合法例外:品牌本身使用。
7. 失败处理(不降级,报告即止)
收口技能执行失败时:报告错误原因、保留已产出部分、列出用户可选的下一步,等用户决定。不自动切换到备选执行器重新生成——换执行器会产生第二个正本,正是单点收口纪律明令禁止的版本分裂风险。
8. 明确不做的事
- 不要求安装任何第三方技能才能工作(内置生成器即默认收口体)
- 不并行激活互相竞争的内容生成器(判据命中即停;内置生成器与可选引擎二选一,不并行)——但判据 7 的「双交付」例外:
make_pptx.py与make_html.py都是基于同一份 deck spec 的渲染出口,属单一内容正本的两种形态交付,不属于"多正本竞争",故必须同时运行、一并交付(HTML 为强制产出,非可选)。 - 不凭技能名字猜测激活 academic-skills(必须先 find-skills 检索仓库 + 用户确认)
- 不在 WPS 环境激活 think-cell(判据 5 前置检查)
- 不以 L2/L3 交付冒充 L1(交付说明必须显式标注层级;内置 l2 亦标 L2 等价)
- 不替代学术技能的保真门控([MISSING]/[UNVERIFIED] 占位机制在路径 C 中必须保留)
- 不跳过检查点直接产出(检查点是流程组成部分,不是可选项)
- 不让内容增益顾问接管创作或成为页面正本(§0.5 契约三不);辅助技能的建议与 R1–R7 冲突时以 R1–R7 为准
- 不靠注水凑篇幅(宁可下调档位);全长不超 300 页,超出须拆册
- 不因增益技能缺失而声明失败或阻断流程(静默降级到通用增补包 GAP)
- 不拦截编辑既有 PPT 的请求(转 workbuddy-office-routing)
- 不把内嵌的第三方设计数据(design-styles.md)当作"已安装 huashu-design"的证据——它只是数据底稿,引擎可缺
9. 验收标准(四件套)
每次任务输出必须包含:
- 领域判定结论——认知任务类型 + 判定理由 + 领域 key 与匹配置信(弱命中须列候选)+ 输入分支(S/N)与素材处置方式 + 篇幅档位与目标页数(实际页数 / 区间)
- 路由结论——收口工具、规则顾问、think-cell 可用性、R2 层级承诺
- 反模式验收结论——四层清单逐层核验结果 + 防注水体检结果(无主张 / 重复主张 / 无来源三类占比与总判定)+ 内容增益结论(用了哪些顾问、缺失哪些已降级 GAP、G1–G6 逐条结果)
- 交付说明——双交付声明(PPTX 与 HTML 两份路径,缺一不可;特例须注明"仅单交付"及原因)、层级声明(PPTX 的 L1/L2 显式标注;HTML 标"HTML 演示"不参与 L1/L2 冒充)、think-cell 不可用时标注"通用图表"、来源行完整性、实际执行器
另:同一 deck 的唯一内容正本 = deck spec(JSON);PPTX 与 HTML 是同一 spec 的两种渲染形态(双交付),不是两个竞争正本。如有后置增强,增强层可追溯(哪个工具、改了什么);涉及品牌时 brand-spec 类资产清单先行;涉及产品事实时先检索后断言。
10. references 与资产加载指引
| 需要什么 | 加载哪个文件 / 资产 |
|---|---|
| 输入端流程(S/N 分支、确认机制、新建领域、查重规则) | references/intake-protocol.md |
| 领域与触发词表(4 范式 + 20 领域) | references/domains.json(事实源,脚本读;人读版由 intake.py --render-registry 按需生成) |
| 内容保真·保质·保全(增益契约、GAP 六项、三态开关、防注水) | references/content-augment.md |
| 篇幅五档(区间/章节配额/密度/必备·禁用) | references/length-profiles.json(事实源;人读表由 augment.py --render-profiles 按需生成) |
| 领域→增益顾问映射与可用性 | bin/augment.py --map [--domain X](事实源 references/augment-map.json) |
| 元规则 R1–R7 全文、领域范式、结构纪律、色彩/图表/公式/动画参数、反模式清单全文 | references/design-system.md |
| 五个工具的能力图谱(优势/劣势详列)、采纳映射与可追溯性 | references/tool-provenance.md |
| 六大冲突识别、三条路径细节、路由判据全文、安全/危险组合禁区 | references/orchestration.md |
| 12 项不确定项与待办工程项、版本修订记录、本技能的创建决策记录 | references/open-questions.md |
| 多种风格可选的事实底稿(20 种设计哲学,内嵌自 huashu-design) | references/design-styles.md |
| 内置生成器(自包含产出 PPTX) | bin/make_pptx.py + README.md「Deck Spec 格式」 |
| 即开即用模板与复现样本 | examples/sample-spec.json(产物由 bin/make_pptx.py 一键重新生成) |
纪律:路由判据(第 3 节)与自包含使用(§0)已在本文件自包含,不必加载 references 即可完成路由与离线生成;领域参数与工具细节按需加载,不要预加载全部文件。
配套文档:README.md(技能总览 / 独立使用 / spec 格式 / 离线保证)、SETUP.md(依赖安装:Python + python-pptx 必需,Playwright 可选)、bin/make_pptx.py(生成器源码)。
11. 规范版本与同步
- 本技能纪律源自《完善版PPT设计指引(v2.0整合版)》(外部工具核实日期 2026-10-17)。
- references 各文件为该规范与实证档案的挂载;指引升版时由维护者手动重挂并同步各处版本戳,差异记入
references/open-questions.md的修订记录。 - 本技能相对规范的已知细化(场景分流、检查点分级、失败不降级、拦截范围)已记录在
references/open-questions.md的"技能创建决策记录"中——修订规范时须同步复核这些细化是否仍成立。 - v1.0.0(2026-10-18 定版):本技能首个正式版,合并内部迭代形成的全部能力,定位为自包含的全能 PPT / HTML 演示创作技能:① 输入端引擎(
bin/intake.py+references/domains.json4 范式 + 20 领域两层注册表 +intake-protocol.md)——S/N 两分支、四段式复述卡片硬确认、未命中走「新建领域」实时交互并自动沉淀(三通道查重 ≥70 拒绝近似、复用 ≥3 次晋升一等);② 内容增益层(bin/augment.py+augment-map.json+content-augment.md)——领域→增益顾问映射(含经济学 econ 子路由)、契约三不 + 通用增补包 GAP 六项,缺失静默降级;③ 篇幅五档(length-profiles.json:简洁 20–30 / 适中 30–50 / 详细 50–80 / 加长 80–150 / 超长 150–300,硬上限 300)+ 防注水体检;④ 多出口生成——bin/make_pptx.py(L1 原生 / L2 等价,渐变/图片/视频/动画/11 图表/free 六类元素)、bin/make_html.py(单文件自包含 HTML,内嵌 12 套视觉风格,仅需标准库)、bin/html2pptx.py(浏览器路径,可选 playwright)、bin/render_assets.py(公式/图表离线渲染为透明 PNG,双端嵌入、HTML 仍单文件自包含);⑤ 领域标准配色系统——references/domains.json的paradigm_color_bases(4 范式基色板)+ 20 领域color_scheme(语义色 token 标准方案),bin/colors_lib.py+bin/apply_colors.py注入/校验/提色,生成器build()首步自动注入(显式 theme 不被覆盖),制作前由 step 0.6 配色方案确认;⑥ 自训练接口(bin/ingest_training.py+training/,style/layout/structure/domain 四类素材);⑦ 独立性判据表(§0.3)与诚实边界声明。硬规则:标准交付 = 同一份 deck spec 经make_pptx.py与make_html.py双交付(PPTX + HTML 一并交付,HTML 为强制产出,非可选)。决策与实证档案见references/tool-provenance.md§9.6 系列与references/open-questions.md。
12. 生成器对比洞察(内置生成器 vs ai-ppt-skill vs huashu-design)
> 路由决策必须建立在真实能力边界上,而非技能名气。下方三者均可能作为收口执行器,差异直接决定路由落点。完整对比表、路由结论与实证案例见 references/tool-provenance.md §9.6 / §9.6.1;下方为自包含摘要。
一句话边界:
- 内置生成器 bin/make_pptx.py = L1 原生 / L2 等价(python-pptx,deck spec 驱动,零第三方依赖,支持逐元素语义着色、图表、表格、画廊、自由版式)。
- ai-ppt-skill = L1 原生(python-pptx,固定 7 类模板、图表按 series 循环着色、8 类别色板需按 R3 覆盖、禁用 3D)。
- huashu-design = L2 翻译(HTML 优先、导出 PPTX 为翻译型、自由版式+强反 slop、含动画/视频,需 Playwright+Chromium)。
核心路由结论(已固化进第 3 节判据 4 / 路径 A / §0):
- 默认走内置生成器:覆盖 L1 原生全场景;其 free 布局 + --mode l2 提供 L2 等价兜底(无需浏览器)。
- 要 L1 原生可编辑 → 排除 huashu-design(L2),落路径 A(内置生成器或可选 ai-ppt-skill/workbuddy-pptx)。
- 路径 A 内:标准模板化 / 从既有材料重构且已装 ai-ppt-skill → 可用其模板继承;需自由多栏混排或逐元素语义着色(如金融涨红跌绿、逐柱红绿) → 内置生成器(chart 逐点着色)即原生支持,无需 series 级限制。
- huashu-design 仅当"视觉/品牌/动画为第一交付价值、且已装 Playwright+Chromium、接受 L2"时启用;其「多种风格可选」的数据基础(20 种设计哲学)已内嵌为本技能 references/design-styles.md,随技能提供、不依赖 huashu 安装。
实证案例(均已端到端验证,详见 §9.6 / §9.6.1 / §9.6.2 / §9.6.3 / §9.6.4 / §9.6.5 / §9.6.6):
- 内容增益与篇幅档位验证(2026-10-18,§0.5/§1.6 落地,§9.6.6):bin/augment.py 实跑通过 --render-profiles(5 档 md)、--map(20 领域:13 个顾问可用、1 个缺失 pkulaw 属 MCP 连接器按设计降级、15 个领域无专用技能走 GAP)、--plan(科研学术 + 经济学语义 → 子路由命中并提升 econpaper-architect 为主顾问;64 页章节配额逐项加总为 64 无误差;页级骨架 1–64 连续无跳号)、--check(PASS 路径:26 页/无主张 3.9%/重复主张 3.9% 成功检出同义重复/无来源 0%;FAIL 路径:8 页样本对 concise 档判 FAIL 并给出"需增加约 12 页")。修掉三个仅实跑才暴露的 bug:格式化字符串 100% 未转义致 ValueError;子路由提升的技能不在 advisors 列表里故不显示;slide_text() 未收集 notes/source 字段导致来源页大量误报。
- 输入端引擎验证(2026-10-18,§1 落地,§9.6.5):bin/intake.py 实跑通过 --render-registry(20 领域 + 触发词反查表)、--list-domains、--classify(内置命中:A股复盘→金融投资 20 分、开题答辩→科研学术 30 分;自训练领域命中并自动累计复用;弱命中并列候选;冷门任务→UNMATCHED 转新建领域)、--check-dup(近似样本 100.0 分判 MERGE 并拒绝登记;宠物殡葬 34.0 分判 VARIANT)、--propose-domain → --classify×3 → --promote 全链路(晋升为一等领域并重渲染 registry,验证后已清理测试数据复位)、--card(S/N 两分支卡片)。修掉两个仅实跑才暴露的 bug:payload 双层嵌套导致新领域登记后检索不到;卡片素材名未插值。
- HTML 输出形态验证(2026-10,§0.1 落地,§9.6.4):同一份 spec 不经任何改造,直接由 bin/make_html.py 产出单文件自包含 HTML——sample-spec 8 屏(Bold Signal)、A股复盘 10 屏(Swiss Modern)、广告册 9 屏(Bold Signal);实测 CSS/JS 全内联(各 1 处 <style>/<script>)、含 100dvh/clamp/IntersectionObserver/@media print,外部引用仅字体外链(且配本地回落栈),坐标换算零越界。证明 HTML 出口在不装 frontend-slides、不装 Node/浏览器的前提下完整可用。
- 自训练接口验证(2026-10,§0.2 落地):bin/ingest_training.py 实测跑通 --validate → --add → --list → --scan → --get 全链路,4 类素材(style/layout/structure/domain)登记入库并可检索;修掉中文名 ID 塌缩 bug(CJK 被正则剥光导致多条素材塌成同一 id)。
- 两份老 deck 的复现验证(2026-10,§9.6.3):把原先分别由 workbuddy-pptx(L1 DSL)与 huashu-design(L2 HTML)产出的 A股复盘 10 页、广告册 9 页,改写为 spec 后用内置生成器重出,均内容级完全复现(含逐柱绿跌图表、20 风格画廊页 83 元素、来源行页码)。证明内置生成器可承接此前的外部引擎场景——这也是自包含化的最终闭环证据。
- 内置生成器自包含验证(2026-10,§0 落地):examples/sample-spec.json(title/bullets/chart/table/gallery/twocol/free/closing 八版式)经 bin/make_pptx.py 在 l1 与 l2 两种模式各产出 8 页有效 PPTX,全程未调用任何第三方技能,仅依赖 python-pptx。证明本技能组合自身完整、可在无外部技能环境独立交付。沉淀见 §9.6.2。
- A股周度复盘 deck(2026-10,路径 A):需自由多栏 + 逐元素涨红跌绿 → 当时路由落 workbuddy-pptx(L1);此类场景现已可由内置生成器原生承担(chart 逐点着色)。
- 广告公司多风格宣传册 deck(2026-10,路径 B):用户要「广告宣传画面组合 + 多种风格可选」→ 路由落 huashu-design(L2),9/9 页成功导出可编辑 PPTX;首跑需装 playwright+pptxgenjs+sharp 及 chromium 浏览器,且 HTML 须遵守 4 条硬约束(无渐变/文字进 p-h 等)。验证细节见 §9.6.1。