Install
openclaw skills install @43622283/li-cyberppt-modMulti-platform AI Agent Skill for generating evidence-based, editable, consulting-style PowerPoint presentations. Transforms documents (DOCX/PDF/TXT/XLSX) into high-density PPTX with strict quality gates, evidence chains, and visual QA. Supports OpenCode, OpenAI Codex, Hermes, OpenClaw, and Anthropic/Claude platforms.
openclaw skills install @43622283/li-cyberppt-mod将源材料转化为有证据链、结论先行、可编辑的咨询式演示文稿。使用 MBB 级标准审视证据、论证和页面架构。保留证据可追溯性,设置确认门,并以渲染结果而不是文件生成作为完成判断。
CyberPPT 支持多种 AI Agent 平台,实现跨平台的一致性体验。每个平台都有专门的配置文件,位于 agents/ 目录下。
| 平台 | 配置文件 | 状态 | 说明 |
|---|---|---|---|
| OpenCode | agents/opencode.yaml | ✅ 已验证 | 完全支持,推荐使用 |
| OpenAI Codex | agents/openai.yaml | ✅ 已验证 | 原生支持,完全兼容 |
| Hermes | agents/hermes.yaml | ✅ 已支持 | 完全兼容 |
| OpenClaw | agents/openclaw.yaml | ✅ 已支持 | 完全兼容 |
| Anthropic/Claude | agents/anthropic.yaml | ✅ 已支持 | 完全兼容 |
| 通用平台 | agents/generic.yaml | ✅ 已支持 | 适用于自定义平台 |
OpenCode:
# 安装到 OpenCode skills 目录
git clone https://github.com/crazyykhllc-bit/CyberPPT.git "$HOME/.opencode/skills/cyber-ppt"
Hermes:
# 安装到 Hermes skills 目录
git clone https://github.com/crazyykhllc-bit/CyberPPT.git "$HOME/.hermes/skills/cyber-ppt"
OpenClaw:
# 安装到 OpenClaw skills 目录
git clone https://github.com/crazyykhllc-bit/CyberPPT.git "$HOME/.openclaw/skills/cyber-ppt"
OpenAI Codex:
# 安装到 Codex skills 目录
git clone https://github.com/crazyykhllc-bit/CyberPPT.git "$HOME/.codex/skills/cyber-ppt"
所有平台支持统一的触发关键词:
每个平台的配置文件包含:
interface:
display_name: "CyberPPT"
short_description: "生成基于证据、可编辑的咨询风格 PPT"
default_prompt: "使用 $cyber-ppt,把我的源文档转成高密度、可编辑的咨询风格 PPT。"
skill_type: "presentation_generation"
version: "1.0.0"
compatibility:
platforms:
- [平台名称]
min_version: "1.0.0"
configuration:
trigger_patterns: [...]
file_types: [...]
output_format: ".pptx"
workflow: [...]
quality_gates: [...]
如需为新的 Agent 平台添加支持:
agents/generic.yaml 为 agents/[平台名].yamlcompatibility.platforms 字段configuration 部分| 阶段 | 必须产出 | 停止条件 | 读取 |
|---|---|---|---|
| 1. 分析 | MBB 标准证据表、冲突记录、内容脑暴子步骤、SCR 论证、逐页大纲、图表计划、页面信息密度和组件清单 | 第一次确认:用户批准故事线、页数、大纲、每页信息结构和密度目标 | references/source-analysis.md, references/storyline.md |
| 2. 蓝图 | 8 种视觉风格、选定风格、覆盖全部请求/计划页数的逐页 ImageGen 蓝图 | 第二次确认:用户批准视觉方向和全部页面蓝图 | references/visual-system.md |
| 3. 混合还原 PPTX | 采用“复杂视觉保真 + 主要文字可编辑”的混合还原策略,输出 PPTX、全页渲染图、对照检查和可编辑性说明 | 最终确认:用户批准可编辑 PPT | references/ppt-production.md, references/quality-assurance.md |
未经确认不要跨过确认门。用户要求修改时,回到对应阶段修订并重新确认。
每个阶段开始前必须读取上表“读取”列中的全部 reference 文件,并把该阶段关键约束转成执行清单后再行动。不得只根据主文件摘要、记忆、既有脚本或上一轮经验执行。
source-analysis.md 和 storyline.md 后再产出证据表、内容脑暴、SCR、逐页大纲和页面信息密度清单。visual-system.md 后再生成风格样张;默认必须逐项使用固定 8 种 CyberPPT 视觉风格,不得用扩展风格替代,除非用户明确要求替换。visual-system.md,声明锁定的风格编号、色板、网格、标题层级、图表语言和信息密度规则,防止逐页生成时风格漂移。ppt-production.md 和 quality-assurance.md 后再生成 PPTX 和渲染检查。第一步不是“读完材料后给一个单版大纲”。它要先把源材料变成可审计的证据底表,再用脑暴发散多条可选故事线,最后收敛成 SCR、逐页大纲、图表计划和页面信息密度规则。
第一次确认必须包含:
第二步不是文字风格选择,也不是只写一份样式说明。它分成两个子阶段:先实际展示 8 张固定 CyberPPT 视觉样张供用户选择,再按选定风格和第一步确认的页面密度生成完整页数的逐页 ImageGen 蓝图。
visual-system.md。assets/palette-samples/palette-01.png 到 palette-08.png;如果重新生成,也必须交付 8 张真实图片。stage2_style_options.md 作为风格确认物。slide_content_lock,用第一步确认的真实文本、数据、表格结构、SO WHAT、证据 ID 和必需组件锁定页面内容。第三阶段必须从该锁定文件填入真实内容,不得重新解释源材料、删减组件或降低信息密度。language_overrides,并只在对应范围内使用覆盖语言。不得因为局部英文要求把整套蓝图改成英文。target_language、language_source、effective_language、language_overrides 和 allowed_foreign_terms 是执行元数据,只能写在蓝图记录、prompt 说明、manifest 或 QA 记录中,不得作为页面可见文字出现在蓝图画面或最终 PPT 中。blueprint_component_signature,记录组件类型、组件结构、子组件和对应内容锁定引用。第三阶段只能读取,不得重写、放宽或临时补签名。visual_element_registry,登记蓝图中全部可见元素的 bbox、类型、优先级、所属组件和容差。P0/P1/P2 只决定容差和失败等级,不决定是否可以跳过测量。slide_content_lock、blueprint_component_signature 和 visual_element_registry 必须记录文件路径和 SHA-256;第三阶段 manifest 只能引用冻结结果,不能自行改写。slide_content_lock;每页蓝图确认后冻结 blueprint_component_signature 和 visual_element_registry,并记录路径、SHA-256、页面角色、复杂视觉资产区域、可编辑文本区域、原生组件清单、证据 ID 和预期信息密度。第二次确认必须包含:
slide_content_lock、blueprint_component_signature、visual_element_registry、组件清单、可编辑文本区域、复杂视觉资产区域、证据 ID 和密度目标;stage2_style_options.md 或文字描述让用户选风格。python-pptx 外,这些工具只能用于 prompt 管理、metadata、QA、对照图、第三阶段非生成辅助或用户明确跳过 ImageGen 后的辅助流程;python-pptx 不得用于第三阶段正式 PPTX 生成。imagegen_skipped_by_user=true、用户提供的模板/截图/品牌指南/视觉规范路径和替代依据;不得声称该页是 ImageGen 蓝图。visual_element_inventory_targets 和 blueprint_measurement_targets 只是第二阶段记录 metadata,用于第三阶段还原准备;不得因此把蓝图降级成脚本草图、线框图、默认卡片页或低保真 dashboard。采用“复杂视觉保真 + 主要文字可编辑”的混合还原策略。最大优先级是保留原图的整体设计质感、构图、视觉完成度和高级感,同时保证主要文字内容可以在 PPT 中直接编辑。不要把整页简单铺成一张背景图。
pictures=0;否则必须逐项说明图片、SVG、custom geometry 或 freeform 资产的必要性。blueprint_reconstruction_plan,拆解蓝图的版式、密度、表面系统和锚点。没有该记录不得生成该页。进入第三阶段并等待用户确认时,必须在显眼位置说明:
接下来不是一次性生成完整 PPT,而是逐页制作、逐页验收。 这样做是为了避免 AI 在批量生成时注意力分散,导致信息密度下降、曲线/图标/文字位置漂移、背景表面系统不一致和视觉语义丢失。 每页确认通过后才进入下一页;全部页面通过后,再用已通过的单页 PPTX 合并成完整 deck,并进行合并后回归验证。
第三阶段默认必须逐页执行,不得一次性生成完整 deck 作为终版。
每页必须按顺序执行:
blueprint_reconstruction_plan;complex_visual_scan;当前页未通过前,不得制作下一页。当用户要求“高保真”“1:1”“按蓝图还原”“正式交付”“精确还原”时,第三阶段禁止一次性生成 2 页以上作为终版。一次性生成多页只能标记为 rough draft,不得标记为 CyberPPT 合格终版。不得先批量生成完整 PPTX,再事后补写 manifest、visual QA 或 side-by-side 来伪装为逐页验收;visual QA 必须基于当前页实际渲染结果即时生成。
最终完整 PPTX 必须由已经逐页验收通过的单页 PPTX 合并得到。
合并阶段不得重新运行页面生成脚本重建页面、不得重新排版、不得重新绘制图表、不得重新套用背景、不得将单页渲染图作为整页背景、不得用截图替代已通过的原生对象页面。
合并阶段只能导入已验收通过的单页 PPTX 页面,并尽量保留原页面 XML、主题、背景、形状、文本、图表、SVG/custom geometry 和关系文件。合并后必须导出 PNG 做回归验证;这里的渲染只是 QA,不是重新制作页面。
合并后的每一页必须和对应的已验收单页渲染图进行对照。如果出现背景色变化、页面尺寸变化、对象偏移、字体变化、图片丢失、SVG 变形、图表错位或信息密度下降,则合并失败,必须修复合并流程,而不是重新生成页面。
结构可编辑 和 视觉还原 是同等硬门槛,不是二选一,也不得互相覆盖。最终 PPTX 必须同时满足“信息结构可编辑”和“视觉语义高保真”。
硬性判定:
pictures=0 但关键图表形态、曲线幅度、面板逻辑、底色系统或视觉语义明显不符合蓝图,仍然失败。qa_expectations 必须声明 dual_gate_required: true、visual_semantics_required: true 和 all_key_text_editable: true;缺失即视为第三阶段失败。visual_qa_gate.json 必须分别给出 editable_information_layer_pass 和 visual_semantics_preserved。任一为 false,deliverable_allowed 必须为 false。pictures=0 不是第三阶段目标,也不是视觉合格证明。
第三阶段目标只有两个同等硬门槛:
无复杂视觉资产的页面,应优先使用 PowerPoint 原生对象重建,最终通常可能达到 pictures=0。
但当蓝图中的照片、官方素材、复杂纹理、复杂插画、复杂图标、流线、异形边界、复杂弧线、非标准图表形态或非文字视觉资产构成视觉语义时,必须触发资产准入门或精确追踪门,并选择能同时保留视觉语义与主要信息可编辑性的方案。可使用小范围无文字图片、SVG path、custom geometry 或高密度 freeform;不得让图片/SVG 承载主要文字、关键数字、图表标签、SO WHAT、页眉页脚或来源。
不得为了 pictures=0:
第三阶段正式 PPTX 页面必须使用 PptxGenJS / pptx-generator 生成。PptxGenJS 是承载和排版引擎,用于放置原生文本、矩形、表格、基础线条、图表组件、已追踪 SVG path、PPT custom geometry 和高密度 freeform;它不是把复杂视觉降级为 PowerPoint preset shape 的许可。
第三阶段正式 PPTX 生成一律禁止使用 python-pptx。无论 PptxGenJS 是否报错、PowerPoint 是否打不开、任务是否紧急、页面是否简单,都不得切换到 python-pptx、HTML 转 PPT、截图转 PPT 或其他生成引擎。
每页 manifest 必须记录 generation_engine.tool="pptxgenjs" 或等价 pptx-generator,并声明 visual_fidelity_not_reduced=true。generation_engine.tool 为 python-pptx、python_pptx、html-to-ppt、screenshot-to-ppt 或其他正式生成引擎,均视为第三阶段失败。
当蓝图中存在曲线、弧线、扇形、环形缺口、流带、异形边界、非矩形区域、复杂图标轮廓或用户要求 1:1 的几何敏感视觉时,必须优先使用 SVG path、PPT custom geometry 或高密度 freeform 还原。
第三阶段涉及通用图标、徽章、节点内符号、SO WHAT 图标或解释栏图标时,必须优先从 assets/icons/ 选择已验证 SVG 图标,不得临时手写复杂 SVG 图标。使用图标库是为避免断线、不连续、路径粗糙和风格漂移;图标不要求与 ImageGen 蓝图里的随机图标完全一致,但必须语义近似、风格统一、线宽/填充一致,并进入 visual_element_registry 做坐标反测。
图标库使用规则:
chunk-filled、tabler-filled、tabler-outline 或 phosphor-duotone。不得混用多个通用图标风格。simple-icons 只允许用于真实品牌、公司、产品或服务 logo,不得用作普通概念图标的替代。scripts/select_icon.py search --index assets/icons/index.json --query "<keyword>" --library "<library>" 搜索候选;不要读取整个图标库。icon_id、source_library、semantic_meaning、svg_path、viewBox 和 powerpoint_render_verified。blueprint_bbox_px、ppt_target_bbox_in、render_bbox_px、delta_px 和 tolerance_px;不得因为使用图标库跳过空间注册。只有图标库中没有语义近似图标时,才允许 custom_icon_required=true,并按 SVG path / custom geometry 精确追踪门执行。不得为了“更像蓝图”临时手写断裂、粗糙或不可渲染的复杂图标 SVG。
不得用 PowerPoint preset shape 替代精确追踪结果,包括但不限于:
pie;arc;blockArc;chord;moon;wave;SVG path、PPT custom geometry 和高密度 freeform 是几何敏感视觉的优先实现方式。pictures=0、可编辑性、PptxGenJS 原生对象或 PowerPoint preset shape 都不能覆盖该门槛。
复杂 PowerPoint preset shape 默认不得进入正式页面。只有同时满足以下条件才允许:
否则必须改用 SVG path、custom geometry、高密度 freeform 或稳定原生对象组合。
每页 PPTX 生成后,必须用 PowerPoint 打开并导出 PNG。只有完整页面 PPTX 能被 PowerPoint 打开并成功导出当前页 PNG,才允许进入 visual QA、manifest approved 状态和用户确认。ZIP/结构预检通过不等于 PowerPoint 兼容通过。
如果 PowerPoint 无法打开页面,必须按顺序执行:
不得在完成对象隔离前切换生成引擎;不得在任何情况下切换到 python-pptx。
兼容性定位过程中产生的空白 PPTX、半成品 PPTX、分组测试 PPTX 和对象隔离 PPTX,只能命名为 isolation-* 或 compat-test-*,只能用于定位问题。
这些文件不得命名为 slide-XX.pptx,不得写入 manifest,不得进入 visual QA,不得给用户确认,不得作为最终页面或合并来源。只有完整蓝图页面通过 PowerPoint 打开和渲染后,才能写入 pages/slide-XX.pptx。
制作每页 PPTX 前必须先建立图片资产准入表;没有准入表不得开始生成该页。
| 区域 | 默认是否允许图片 | 判定 |
|---|---|---|
| 标题、副标题、正文、关键数字、页脚、页码、SO WHAT | 否 | 主要信息层,必须可编辑 |
| 折线图、柱状图、坐标轴、标签、对比条、简单流程箭头、基础表格 | 否 | 简单图表/基础图形,必须原生重建 |
| 照片、官方 Logo、产品 UI、复杂插画、复杂纹理、3D、玻璃拟态、光影材质 | 可 | 原生重建会明显降质时才允许 |
| 大面积或整页蓝图截图 | 否 | 蓝图是参考,不是交付背景 |
每个图片资产都必须记录:来源、保留原因、覆盖区域、是否牺牲可编辑性。若无法给出必要性,改用原生对象重建。
第三阶段每页进入 PPTX 生成前必须先写 slide_manifest.json,并在生成后按实际 PPTX 更新。没有 manifest、manifest 缺页、manifest 字段不完整,均视为第三阶段失败,不得交付确认。
每页 manifest 必须至少包含:
{
"slide": 2,
"role": "Situation",
"layout_reference": "blueprints/slide-02.png",
"generation_engine": {
"tool": "pptxgenjs",
"fallback_reason": null,
"visual_fidelity_not_reduced": true
},
"page_execution": {
"mode": "single_page",
"single_page_pptx_path": "pages/slide-02.pptx",
"blueprint_render_path": "blueprints/slide-02.png",
"ppt_render_path": "renders/slide-02.png",
"side_by_side_path": "qa/slide-02-side-by-side.png",
"local_comparison_artifacts": [
"qa/slide-02-title-crop.png",
"qa/slide-02-main-chart-crop.png",
"qa/slide-02-so-what-crop.png"
],
"page_status": "approved",
"user_confirmed": true,
"made_before_next_slide": true
},
"blueprint_reconstruction_plan": {
"blueprint_path": "blueprints/slide-02.png",
"canvas_size": "16:9",
"background_color_sample": "#F3F4EF",
"surface_system": "continuous paper with subtle panels",
"layout_regions": ["title", "main_chart", "right_evidence", "so_what"],
"header_footer_system": "page badge, source footer",
"so_what_region": "bottom band",
"main_chart_semantics": "line chart with evidence callouts",
"density_targets": "high-density consulting page",
"anchor_targets": ["title baseline", "chart origin", "right panel edges"],
"native_rebuild_targets": ["title", "labels", "chart", "so_what"],
"allowed_visual_assets": [],
"complex_visual_scan": {
"completed": true,
"complex_visual_candidates": ["line chart callouts", "subtle panel system"],
"triggered_gates": ["spatial_registration"],
"native_only_rationale": null,
"pictures_zero_is_not_goal": true
}
},
"expected_pictures": 0,
"image_assets": [],
"text_objects": [
{
"id": "page_title",
"role": "T2",
"text": "页面主标题",
"font_size_pt": 24,
"editable": true
}
],
"native_components": [
{
"id": "main_chart",
"type": "line-chart-shapes",
"reason": "简单折线图,必须原生重建"
}
],
"qa_expectations": {
"pictures_must_be_zero": true,
"all_key_text_editable": true,
"typography_scale_required": true,
"dual_gate_required": true,
"visual_semantics_required": true,
"visual_qa_required": true,
"spatial_registration_required": true,
"container_overflow_check_required": true,
"continuous_text_flow_check_required": true,
"table_semantic_typography_required": true,
"table_density_check_required": true
}
}
硬性判定:
complex_visual_scan 并确认无复杂视觉资产、无资产准入门和无精确追踪门时,expected_pictures 才可设为 0,image_assets 才可为空数组。expected_pictures = 0 或 pictures_must_be_zero = true,最终 PPTX 中该页 pictures > 0 即失败;但不得把 expected_pictures = 0 或 pictures_must_be_zero = true 当作目标,也不得因此主动避免触发复杂视觉门。blueprint_reconstruction_plan.complex_visual_scan 必须记录扫描完成状态、复杂视觉候选、触发门、native-only 理由和 pictures_zero_is_not_goal=true。缺失或不完整即失败。generation_engine 必须记录 PPTX 生成工具和 visual_fidelity_not_reduced=true;第三阶段正式 PPTX 生成必须使用 PptxGenJS / pptx-generator,任何 python-pptx、HTML 转 PPT、截图转 PPT 或其他生成引擎均失败。page_execution 必须记录当前页单页制作、渲染、side-by-side、局部对照、用户确认和“确认后才进入下一页”的状态。缺失或不是 mode=single_page 即失败。page_execution.page_status 必须为 approved,user_confirmed 和 made_before_next_slide 必须为 true;否则不得进入下一页或最终合并。image_assets 没有逐项说明来源、区域和必要性,即失败。text_objects 中每个主要文字对象必须写明 role、font_size_pt 和 editable;缺失即失败。role 必须使用固定 Typography Scale(C0, T1-T14);低于对应下限即失败,不能用“为了密度”解释。native_components;若被图片承载即失败。qa_expectations.dual_gate_required、qa_expectations.visual_semantics_required 和 qa_expectations.all_key_text_editable 必须同时为 true;不得只声明可编辑性或只声明视觉保真。qa_expectations.spatial_registration_required 必须为 true,并提供 spatial_registration_check。qa_expectations.container_overflow_check_required 必须为 true,并提供 container_overflow_check。qa_expectations.continuous_text_flow_check_required 必须为 true,并提供 continuous_text_flow_check。qa_expectations.table_semantic_typography_required 和 qa_expectations.table_density_check_required 必须为 true,并提供 table_text_objects 与 table_density_check。第三阶段必须是高保真蓝图还原阶段,不存在“低保真正式交付”“普通还原正式交付”“语义相似即可交付”或“一次性草稿先行”。
第三阶段不得先生成低保真草稿、快速预览、rough draft 或批量初稿,再事后补写 manifest、visual QA 或用户确认记录。
所有可见视觉元素都必须进入 visual_element_inventory,并被归入逐项测量、组内子锚点测量或装饰组测量。未登记的可见元素默认视为遗漏;遗漏未修复前,不得设置 visual_semantics_preserved=true,不得设置 deliverable_allowed=true,不得交付确认。
不得因为元素“微小”“装饰性”“不影响文字”而跳过登记。
visual_element_inventory 必须为每个可见元素或元素组标注 priority:
第三阶段必须对蓝图中所有可见元素建立 visual_element_registry。P0/P1/P2 只影响容差和失败等级,不影响是否需要登记、测量、还原和渲染后反测。
P0:标题、主图、SO WHAT、页脚、关键数字、核心面板、用户指出区域。默认容差 3px,最大 6px;超差即 Critical。P1:普通卡片、图标、标签、箭头、表格、分隔线。默认容差 4px,最大 8px;超差即 High,正式交付不得存在。P2:装饰线、点阵、纹理、重复刻度、背景纹样。默认容差 6px,最大 12px;超差即 Medium,若造成可见错位、重影、密度下降或节奏破坏,升级为 High/Critical。所有 P0/P1/P2 元素都必须包含 element_id、priority、element_type、source_component_id、blueprint_bbox_px、ppt_target_bbox_in、render_bbox_px、delta_px、tolerance_px 和 registration_status。不得以“装饰”“P2”“不重要”“视觉近似”为由跳过登记或反测。
最小示例:
{
"visual_element_inventory": [
{
"id": "title_block",
"priority": "P0",
"role": "title",
"measurement_mode": "individual_bbox",
"must_reproduce": true,
"blueprint_bbox_px": {"x": 90, "y": 64, "w": 800, "h": 72},
"ppt_target_bbox_in": {"x": 0.63, "y": 0.44, "w": 5.56, "h": 0.5},
"tolerance_px": 3
},
{
"id": "evidence_cards",
"priority": "P1",
"role": "cards",
"measurement_mode": "group_with_child_anchors",
"group_bbox_px": {"x": 1220, "y": 210, "w": 560, "h": 520},
"child_anchors": [{"id": "card_01", "anchor": "top_left"}],
"must_reproduce": true
},
{
"id": "background_dot_pattern",
"priority": "P2",
"role": "micro_decoration",
"measurement_mode": "decoration_group",
"group_bbox_px": {"x": 80, "y": 140, "w": 1760, "h": 820},
"color": "#D8DAD2",
"density": "medium",
"spacing_px": 12,
"alignment": "grid",
"repeat_direction": "xy",
"opacity": 0.42,
"reproduction_strategy": "native repeated dot pattern"
}
]
}
硬性判定:
visual_element_inventory 即失败。visual_element_registry 即失败。priority 即失败;priority 只能是 P0、P1、P2。visual_element_registry 中每个 P0/P1/P2 元素都必须提供蓝图 bbox、PPT 目标 bbox、渲染后 bbox、delta 和 tolerance。P0 默认容差 3px,最大 6px;P1 默认容差 4px,最大 8px;P2 默认容差 6px,最大 12px。第三阶段逐页生成前,必须先建立 blueprint_measurement_table。该表是把已批准蓝图转换为 PPT 坐标的执行依据,不是说明文字。
必须记录画布换算字段:
{
"blueprint_canvas_px": {"w": 1920, "h": 1080},
"ppt_canvas_in": {"w": 13.333, "h": 7.5},
"scale_x": 0.006944,
"scale_y": 0.006944
}
每个关键区域必须记录:
{
"id": "main_chart_area",
"priority": "P0",
"role": "main_chart",
"blueprint_bbox_px": {"x": 118, "y": 202, "w": 1320, "h": 610},
"ppt_target_bbox_in": {"x": 0.82, "y": 1.40, "w": 9.17, "h": 4.24},
"tolerance_px": 3,
"must_match_geometry": true
}
硬性判定:
qa_expectations.visual_semantics_required=true 时,缺少 blueprint_measurement_table 即失败。blueprint_canvas_px、ppt_canvas_in、scale_x 或 scale_y 即失败。visual_element_inventory 未覆盖全部可见元素,即失败。第三阶段每页生成 PPTX 前,必须先把已批准蓝图的视觉系统转成可执行记录。没有记录不得生成该页。
必须记录:
硬性判定:
#FFFFFF 当作默认内容区底色,除非蓝图明确是白色卡片。validate_pptx.py --strict 通过不等于视觉系统合格。渲染图中出现底色逻辑、面板逻辑、图表语义或曲线几何明显偏离蓝图时,视为 High/Critical,必须返工,不得交付确认。当蓝图或参考图中存在曲线、流带、异形边界、非标准弧线或任何几何敏感视觉时,必须触发精确追踪门。触发后不得用普通矩形、平行四边形、默认流程图、默认波浪形状或粗略 PPT 曲线近似。
触发场景包括:
触发后必须产出:
geometry_analysis 几何拆解记录,说明目标是 stroke 还是 fill shape、单线/双线/流带/楔形/面积带/异形边界、端点、最大弯曲点、宽度变化、局部凸起/凹陷方向、交叠层级和重建方式;trace_required: true、trace_method、trace_reference_crop、geometry_analysis、trace_debug_artifact、rendered_crop_comparison 和资产路径。触发精确追踪门后必须按以下顺序执行,缺任何一步均不得生成最终 PPTX,不得把 curve_fidelity_pass 写为 true:
geometry_analysis,先判断目标几何类型和视觉语义,再决定用 stroke、fill path、polyline、PPT freeform/custom geometry 或紧裁非文字图片。curve_fidelity_pass=true。硬性判定:
geometry_analysis 不得绘制最终 SVG;不得先凭感觉画 SVG 再补描述。rendered_crop_comparison,不得交付确认。硬性判定:
pictures=0,把曲线语义图改成错误的原生矩形、平行四边形、硬边条形图或普通堆叠条。pictures=0。允许使用小面积、无文字的 SVG path 资产,但必须在 manifest 中登记。visual_qa_gate.json 的 curve_fidelity_pass=false 且 deliverable_allowed=false,并对用户指出区域重新执行局部对照流程。当页面包含中心图、流程图、架构图、生态图、矩阵图、时间线、路径图或任何图标/节点/曲线密集区域时,必须执行标签避让检查。该检查不能由 strict QA、图片数量、可编辑性或字号检查替代。
硬性判定:
allowed_text_overlaps;未登记的重叠一律按失败处理。visual_qa_gate.json 中记录 label_collision_check。缺失即失败。当页面包含中心图、流程图、架构图、生态图、矩阵图、时间线、路径图、图标密集图,或任何“图标 + 节点 + 标签 + 箭头/曲线”的组合时,必须执行空间锚点检查。该检查不能由标签避让、曲线追踪、字号检查或 pictures 数量替代。
制作前必须先记录蓝图的锚点关系:
manifest 必须包含 spatial_registration_check,至少记录:
{
"passed": true,
"reference_crop": "analysis/region_reference.png",
"rendered_crop": "analysis/region_rendered.png",
"checked_groups": [
{
"id": "conversion_node_01",
"items": ["node_circle", "icon", "node_label", "bullets", "incoming_arrow", "outgoing_arrow"],
"anchor_rule": "icon centered in node; label below icon; bullets below node; arrows connect node midline",
"anchor_points": [
{
"item": "node_circle",
"anchor": "center",
"blueprint_bbox_px": {"x": 420, "y": 310, "w": 86, "h": 86},
"render_bbox_px": {"x": 423, "y": 312, "w": 84, "h": 85},
"delta_px": {"x": 3, "y": 2, "w": 2, "h": 1},
"tolerance_px": 6,
"status": "passed"
},
{
"item": "node_label",
"anchor": "text_baseline_center",
"blueprint_bbox_px": {"x": 386, "y": 404, "w": 154, "h": 24},
"render_bbox_px": {"x": 388, "y": 405, "w": 153, "h": 24},
"delta_px": {"x": 2, "y": 1, "w": 1, "h": 0},
"tolerance_px": 4,
"status": "passed"
},
{
"item": "outgoing_arrow",
"anchor": "start_end",
"blueprint_bbox_px": {"x": 506, "y": 350, "w": 198, "h": 18},
"render_bbox_px": {"x": 508, "y": 351, "w": 198, "h": 18},
"delta_px": {"x": 2, "y": 1, "w": 0, "h": 0},
"tolerance_px": 6,
"status": "passed"
}
],
"max_center_deviation_px": 6,
"max_label_baseline_deviation_px": 4,
"status": "passed"
}
],
"failures": []
}
硬性判定:
anchor_points 只写 top_left、center、baseline 等抽象锚点,不写 blueprint_bbox_px、render_bbox_px、delta_px 和 tolerance_px,视为未完成空间锚点检查。status != passed,该页不得交付确认。delta_px 超过 tolerance_px,不得把 spatial_registration_pass 写为 true。checked_groups[].status 只能是 passed 或 failed;不得使用 mostly_passed、passed_with_tolerance、minor_issue、acceptable 等模糊状态。出现非 passed 即失败。visual_qa_gate.json 的 spatial_registration_pass=false 且 deliverable_allowed=false,重新裁局部图并对照锚点。第三阶段必须按蓝图记录每段文字的归属容器。归属容器包括卡片、面板、图表区、表格单元格、结论条、SO WHAT、标题区、页脚区、图标节点、流程节点、KPI 框和注释框。文字是否合格按归属容器判定,不按整页画布判定。
硬性判定:
continuous_text_flow_check 必须逐项证明拆分后的基线、字距、空格和阅读顺序与蓝图一致。T7 或 T10;不得登记为 T11 微图标签。T11 只允许用于轴标签、刻度、图例、极短表格标签、单位、列短标签或非句子型微标签。T7/T10 的可读区间,并通过重排列宽、行高、换行和内容精炼实现;不得把完整句子压成 T11。table_density_pass=false。visual_qa_gate.json 的对应字段置为 false,且 deliverable_allowed=false,返工后重新渲染对照。manifest 中必须按需记录:
{
"container_overflow_check": {
"passed": true,
"checked_regions": [
{"id": "so_what_body", "owner_container": "so_what_box", "status": "passed"}
],
"failures": []
},
"continuous_text_flow_check": {
"passed": true,
"checked_text_runs": [
{"id": "so_what_sentence", "method": "single-textbox-rich-text", "status": "passed"}
],
"failures": []
},
"table_text_objects": [
{"id": "risk_row_01", "semantic_role": "table_body", "role": "T7", "font_size_pt": 9.5}
],
"table_density_check": {
"passed": true,
"checked_cells": [
{"id": "action_table_r1c3", "semantic_role": "table_action", "status": "passed"}
],
"failures": []
}
}
曲线质量硬性判定:
point_count、min_required_point_count 和 max_deviation_px 或明确标注人工覆盖检查结果。trace_debug_artifact 必须显示曲线覆盖、采样点或边界对照;只画一个粗略外框不合格。第三阶段每次交付确认前必须生成 visual_qa_gate.json。没有该文件,不得交付确认。该文件必须逐页给出明确布尔判定,不得使用“基本”“大致”“看起来还行”等模糊表述。
visual_qa_gate.json 不是自我声明。每个 true 都必须绑定证据记录;没有证据不得写 true。每页 deliverable_allowed=true 前必须至少提供:
blueprint_render_path;ppt_render_path;side_by_side_comparison_path;local_overlay_artifacts;measurement_evidence_path;spatial_numeric_check_path;visual_differences;evidence 映射;字符串证据必须是存在的文件路径,内联检查记录必须写成结构化对象。每页必须至少包含:
{
"slide": 4,
"blueprint_render_path": "blueprints/slide-04.png",
"ppt_render_path": "renders/slide-04.png",
"side_by_side_comparison_path": "qa/slide-04-side-by-side.png",
"local_overlay_artifacts": [
"qa/slide-04-title-overlay.png",
"qa/slide-04-main-chart-overlay.png",
"qa/slide-04-so-what-overlay.png",
"qa/slide-04-footer-overlay.png"
],
"measurement_evidence_path": "qa/slide-04-blueprint-measurement.json",
"spatial_numeric_check_path": "qa/slide-04-spatial-numeric-check.json",
"visual_differences": [],
"evidence": {
"surface_system_match": "qa/slide-04-color-samples.json",
"main_chart_semantics_match": "qa/slide-04-chart-semantics.json",
"visual_semantics_preserved": "qa/slide-04-side-by-side.png",
"editable_information_layer_pass": "slide_manifest.json",
"spatial_registration_pass": "qa/slide-04-anchor-check.json",
"curve_fidelity_pass": "qa/slide-04-curve-check.json",
"label_collision_pass": "qa/slide-04-label-check.json",
"text_overflow_pass": "qa/slide-04-text-check.json",
"container_overflow_pass": "qa/slide-04-container-check.json",
"continuous_text_flow_pass": "qa/slide-04-text-flow.json",
"table_semantic_typography_pass": "qa/slide-04-table-type.json",
"table_density_pass": "qa/slide-04-table-density.json",
"blueprint_background_not_used": "slide_manifest.json"
},
"surface_system_match": true,
"main_chart_semantics_match": true,
"visual_semantics_preserved": true,
"editable_information_layer_pass": true,
"spatial_registration_pass": true,
"curve_fidelity_pass": true,
"label_collision_pass": true,
"text_overflow_pass": true,
"container_overflow_pass": true,
"continuous_text_flow_pass": true,
"table_semantic_typography_pass": true,
"table_density_pass": true,
"blueprint_background_not_used": true,
"deliverable_allowed": true,
"notes": []
}
硬性判定:
false,deliverable_allowed 必须为 false,不得交付确认。deliverable_allowed=true 但缺少 blueprint_render_path、ppt_render_path、side_by_side_comparison_path 或 visual_differences,即失败。deliverable_allowed=true 但缺少 local_overlay_artifacts、measurement_evidence_path 或 spatial_numeric_check_path,即失败。visual_differences 中存在 High/Critical 且未被用户明确接受的差异时,不得交付确认。true 但缺少对应 evidence,即失败。strict QA 通过不能替代 visual_qa_gate.json;结构合规不等于视觉合格。editable_information_layer_pass=true 只证明信息层可编辑,不代表视觉语义合格;visual_semantics_preserved=true 只证明视觉语义未被降级,不代表信息层可编辑。两者必须同时为 true。spatial_registration_pass=true 必须基于局部裁图或锚点清单判断;不得用“没有重叠”“看起来差不多”替代。| 错误解释 | 正确做法 |
|---|---|
| “为了视觉保真,先铺整页蓝图再遮文字” | 错。蓝图是参考,不是交付背景。简单图表和主要文字必须原生重建。 |
| “图表看起来复杂,可以保留为图片” | 错。折线、柱状、坐标轴、对比条、标签、CAGR/KPI 默认是简单图表,应原生重建。 |
| “只要主标题可编辑就行” | 错。正文、图表标签、关键数字、注释、页脚、页码和 SO WHAT 也必须可编辑。 |
| “用户要求按蓝图还原,所以可以用蓝图截图” | 错。按蓝图还原指复现版式、层级、密度和视觉语言,不代表把蓝图截图放进 PPT。 |
| “字号太小但内容都放下了” | 错。不得用缩小字号替代结构重排;优先精炼文字、调整分区或拆页。 |
| “为了保持 pictures=0,把流线/曲线图改成矩形或平行四边形” | 错。曲线语义图必须先精确追踪;必要时允许小面积无文字 SVG,并登记 manifest。 |
| “我保证了可编辑,所以可以简化蓝图视觉” | 错。可编辑性和视觉语义是同等硬门槛;应使用原生对象加小范围无文字 SVG/custom geometry 的混合方案。 |
| “视觉看起来像,所以主要信息做成图片也可以” | 错。视觉保真不能覆盖信息可编辑性;主要文字、数字、标签、SO WHAT 和页脚必须原生可编辑。 |
| “strict QA 过了,所以视觉还原合格” | 错。strict QA 只证明部分结构规则通过;底色系统、面板逻辑、图表语义和曲线几何仍需渲染对照。 |
| “ImageGen 能画得更像,所以用它重做精确曲线” | 错。1:1 几何还原不能依赖随机生成,必须使用裁切、采样、SVG path 或 custom geometry。 |
| “SVG 也是图片,所以不如直接裁蓝图” | 错。SVG path 是可控几何资产;蓝图截图是不可编辑背景捷径。主要文字和标签仍必须原生。 |
| “文字和图标有一点压住,但结构 QA 通过了” | 错。标签、数值、正文与图标/节点/曲线/箭头可见重叠是视觉 QA 失败,必须返工。 |
| “文字和图标没有重叠,所以位置就算合格” | 错。没有重叠只通过标签避让;图标、标签、节点和箭头还必须通过空间锚点/相对位置还原门。 |
| “整体布局差不多,局部图标偏一点不影响” | 错。中心图、流程图、生态图和路径图依赖局部锚点关系;图标、标签、节点或箭头明显偏移即失败。 |
| “文字没有超出页面,所以不算溢出” | 错。文字必须留在归属容器内;越过卡片、单元格、SO WHAT、结论条或图表区边界即失败。 |
| “一句话拆成多个文本框方便高亮” | 错。连续语义文本必须保持连续流;拆分后产生异常空格、断句、基线错位或漂移即失败。 |
| “表格文字默认都可以用 T11” | 错。表格正文、行动项、风险项和完整判断句必须按语义登记为 T7/T10;T11 只用于微标签。 |
| “表格字号没低于下限,所以布局空也可以” | 错。表格密度必须匹配蓝图;大面积空白、阅读重心塌陷或单元格显空即失败。 |
| “曲线用几个点连起来也能表达意思” | 错。核心曲线不得用少量折线点冒充;必须使用 path/freeform/custom geometry 或足够密集采样。 |
| “我已经给了渲染图,用户会自己看问题” | 错。交付前必须主动填写 visual QA 闸门;发现失败必须拦截,不得转嫁给用户验错。 |
全篇固定 15 个文字层级:C0 为封面/章节幕专用,T1-T14 为内容页层级。制作和 QA 都必须按这些名称检查字号、权重和可读性。
| 层级 | 名称 | 典型位置 | 字号范围 |
|---|---|---|---|
| C0 | 封面/章节幕标题 | 封面主标题、章节幕标题 | 32-44pt |
| T1 | 页码/章节徽章 | 左上角页码徽章、章节编号徽章 | 14-18pt |
| T2 | 页面主标题/结论标题 | 每页顶部结论句 | 22-28pt |
| T3 | 页面副标题/语境说明 | 主标题下方 subtitle/kicker | 10-12pt |
| T4 | 模块标题/图表标题/信息区标题 | 图表标题、右侧面板标题、信息区标题 | 11-14pt |
| T5 | 证据编号/轻量标签 | E02/E05 标签、状态标签、小徽章 | 7.5-8.5pt |
| T6 | 证据块标题/小节标题 | 左侧证据块标题、段落小标题 | 11-13pt |
| T7 | 正文解释段落 | 证据解释、管理解读正文 | 9.5-11pt |
| T8 | 结论条文字/核心结论 | 蓝色结论条、核心总结框 | 10-12pt |
| T9 | SO WHAT 标签 | SO WHAT / WHY IT MATTERS 标签 | 10-12pt |
| T10 | SO WHAT 正文/业务含义 | 底部 SO WHAT 正文、行动含义 | 9.5-11pt |
| T11 | 图表轴/图例/刻度/微图标签 | 坐标轴、图例、刻度、微型图标签 | 7.5-9pt |
| T12 | 图表数据标签/直接标注 | 折线点值、柱形标签、百分比标注 | 8.5-11pt |
| T13 | 关键 KPI/大数字 | 4.2%、CAGR、关键指标大号数字 | 18-28pt |
| T14 | 注释/口径/来源/页脚 | 注释、caveat、来源、页脚、小页码 | 6.5-8pt |
用户图中 1-8 的映射:1=T2,2=T3,3=T6/T4,4=T7,5=T14,6=T11/T12/T13,7=T10,8=T14。
assets/palette-samples/palette-01.png 到 palette-08.png,或生成新的 8 张真实图片。stage2_style_options.md 作为第二阶段交付;这些只能作为图片旁的辅助说明,不能替代当前对话中的 8 张独立样张图片。visual-system.md 中的固定 8 种名称和色板;“8 个视觉方向”不等于固定 8 种 CyberPPT 风格。使用当前环境中最合适的 PPT 工具。保留原始源文件,输出带版本号的文件。
运行结构校验器:
python scripts/validate_pptx.py path/to/deck.pptx --manifest path/to/slide_manifest.json --visual-qa path/to/visual_qa_gate.json --strict --json-out path/to/report.json
在第三阶段,--manifest --visual-qa --strict 不可省略。strict 模式下出现 hard-rule errors 即失败,必须返工后重新生成和重新校验;不得只解释或忽略。
将非 hard-rule 的校验警告视为复查提示,而不是绝对视觉判断。逐页检查渲染图中的空白失衡、字号过小、裁切、重叠、图表标签碰撞、层级弱化和风格漂移。
第三阶段逐页确认前必须同时提供:
visual_qa_gate.json 路径与逐项结果;slide_manifest.json 路径;page_execution 摘要,确认 mode=single_page、page_status=approved、user_confirmed=true 和 made_before_next_slide=true;pictures 数量;pictures 为 0,或说明例外原因。visual_qa_gate.json 中为 true 的视觉字段都必须提供证据。字符串证据必须是存在的文件路径,内联检查记录必须写成结构化对象;没有证据不能交付确认。stage2_style_options.md 或文字风格列表,没有展示 8 张实际图片,会导致第二阶段不合规。target_language、language_source 和 effective_language,属于第二阶段失败。language_overrides,属于第二阶段失败。target_language、language_source、effective_language、language_overrides、allowed_foreign_terms、“目标语言=中文”或 language=Chinese 等执行元数据可见文字,属于生成文字污染,必须重做。generate_stage2_blueprints.py、PptxGenJS、python-pptx、HTML、CSS、SVG、canvas、Pillow、matplotlib 或 PowerPoint 直接生成逐页蓝图,属于第二阶段失败;这些工具不能替代 ImageGen。pictures > 0 但页面组件清单写明“无需保留图片资产”,属于第三阶段返工项,不能交付确认。pictures=0 合理化。visual_qa_gate.json、视觉 QA 关键项缺失、或 deliverable_allowed=false 仍交付,属于流程失败。visual_qa_gate.json 只写布尔值,没有蓝图图、PPT 渲染图、side-by-side 对照图或字段证据,属于流程失败。blueprint_reconstruction_plan 就直接生成 PPTX,属于流程失败。