dsh-ppt-studio 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +480 -0
- package/agent-presets/ppt/agent.cordis.yml +308 -0
- package/agent-presets/ppt/preset.yml +3 -0
- package/cordis.patch.yml +29 -0
- package/docs/00-/350/256/276/350/256/241/346/272/220.md +537 -0
- package/docs/01-/351/234/200/346/261/202/344/270/216/347/233/256/346/240/207.md +136 -0
- package/docs/02-/346/212/200/346/234/257/346/212/245/345/221/212.md +483 -0
- package/docs/03-/346/233/264/346/226/260/346/227/245/345/277/227.md +2898 -0
- package/docs/04-/350/267/257/347/272/277/345/233/276/344/270/216/351/207/214/347/250/213/347/242/221.md +113 -0
- package/docs/05-/350/277/255/344/273/243/346/265/201/347/250/213.md +210 -0
- package/docs/06-/350/257/204/345/256/241/344/270/216/346/265/213/350/257/225.md +296 -0
- package/docs/fidelity-report.md +225 -0
- package/examples/fx/fx-mini/deck.yaml +39 -0
- package/examples/fx/fx-mini/pages/01.yaml +6 -0
- package/examples/fx/fx-mini/pages/02.yaml +2 -0
- package/examples/fx/fx-mini/pages/03.yaml +6 -0
- package/examples/fx/fx-pro/deck.yaml +48 -0
- package/examples/fx/fx-pro/pages/01_cover.yaml +40 -0
- package/examples/fx/fx-pro/pages/02_arch.yaml +55 -0
- package/examples/fx/fx-pro/pages/03_table.yaml +20 -0
- package/examples/fx/fx-pro/pages/04_chart.yaml +40 -0
- package/examples/fx/fx-pro/pages/05_timeline.yaml +71 -0
- package/examples/fx/fx-pro/pages/06_longtext.yaml +13 -0
- package/examples/fx/fx-pro/pages/07_safearea.yaml +33 -0
- package/examples/fx/fx-pro/pages/08_contrast.yaml +22 -0
- package/examples/fx/fx-pro/pages/09_custgeom.yaml +32 -0
- package/examples/fx/fx-pro/pages/10_numbers.yaml +25 -0
- package/examples/fx/fx-pro/pages/11_section.yaml +20 -0
- package/examples/fx/fx-pro/pages/12_summary.yaml +57 -0
- package/examples/fx/fx-pro/preview/01_pages_01_cover.html +1 -0
- package/examples/fx/fx-pro/preview/02_pages_02_arch.html +3 -0
- package/examples/fx/fx-pro/preview/03_pages_03_table.html +1 -0
- package/examples/fx/fx-pro/preview/04_pages_04_chart.html +3 -0
- package/examples/fx/fx-pro/preview/05_pages_05_timeline.html +2 -0
- package/examples/fx/fx-pro/preview/06_pages_06_longtext.html +4 -0
- package/examples/fx/fx-pro/preview/07_pages_07_safearea.html +2 -0
- package/examples/fx/fx-pro/preview/08_pages_08_contrast.html +1 -0
- package/examples/fx/fx-pro/preview/09_pages_09_custgeom.html +1 -0
- package/examples/fx/fx-pro/preview/10_pages_10_numbers.html +1 -0
- package/examples/fx/fx-pro/preview/11_pages_11_section.html +1 -0
- package/examples/fx/fx-pro/preview/12_pages_12_summary.html +1 -0
- package/examples/fx/fx-pro/preview/deck.html +10 -0
- package/examples/fx/fx-pro/preview/layout.json +2325 -0
- package/examples/fx/fx-pro/preview/measured.json +814 -0
- package/examples/fx/fx-pro.pptx +0 -0
- package/examples/fx/ren-single/01.png +0 -0
- package/examples/fx/ren-spliced/01.png +0 -0
- package/examples/fx/ren-spliced/03.png +0 -0
- package/examples/fx/seed.pptx +0 -0
- package/examples/fx/single.pptx +0 -0
- package/examples/fx/spliced.pptx +0 -0
- package/examples/smoke/deck.yaml +26 -0
- package/examples/smoke/imported/deck.yaml +30 -0
- package/examples/smoke/imported/import-styles.json +126 -0
- package/examples/smoke/imported/pages/slide_01.yaml +31 -0
- package/examples/smoke/imported/pages/slide_02.yaml +38 -0
- package/examples/smoke/imported/pages/slide_03.yaml +55 -0
- package/examples/smoke/imported/preview-rt/01_pages_slide_01.html +1 -0
- package/examples/smoke/imported/preview-rt/02_pages_slide_02.html +1 -0
- package/examples/smoke/imported/preview-rt/03_pages_slide_03.html +1 -0
- package/examples/smoke/imported/preview-rt/deck.html +1 -0
- package/examples/smoke/imported/preview-rt/layout.json +434 -0
- package/examples/smoke/imported/reference/previews/01.png +0 -0
- package/examples/smoke/imported/reference/previews/02.png +0 -0
- package/examples/smoke/imported/reference/previews/03.png +0 -0
- package/examples/smoke/imported/source.pptx +0 -0
- package/examples/smoke/media-test.png +0 -0
- package/examples/smoke/out-smoke.pptx +0 -0
- package/examples/smoke/pages/01_cover.yaml +27 -0
- package/examples/smoke/pages/02_content.yaml +42 -0
- package/examples/smoke/pages/03_chart.yaml +35 -0
- package/examples/smoke/preview/01_pages_01_cover.html +1 -0
- package/examples/smoke/preview/02_pages_02_content.html +1 -0
- package/examples/smoke/preview/03_pages_03_chart.html +1 -0
- package/examples/smoke/preview/deck.html +1 -0
- package/examples/smoke/preview/layout.json +378 -0
- package/lib/autodeclare.js +40 -0
- package/lib/commands.js +161 -0
- package/lib/crosscheck.js +300 -0
- package/lib/imgmeta.js +55 -0
- package/lib/index.js +239 -0
- package/lib/measurement.js +209 -0
- package/lib/msrender.js +123 -0
- package/lib/pptd/export-pptx.js +686 -0
- package/lib/pptd/import-pptx.js +774 -0
- package/lib/pptd/layout.js +209 -0
- package/lib/pptd/render-html.js +254 -0
- package/lib/pptd/schema.js +518 -0
- package/lib/pptd/svgCharts.js +147 -0
- package/lib/pptxPy.js +205 -0
- package/lib/preset-delivery.js +195 -0
- package/lib/preview-server.js +164 -0
- package/lib/router.js +165 -0
- package/lib/scaffold.js +315 -0
- package/lib/skill.js +174 -0
- package/lib/splice.js +219 -0
- package/lib/state.js +88 -0
- package/lib/surgical.js +369 -0
- package/lib/templates.js +400 -0
- package/lib/tools.js +955 -0
- package/lib/verify.js +828 -0
- package/lib/xmljs.js +112 -0
- package/lib/zips.js +117 -0
- package/package.json +81 -0
- package/scripts/audit-manual-facts.mjs +294 -0
- package/scripts/audit-template-fidelity.mjs +162 -0
- package/scripts/bench-m2.mjs +48 -0
- package/scripts/build-templates.mjs +63 -0
- package/scripts/build.mjs +14 -0
- package/scripts/build.sh +7 -0
- package/scripts/check-lib-freshness.mjs +70 -0
- package/scripts/check-preset.mjs +189 -0
- package/scripts/check-tracked-lf.mjs +84 -0
- package/scripts/dbg-import.mjs +13 -0
- package/scripts/dbg-media.mjs +10 -0
- package/scripts/dbg-tpl-inventory.mjs +23 -0
- package/scripts/dump-workflow-baseline.mjs +38 -0
- package/scripts/e2e-1.0.mjs +129 -0
- package/scripts/eval-skills-blind.mjs +91 -0
- package/scripts/eval-skills-score.mjs +129 -0
- package/scripts/export-orig-templates.ps1 +17 -0
- package/scripts/fixtures/workflow-baseline.json +300 -0
- package/scripts/fixtures.mjs +501 -0
- package/scripts/import-user-templates.mjs +60 -0
- package/scripts/install-desktop.mjs +312 -0
- package/scripts/install.mjs +209 -0
- package/scripts/migrate-templates-dualtrack.mjs +71 -0
- package/scripts/preflight-1.0.mjs +198 -0
- package/scripts/probe-asset-freshness.mjs +57 -0
- package/scripts/probe-effect-semantics.mjs +69 -0
- package/scripts/probe-reparse-safety.mjs +32 -0
- package/scripts/rebuild-templates-c11.mjs +69 -0
- package/scripts/regression-real.mjs +84 -0
- package/scripts/release-sync.mjs +425 -0
- package/scripts/shot-templates.mjs +49 -0
- package/scripts/smoke.mjs +2512 -0
- package/scripts/verify-bundle-install.mjs +281 -0
- package/scripts/verify-fresh-install.mjs +260 -0
- package/skills/ppt-studio-copy/SKILL.md +139 -0
- package/skills/ppt-studio-craft/SKILL.md +171 -0
- package/skills/ppt-studio-data/SKILL.md +173 -0
- package/skills/ppt-studio-manual/SKILL.md +104 -0
- package/templates/academic-white/deck.yaml +24 -0
- package/templates/academic-white/pages/_chart.yaml +43 -0
- package/templates/academic-white/pages/_compare.yaml +37 -0
- package/templates/academic-white/pages/_content.yaml +35 -0
- package/templates/academic-white/pages/_cover.yaml +28 -0
- package/templates/academic-white/pages/_ending.yaml +28 -0
- package/templates/academic-white/pages/_flow.yaml +61 -0
- package/templates/academic-white/preview.png +0 -0
- package/templates/academic-white/template.yaml +14 -0
- package/templates/business-blue/deck.yaml +28 -0
- package/templates/business-blue/pages/_chart.yaml +36 -0
- package/templates/business-blue/pages/_compare.yaml +45 -0
- package/templates/business-blue/pages/_content.yaml +80 -0
- package/templates/business-blue/pages/_cover.yaml +39 -0
- package/templates/business-blue/pages/_ending.yaml +32 -0
- package/templates/business-blue/pages/_flow.yaml +87 -0
- package/templates/business-blue/preview.png +0 -0
- package/templates/business-blue/template.yaml +14 -0
- package/templates/pitch-bold/deck.yaml +23 -0
- package/templates/pitch-bold/pages/_chart.yaml +32 -0
- package/templates/pitch-bold/pages/_compare.yaml +36 -0
- package/templates/pitch-bold/pages/_content.yaml +58 -0
- package/templates/pitch-bold/pages/_cover.yaml +31 -0
- package/templates/pitch-bold/pages/_ending.yaml +27 -0
- package/templates/pitch-bold/pages/_flow.yaml +46 -0
- package/templates/pitch-bold/preview.png +0 -0
- package/templates/pitch-bold/template.yaml +14 -0
- package/templates/tech-dark/deck.yaml +24 -0
- package/templates/tech-dark/pages/_chart.yaml +27 -0
- package/templates/tech-dark/pages/_compare.yaml +38 -0
- package/templates/tech-dark/pages/_content.yaml +51 -0
- package/templates/tech-dark/pages/_cover.yaml +30 -0
- package/templates/tech-dark/pages/_ending.yaml +25 -0
- package/templates/tech-dark/pages/_flow.yaml +80 -0
- package/templates/tech-dark/preview.png +0 -0
- package/templates/tech-dark/template.yaml +14 -0
|
@@ -0,0 +1,300 @@
|
|
|
1
|
+
{
|
|
2
|
+
"note": "工作流提示词基线:新段必须是逐行超集(只增不改不删)",
|
|
3
|
+
"variants": [
|
|
4
|
+
{
|
|
5
|
+
"quick": false,
|
|
6
|
+
"taskType": "from-scratch",
|
|
7
|
+
"name": "ppt-workflow",
|
|
8
|
+
"lines": [
|
|
9
|
+
"=== PPT 制作工作流已激活(dsh-ppt-studio) ===",
|
|
10
|
+
"任务类型:from-scratch(from-scratch 从头 / augment 补完 / edit 修改 / summarize 总结)",
|
|
11
|
+
"协作模式:auto|内容忠实度 auto|审阅 points|质量 standard|引擎 auto|暂停点 无(/ppt 可改)",
|
|
12
|
+
"",
|
|
13
|
+
"【执行阶段】(按序推进,已完成可跳过,循环至交付):",
|
|
14
|
+
" S0 规格澄清 → S1 大纲与素材准备 → S2 视觉定调(样例页)→ S3 逐页制作 → S4 页审循环 → S5 整体审 → S6 导出交付",
|
|
15
|
+
"",
|
|
16
|
+
"【入门(减少试错,反馈整合)】",
|
|
17
|
+
" - 语法速查:先调 ppt_schema(deck.yaml/元素/主题 token/声明/安全区速查);要完整可跑样例:ppt_new 生成示例工程(含 expectedOverlaps 与 safeArea 范本);回归样例在插件 examples/smoke。",
|
|
18
|
+
" - 制作手册(内置技能,按需加载;纯增益,不改任何铁律与门禁):定纲/定版式前加载 `ppt-studio-craft`;页面要放数字与图表时加载 `ppt-studio-data`;写标题与要点时加载 `ppt-studio-copy`。三本只给启发式与反例——**门禁数值一律以 ppt_verify 输出与用户指令为准**;不加载也照常工作。",
|
|
19
|
+
" - 答疑手册 `ppt-studio-manual`(内置技能):**只在用户提问时加载**(问用法/写法/报错/交付路径)——**制作开工时不要加载**。制作中只是自己拿不准某个写法/工具语义 → 调 ppt_schema(DSL 权威速查)/ ppt_check / ppt_verify 拿输出,不要靠读手册。",
|
|
20
|
+
" - line 元素可省略 bounds(由 points 的 AABB 自动推导,w/h≥1px)。",
|
|
21
|
+
" - 模板背景带 logo/页眉/页脚带:在 deck.yaml theme.safeArea(或页面级 safeArea)配置上/下/左/右安全边距,verify 会把安全区外的元素判为出界;ppt_render debug=true 会画出安全区参考框。",
|
|
22
|
+
" - 文本溢出:verify 与导出共用同一保守度量;**字号下限 = 用户指令**——用户给出最小字号(如\"不得小于12号\")→ 把该值写入 theme.minFontSize 并严格执行——导出 auto-fit 缩字不得低于它;到下限仍溢出会明确报告(✗),请扩大容器或精简文案;用户未给下限 → 不做强制(auto-fit 仅 60% 原字号保底,绝不升字)。",
|
|
23
|
+
" - 批量声明:色块衬底/图片标注/箭头跨越等\"警告级\"未声明重叠,用 ppt_verify autoDeclare=true 一键写入 expectedOverlaps;内容互压(content-collision)不支持自动声明,必须手工改布局。写入后输出**声明清单**(每对附一句意图:色块衬底/图上标注/箭头跨越),说不清意图的对子必须改布局而不是声明(D1)。",
|
|
24
|
+
" - 出界声明(expectedOutOfSafeArea)不批量、必须手工:验证报安全区出界错误时,确认\"这是有意的 logo/角标\"才加入声明;不确定就先移动元素。",
|
|
25
|
+
"",
|
|
26
|
+
"【铁律】",
|
|
27
|
+
"1. 产物 = 中间层项目(deck.yaml + pages/*.yaml + media/)。页面用元素描述(bounds 为 [x,y,w,h] px,1px=1pt,原点左上);不要直接写 pptx。",
|
|
28
|
+
"2. 每页制作后依次运行:ppt_render → ppt_verify(数字审阅)→ ppt_shot(有读图能力时视觉审阅);overlap/out-of-page/text-overflow 错误清零后才算通过。**重叠语义(设计意图声明制)**:设计页面时把**有意**重叠的元素对记入页面 `expectedOverlaps`(图片上标注、色块衬底、箭头跨越等);审阅时警告级重叠逐对与声明对照——命中 = 确认(✓ 预期重叠),未命中 = 设计预期外错误(修正布局,或确认是有意的 → 补声明再验);**嵌套承载(面板→框→文字)只需声明相邻层对,隔层由声明闭包自动通过**;**内容互压(文字/表格/图表相互遮挡)不支持声明豁免,永远错误**;纯装饰元素可加 `role: decoration` 豁免**重叠**(装饰性=设计意图声明)。**出界分级(与声明制同构)**:超页面边界=永远错误不可声明;超安全区(模板页眉页脚带)=声明制——有意落在带上的 logo/角标/水印逐元素写入页面 `expectedOutOfSafeArea`(不批量、必须手工,id 必须存在);未命中=错误。declaration 之后若要免声明批量使用:仅重叠可用 `ppt_verify autoDeclare=true`(见入门段),出界声明永远手工。",
|
|
29
|
+
"3. 样式只用 theme token($colors/$textStyles 引用);新增风格先改 theme,不允许页面里出现脱离主题的颜色/字号。",
|
|
30
|
+
"4. 文本必须给出文本框实际容纳能力:先算文本面积再放框(字体字号→行宽行数),溢出用更小字号或更大框修复,不要靠视觉猜。",
|
|
31
|
+
"5. 用户明确要求(hardConstraints)任何模式下严格遵循;未指定处可自决。",
|
|
32
|
+
"6. 素材:用户提供的 > 从用户内容提取(文档/网页)> 自行生成/搜索;素材理解(物理规格程序化读取 + 语义理解),无读图能力时请用户描述后写入素材说明。",
|
|
33
|
+
"6a. **视觉理解通道(v0.8.0→v0.9.1,先看后做;参考任务 = 参考双轨)**:用户提供的 .pptx(参考稿/待改稿)经 `ppt_import` 后工作区**自动带参考层**——`reference/source.pptx`(零失真真相)+ `reference/previews/NN.png`(Office 真渲染整页,COM 可用时)+ deck.yaml 顶部 `referenceSource`。**创作前先 read_image 看 reference/previews/*.png(整页真身:配色/版式/形状语言/字体气质/渐变阴影)→ 视觉理解写入设计摘要,再动手**——与模板双轨(6b)\"按模板做\"是同一通道、完全等价;无 Office 时自动降级(XML 推断 + source.pptx 可用 `ppt_visual` 补渲 + 标注\"未经 Office 真渲染理解\")。**\"完整明白原稿长什么样\"是参考类任务的第一步,不能跳过**。",
|
|
34
|
+
"6b. **模板决策(S1 前完成,需求 2/4)**:按**来源优先级**决定参考谁——① **用户给了自己的模板,或任务是对既有 ppt 补完/修改** ⇒ **只以用户那份为参考**(先 `ppt_import` 读真身:`reference/previews/*.png` + `audit.yaml`),**内置模板一律不参与**(也别拿它当风格种子);② **用户明确要求用内置模板** ⇒ 由用户指令决定是他自己挑、还是你按**主题适配度**挑一套(`ppt_templates` 展示清单与预览图),选定后 `ppt_new dir=<工作区> template=<id>` 复制工作区;③ **用户没提模板** ⇒ **默认按题材自己设计风格**(配色/版式/字体都从主题来),**不要把内置模板当兜底**;只有某个内置模板**明显贴合**该题材时才考虑参考它(低优先级,并说明为什么贴合)。内置模板现状:business-blue 商务蓝 / academic-white 学术会议 / tech-dark 科技深色 / pitch-bold 路演大字。**用户自建模板库(v1.0.6)**:用户交 .pptx 要入库 → `ppt_template_add pptx=<绝对路径>`(内部先 import,保留原始 pptx 作真相层;写进**用户层** `<dshHome>/ppt-studio/templates`,升级不丢);要删 → `ppt_template_remove id=<id>`(**只能删自建的**,随包模板拒删)。用户自己攒的模板**视同\"用户给的模板\"**,在优先级里属最高档。**模板工作区语义(v0.7)**:`pages/_*.yaml` 是参考母版(**不注册进 deck.pages,不进 render/verify 门禁**,仅作版式参照);`pages/01_opening.yaml` 是模板首母版的**正式副本**(注册进门禁)——先 `ppt_verify autoDeclare=true` 声明模板固有有意叠层,剩余错误是模板原文案残留,替换/删除后自然干净;新增正式页 = 复制母版去 `_` 前缀 + 注册进 deck.yaml pages。\"统一模板保持基础样式\"要求走同一路径(模板文件先 ppt_import 并启用其 theme 聚合块)。**模板一致性(v0.5)**:verify theme-conformance strict 默认门禁——页面颜色必须 ∈ theme.colors 或中性灰;页面要新颜色就先加进 theme。**模板双轨(v0.9)**:模板 = 骨架层(pages/_*.yaml 母版,结构机器可验证)+ 真相层(原始 pptx + Office 真渲染整页 PNG + styleAudit)。materialize 后工作区含 `reference/`(template.pptx、previews/NN.png、audit.yaml),deck.yaml 顶部记 `referenceTemplate`(id/previews 路径/audit 引用)。**\"按模板做\" = \"参考用户给的 ppt 制作\",完全等价(同一参考双轨通道)**:创作前先 read_image 看 `reference/previews/*.png`(整页真身:配色/版式/形状语言/字体气质/渐变阴影)→ 读 `reference/audit.yaml`(视觉审计缓存,`ppt_template_styleaudit` 一次性生成)→ 视觉理解写入设计意图 → 再动手创作;无 reference(无 Office 收纳/内置模板)则退化为骨架层 + audit 缺失说明,不再有\"从 40% 保真近似里猜\"的失真环节。**手术模式(v0.10,候选 B)**:成品要\"看起来就是模板原样\"时用 `ppt_patch`(模板真身 + 工作区内容——只改 <a:t>,rPr/几何/渐变/字体/图片原样保留;未动页内容 sha256 验证不变;与 ppt_export 互不影响,常规导出仍走渲染)。模板工作区自带 reference/template.pptx 时直接用它作底版。",
|
|
35
|
+
"7. 交付前:S4 全通过 + S6 导出 .pptx + 交付说明(素材来源、未视觉审阅项、修改指引)。**内容审阅(M3 重写 2026-09-18)**:有具体数字/事实主张的稿子,交付前用 `ppt_crosscheck` 生成「审阅材料包」(全页正文 + 素材清单 + 审阅协议)→ 再按协议做一次内容审阅:**默认用独立子代理**(全新上下文、只给材料包与素材文件;**用户明确禁止子代理时改自审并标注「自审(同上下文)」**),逐条判\"一致 / 冲突 / 无来源支撑 / 无法核实\",重点核对同一指标跨页值是否一致、数字是否有依据、结论是否强于数据;**没有外部素材时只能判\"无法核实\",不得报绿**。该工具**只汇总材料、不做判定、不构成门禁**(旧版 grounded/unmapped 状态与跨页数字分组已废除)。制作进程中**供用户看稿优先用 ppt_preview(dir)**(返回同源预览链接,用户点击即看,附在交付信息里);导出前/后均可预览。**修改既有精美 PPT 的某一页(edit/augment 高频场景)**:ppt_import 参考层读真身 → 改工作区页并审阅清零 → **`ppt_splice`**(只把该页替换进原稿:保留源母版横幅/页脚/备注关系/媒体,其余页条目 SHA256 逐字节一致——不要整册近似重渲伤及其他页)→ 交付整册副本;用户要\"单页独立版\"再 **`ppt_slice`**;抽查该页观感用 **`ppt_visual pages=N`**(按页真渲染,不必整册);\"看起来就是模板原样\"用 `ppt_patch`(手术贴模板)。",
|
|
36
|
+
"8. 版式系统(审美基线,用户风格优先):写页面之前先定版式规则——默认基线:8px 网格对齐、3-4 级字号阶梯、4-5 色主题(只在 $theme 内取色)、统一间距节奏(8/16/24px)、左右外边界一致、构图重心居中;**用户对风格有要求(字体/字号/配色/密度)一律优先,默认基线仅为未指定时的风格参考**。文字:短句化(每块 ≤60 字为默认参考,可依内容放宽),**文本最小字号以用户指令为准**(hardConstraints;未给下限不设强制),长句在语义断点显式 \\\\n 换行。",
|
|
37
|
+
"9. 审美建议(ppt_verify 输出的 [·] 建议)不是门禁,但请逐条斟酌采纳;overlap/out-of-page/text-overflow 错误仍必须清零(审美改进不得引入元素区块冲突)。",
|
|
38
|
+
"10. 引擎:auto 默认 = pptd(自研主引擎,图表矢量拼绘);pptd 硬失败时自动回退 python-pptx(报告醒目标注降级);python-pptx 仅用户显式指定时使用(其图表降级为表格)——除非用户要求,不要自行切换引擎。",
|
|
39
|
+
"11. 质量档 audit(/ppt quality audit,从严门禁):禁 autoDeclare(工具已拦);每页必须 ppt_shot + 读图视觉审阅(无读图能力则降级结构 Lint 并在交付说明标注\"未经视觉审阅\");导出报告必须包含并核对 audit 回读断言(页数/尺寸/最小字号 ≥ minFontSize);有 Office 时导出后自动 **Office 真渲染**(成品视觉审核,逐页 read_image);交付说明含素材来源与数据脱敏/假设标注。",
|
|
40
|
+
"12. **真渲染抽检铁律(P1 事故教训)**:有 Office 时,真渲染抽查**必须覆盖所有含 table/chart/image/custGeom 的页**(每类至少一页,其余页轮换)——不要只挑\"美观重点页\";抽查后逐页 read_image(渲染图已带 1px=1pt 比例标注水印,降低坐标误判)。导出报告会给出建议覆盖页清单(P8 行)。"
|
|
41
|
+
]
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"quick": false,
|
|
45
|
+
"taskType": "augment",
|
|
46
|
+
"name": "ppt-workflow",
|
|
47
|
+
"lines": [
|
|
48
|
+
"=== PPT 制作工作流已激活(dsh-ppt-studio) ===",
|
|
49
|
+
"任务类型:augment(from-scratch 从头 / augment 补完 / edit 修改 / summarize 总结)",
|
|
50
|
+
"协作模式:auto|内容忠实度 auto|审阅 points|质量 standard|引擎 auto|暂停点 无(/ppt 可改)",
|
|
51
|
+
"",
|
|
52
|
+
"【执行阶段】(按序推进,已完成可跳过,循环至交付):",
|
|
53
|
+
" S0 规格澄清 → S1 大纲与素材准备 → S2 视觉定调(样例页)→ S3 逐页制作 → S4 页审循环 → S5 整体审 → S6 导出交付",
|
|
54
|
+
"",
|
|
55
|
+
"【入门(减少试错,反馈整合)】",
|
|
56
|
+
" - 语法速查:先调 ppt_schema(deck.yaml/元素/主题 token/声明/安全区速查);要完整可跑样例:ppt_new 生成示例工程(含 expectedOverlaps 与 safeArea 范本);回归样例在插件 examples/smoke。",
|
|
57
|
+
" - 制作手册(内置技能,按需加载;纯增益,不改任何铁律与门禁):定纲/定版式前加载 `ppt-studio-craft`;页面要放数字与图表时加载 `ppt-studio-data`;写标题与要点时加载 `ppt-studio-copy`。三本只给启发式与反例——**门禁数值一律以 ppt_verify 输出与用户指令为准**;不加载也照常工作。",
|
|
58
|
+
" - 答疑手册 `ppt-studio-manual`(内置技能):**只在用户提问时加载**(问用法/写法/报错/交付路径)——**制作开工时不要加载**。制作中只是自己拿不准某个写法/工具语义 → 调 ppt_schema(DSL 权威速查)/ ppt_check / ppt_verify 拿输出,不要靠读手册。",
|
|
59
|
+
" - line 元素可省略 bounds(由 points 的 AABB 自动推导,w/h≥1px)。",
|
|
60
|
+
" - 模板背景带 logo/页眉/页脚带:在 deck.yaml theme.safeArea(或页面级 safeArea)配置上/下/左/右安全边距,verify 会把安全区外的元素判为出界;ppt_render debug=true 会画出安全区参考框。",
|
|
61
|
+
" - 文本溢出:verify 与导出共用同一保守度量;**字号下限 = 用户指令**——用户给出最小字号(如\"不得小于12号\")→ 把该值写入 theme.minFontSize 并严格执行——导出 auto-fit 缩字不得低于它;到下限仍溢出会明确报告(✗),请扩大容器或精简文案;用户未给下限 → 不做强制(auto-fit 仅 60% 原字号保底,绝不升字)。",
|
|
62
|
+
" - 批量声明:色块衬底/图片标注/箭头跨越等\"警告级\"未声明重叠,用 ppt_verify autoDeclare=true 一键写入 expectedOverlaps;内容互压(content-collision)不支持自动声明,必须手工改布局。写入后输出**声明清单**(每对附一句意图:色块衬底/图上标注/箭头跨越),说不清意图的对子必须改布局而不是声明(D1)。",
|
|
63
|
+
" - 出界声明(expectedOutOfSafeArea)不批量、必须手工:验证报安全区出界错误时,确认\"这是有意的 logo/角标\"才加入声明;不确定就先移动元素。",
|
|
64
|
+
"",
|
|
65
|
+
"【铁律】",
|
|
66
|
+
"1. 产物 = 中间层项目(deck.yaml + pages/*.yaml + media/)。页面用元素描述(bounds 为 [x,y,w,h] px,1px=1pt,原点左上);不要直接写 pptx。",
|
|
67
|
+
"2. 每页制作后依次运行:ppt_render → ppt_verify(数字审阅)→ ppt_shot(有读图能力时视觉审阅);overlap/out-of-page/text-overflow 错误清零后才算通过。**重叠语义(设计意图声明制)**:设计页面时把**有意**重叠的元素对记入页面 `expectedOverlaps`(图片上标注、色块衬底、箭头跨越等);审阅时警告级重叠逐对与声明对照——命中 = 确认(✓ 预期重叠),未命中 = 设计预期外错误(修正布局,或确认是有意的 → 补声明再验);**嵌套承载(面板→框→文字)只需声明相邻层对,隔层由声明闭包自动通过**;**内容互压(文字/表格/图表相互遮挡)不支持声明豁免,永远错误**;纯装饰元素可加 `role: decoration` 豁免**重叠**(装饰性=设计意图声明)。**出界分级(与声明制同构)**:超页面边界=永远错误不可声明;超安全区(模板页眉页脚带)=声明制——有意落在带上的 logo/角标/水印逐元素写入页面 `expectedOutOfSafeArea`(不批量、必须手工,id 必须存在);未命中=错误。declaration 之后若要免声明批量使用:仅重叠可用 `ppt_verify autoDeclare=true`(见入门段),出界声明永远手工。",
|
|
68
|
+
"3. 样式只用 theme token($colors/$textStyles 引用);新增风格先改 theme,不允许页面里出现脱离主题的颜色/字号。",
|
|
69
|
+
"4. 文本必须给出文本框实际容纳能力:先算文本面积再放框(字体字号→行宽行数),溢出用更小字号或更大框修复,不要靠视觉猜。",
|
|
70
|
+
"5. 用户明确要求(hardConstraints)任何模式下严格遵循;未指定处可自决。",
|
|
71
|
+
"6. 素材:用户提供的 > 从用户内容提取(文档/网页)> 自行生成/搜索;素材理解(物理规格程序化读取 + 语义理解),无读图能力时请用户描述后写入素材说明。",
|
|
72
|
+
"6a. **视觉理解通道(v0.8.0→v0.9.1,先看后做;参考任务 = 参考双轨)**:用户提供的 .pptx(参考稿/待改稿)经 `ppt_import` 后工作区**自动带参考层**——`reference/source.pptx`(零失真真相)+ `reference/previews/NN.png`(Office 真渲染整页,COM 可用时)+ deck.yaml 顶部 `referenceSource`。**创作前先 read_image 看 reference/previews/*.png(整页真身:配色/版式/形状语言/字体气质/渐变阴影)→ 视觉理解写入设计摘要,再动手**——与模板双轨(6b)\"按模板做\"是同一通道、完全等价;无 Office 时自动降级(XML 推断 + source.pptx 可用 `ppt_visual` 补渲 + 标注\"未经 Office 真渲染理解\")。**\"完整明白原稿长什么样\"是参考类任务的第一步,不能跳过**。",
|
|
73
|
+
"6b. **模板决策(S1 前完成,需求 2/4)**:按**来源优先级**决定参考谁——① **用户给了自己的模板,或任务是对既有 ppt 补完/修改** ⇒ **只以用户那份为参考**(先 `ppt_import` 读真身:`reference/previews/*.png` + `audit.yaml`),**内置模板一律不参与**(也别拿它当风格种子);② **用户明确要求用内置模板** ⇒ 由用户指令决定是他自己挑、还是你按**主题适配度**挑一套(`ppt_templates` 展示清单与预览图),选定后 `ppt_new dir=<工作区> template=<id>` 复制工作区;③ **用户没提模板** ⇒ **默认按题材自己设计风格**(配色/版式/字体都从主题来),**不要把内置模板当兜底**;只有某个内置模板**明显贴合**该题材时才考虑参考它(低优先级,并说明为什么贴合)。内置模板现状:business-blue 商务蓝 / academic-white 学术会议 / tech-dark 科技深色 / pitch-bold 路演大字。**用户自建模板库(v1.0.6)**:用户交 .pptx 要入库 → `ppt_template_add pptx=<绝对路径>`(内部先 import,保留原始 pptx 作真相层;写进**用户层** `<dshHome>/ppt-studio/templates`,升级不丢);要删 → `ppt_template_remove id=<id>`(**只能删自建的**,随包模板拒删)。用户自己攒的模板**视同\"用户给的模板\"**,在优先级里属最高档。**模板工作区语义(v0.7)**:`pages/_*.yaml` 是参考母版(**不注册进 deck.pages,不进 render/verify 门禁**,仅作版式参照);`pages/01_opening.yaml` 是模板首母版的**正式副本**(注册进门禁)——先 `ppt_verify autoDeclare=true` 声明模板固有有意叠层,剩余错误是模板原文案残留,替换/删除后自然干净;新增正式页 = 复制母版去 `_` 前缀 + 注册进 deck.yaml pages。\"统一模板保持基础样式\"要求走同一路径(模板文件先 ppt_import 并启用其 theme 聚合块)。**模板一致性(v0.5)**:verify theme-conformance strict 默认门禁——页面颜色必须 ∈ theme.colors 或中性灰;页面要新颜色就先加进 theme。**模板双轨(v0.9)**:模板 = 骨架层(pages/_*.yaml 母版,结构机器可验证)+ 真相层(原始 pptx + Office 真渲染整页 PNG + styleAudit)。materialize 后工作区含 `reference/`(template.pptx、previews/NN.png、audit.yaml),deck.yaml 顶部记 `referenceTemplate`(id/previews 路径/audit 引用)。**\"按模板做\" = \"参考用户给的 ppt 制作\",完全等价(同一参考双轨通道)**:创作前先 read_image 看 `reference/previews/*.png`(整页真身:配色/版式/形状语言/字体气质/渐变阴影)→ 读 `reference/audit.yaml`(视觉审计缓存,`ppt_template_styleaudit` 一次性生成)→ 视觉理解写入设计意图 → 再动手创作;无 reference(无 Office 收纳/内置模板)则退化为骨架层 + audit 缺失说明,不再有\"从 40% 保真近似里猜\"的失真环节。**手术模式(v0.10,候选 B)**:成品要\"看起来就是模板原样\"时用 `ppt_patch`(模板真身 + 工作区内容——只改 <a:t>,rPr/几何/渐变/字体/图片原样保留;未动页内容 sha256 验证不变;与 ppt_export 互不影响,常规导出仍走渲染)。模板工作区自带 reference/template.pptx 时直接用它作底版。",
|
|
74
|
+
"7. 交付前:S4 全通过 + S6 导出 .pptx + 交付说明(素材来源、未视觉审阅项、修改指引)。**内容审阅(M3 重写 2026-09-18)**:有具体数字/事实主张的稿子,交付前用 `ppt_crosscheck` 生成「审阅材料包」(全页正文 + 素材清单 + 审阅协议)→ 再按协议做一次内容审阅:**默认用独立子代理**(全新上下文、只给材料包与素材文件;**用户明确禁止子代理时改自审并标注「自审(同上下文)」**),逐条判\"一致 / 冲突 / 无来源支撑 / 无法核实\",重点核对同一指标跨页值是否一致、数字是否有依据、结论是否强于数据;**没有外部素材时只能判\"无法核实\",不得报绿**。该工具**只汇总材料、不做判定、不构成门禁**(旧版 grounded/unmapped 状态与跨页数字分组已废除)。制作进程中**供用户看稿优先用 ppt_preview(dir)**(返回同源预览链接,用户点击即看,附在交付信息里);导出前/后均可预览。**修改既有精美 PPT 的某一页(edit/augment 高频场景)**:ppt_import 参考层读真身 → 改工作区页并审阅清零 → **`ppt_splice`**(只把该页替换进原稿:保留源母版横幅/页脚/备注关系/媒体,其余页条目 SHA256 逐字节一致——不要整册近似重渲伤及其他页)→ 交付整册副本;用户要\"单页独立版\"再 **`ppt_slice`**;抽查该页观感用 **`ppt_visual pages=N`**(按页真渲染,不必整册);\"看起来就是模板原样\"用 `ppt_patch`(手术贴模板)。",
|
|
75
|
+
"8. 版式系统(审美基线,用户风格优先):写页面之前先定版式规则——默认基线:8px 网格对齐、3-4 级字号阶梯、4-5 色主题(只在 $theme 内取色)、统一间距节奏(8/16/24px)、左右外边界一致、构图重心居中;**用户对风格有要求(字体/字号/配色/密度)一律优先,默认基线仅为未指定时的风格参考**。文字:短句化(每块 ≤60 字为默认参考,可依内容放宽),**文本最小字号以用户指令为准**(hardConstraints;未给下限不设强制),长句在语义断点显式 \\\\n 换行。",
|
|
76
|
+
"9. 审美建议(ppt_verify 输出的 [·] 建议)不是门禁,但请逐条斟酌采纳;overlap/out-of-page/text-overflow 错误仍必须清零(审美改进不得引入元素区块冲突)。",
|
|
77
|
+
"10. 引擎:auto 默认 = pptd(自研主引擎,图表矢量拼绘);pptd 硬失败时自动回退 python-pptx(报告醒目标注降级);python-pptx 仅用户显式指定时使用(其图表降级为表格)——除非用户要求,不要自行切换引擎。",
|
|
78
|
+
"11. 质量档 audit(/ppt quality audit,从严门禁):禁 autoDeclare(工具已拦);每页必须 ppt_shot + 读图视觉审阅(无读图能力则降级结构 Lint 并在交付说明标注\"未经视觉审阅\");导出报告必须包含并核对 audit 回读断言(页数/尺寸/最小字号 ≥ minFontSize);有 Office 时导出后自动 **Office 真渲染**(成品视觉审核,逐页 read_image);交付说明含素材来源与数据脱敏/假设标注。",
|
|
79
|
+
"12. **真渲染抽检铁律(P1 事故教训)**:有 Office 时,真渲染抽查**必须覆盖所有含 table/chart/image/custGeom 的页**(每类至少一页,其余页轮换)——不要只挑\"美观重点页\";抽查后逐页 read_image(渲染图已带 1px=1pt 比例标注水印,降低坐标误判)。导出报告会给出建议覆盖页清单(P8 行)。"
|
|
80
|
+
]
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"quick": false,
|
|
84
|
+
"taskType": "edit",
|
|
85
|
+
"name": "ppt-workflow",
|
|
86
|
+
"lines": [
|
|
87
|
+
"=== PPT 制作工作流已激活(dsh-ppt-studio) ===",
|
|
88
|
+
"任务类型:edit(from-scratch 从头 / augment 补完 / edit 修改 / summarize 总结)",
|
|
89
|
+
"协作模式:auto|内容忠实度 auto|审阅 points|质量 standard|引擎 auto|暂停点 无(/ppt 可改)",
|
|
90
|
+
"",
|
|
91
|
+
"【执行阶段】(按序推进,已完成可跳过,循环至交付):",
|
|
92
|
+
" S0 规格澄清 → S1 大纲与素材准备 → S2 视觉定调(样例页)→ S3 逐页制作 → S4 页审循环 → S5 整体审 → S6 导出交付",
|
|
93
|
+
"",
|
|
94
|
+
"【入门(减少试错,反馈整合)】",
|
|
95
|
+
" - 语法速查:先调 ppt_schema(deck.yaml/元素/主题 token/声明/安全区速查);要完整可跑样例:ppt_new 生成示例工程(含 expectedOverlaps 与 safeArea 范本);回归样例在插件 examples/smoke。",
|
|
96
|
+
" - 制作手册(内置技能,按需加载;纯增益,不改任何铁律与门禁):定纲/定版式前加载 `ppt-studio-craft`;页面要放数字与图表时加载 `ppt-studio-data`;写标题与要点时加载 `ppt-studio-copy`。三本只给启发式与反例——**门禁数值一律以 ppt_verify 输出与用户指令为准**;不加载也照常工作。",
|
|
97
|
+
" - 答疑手册 `ppt-studio-manual`(内置技能):**只在用户提问时加载**(问用法/写法/报错/交付路径)——**制作开工时不要加载**。制作中只是自己拿不准某个写法/工具语义 → 调 ppt_schema(DSL 权威速查)/ ppt_check / ppt_verify 拿输出,不要靠读手册。",
|
|
98
|
+
" - line 元素可省略 bounds(由 points 的 AABB 自动推导,w/h≥1px)。",
|
|
99
|
+
" - 模板背景带 logo/页眉/页脚带:在 deck.yaml theme.safeArea(或页面级 safeArea)配置上/下/左/右安全边距,verify 会把安全区外的元素判为出界;ppt_render debug=true 会画出安全区参考框。",
|
|
100
|
+
" - 文本溢出:verify 与导出共用同一保守度量;**字号下限 = 用户指令**——用户给出最小字号(如\"不得小于12号\")→ 把该值写入 theme.minFontSize 并严格执行——导出 auto-fit 缩字不得低于它;到下限仍溢出会明确报告(✗),请扩大容器或精简文案;用户未给下限 → 不做强制(auto-fit 仅 60% 原字号保底,绝不升字)。",
|
|
101
|
+
" - 批量声明:色块衬底/图片标注/箭头跨越等\"警告级\"未声明重叠,用 ppt_verify autoDeclare=true 一键写入 expectedOverlaps;内容互压(content-collision)不支持自动声明,必须手工改布局。写入后输出**声明清单**(每对附一句意图:色块衬底/图上标注/箭头跨越),说不清意图的对子必须改布局而不是声明(D1)。",
|
|
102
|
+
" - 出界声明(expectedOutOfSafeArea)不批量、必须手工:验证报安全区出界错误时,确认\"这是有意的 logo/角标\"才加入声明;不确定就先移动元素。",
|
|
103
|
+
"",
|
|
104
|
+
"【铁律】",
|
|
105
|
+
"1. 产物 = 中间层项目(deck.yaml + pages/*.yaml + media/)。页面用元素描述(bounds 为 [x,y,w,h] px,1px=1pt,原点左上);不要直接写 pptx。",
|
|
106
|
+
"2. 每页制作后依次运行:ppt_render → ppt_verify(数字审阅)→ ppt_shot(有读图能力时视觉审阅);overlap/out-of-page/text-overflow 错误清零后才算通过。**重叠语义(设计意图声明制)**:设计页面时把**有意**重叠的元素对记入页面 `expectedOverlaps`(图片上标注、色块衬底、箭头跨越等);审阅时警告级重叠逐对与声明对照——命中 = 确认(✓ 预期重叠),未命中 = 设计预期外错误(修正布局,或确认是有意的 → 补声明再验);**嵌套承载(面板→框→文字)只需声明相邻层对,隔层由声明闭包自动通过**;**内容互压(文字/表格/图表相互遮挡)不支持声明豁免,永远错误**;纯装饰元素可加 `role: decoration` 豁免**重叠**(装饰性=设计意图声明)。**出界分级(与声明制同构)**:超页面边界=永远错误不可声明;超安全区(模板页眉页脚带)=声明制——有意落在带上的 logo/角标/水印逐元素写入页面 `expectedOutOfSafeArea`(不批量、必须手工,id 必须存在);未命中=错误。declaration 之后若要免声明批量使用:仅重叠可用 `ppt_verify autoDeclare=true`(见入门段),出界声明永远手工。",
|
|
107
|
+
"3. 样式只用 theme token($colors/$textStyles 引用);新增风格先改 theme,不允许页面里出现脱离主题的颜色/字号。",
|
|
108
|
+
"4. 文本必须给出文本框实际容纳能力:先算文本面积再放框(字体字号→行宽行数),溢出用更小字号或更大框修复,不要靠视觉猜。",
|
|
109
|
+
"5. 用户明确要求(hardConstraints)任何模式下严格遵循;未指定处可自决。",
|
|
110
|
+
"6. 素材:用户提供的 > 从用户内容提取(文档/网页)> 自行生成/搜索;素材理解(物理规格程序化读取 + 语义理解),无读图能力时请用户描述后写入素材说明。",
|
|
111
|
+
"6a. **视觉理解通道(v0.8.0→v0.9.1,先看后做;参考任务 = 参考双轨)**:用户提供的 .pptx(参考稿/待改稿)经 `ppt_import` 后工作区**自动带参考层**——`reference/source.pptx`(零失真真相)+ `reference/previews/NN.png`(Office 真渲染整页,COM 可用时)+ deck.yaml 顶部 `referenceSource`。**创作前先 read_image 看 reference/previews/*.png(整页真身:配色/版式/形状语言/字体气质/渐变阴影)→ 视觉理解写入设计摘要,再动手**——与模板双轨(6b)\"按模板做\"是同一通道、完全等价;无 Office 时自动降级(XML 推断 + source.pptx 可用 `ppt_visual` 补渲 + 标注\"未经 Office 真渲染理解\")。**\"完整明白原稿长什么样\"是参考类任务的第一步,不能跳过**。",
|
|
112
|
+
"6b. **模板决策(S1 前完成,需求 2/4)**:按**来源优先级**决定参考谁——① **用户给了自己的模板,或任务是对既有 ppt 补完/修改** ⇒ **只以用户那份为参考**(先 `ppt_import` 读真身:`reference/previews/*.png` + `audit.yaml`),**内置模板一律不参与**(也别拿它当风格种子);② **用户明确要求用内置模板** ⇒ 由用户指令决定是他自己挑、还是你按**主题适配度**挑一套(`ppt_templates` 展示清单与预览图),选定后 `ppt_new dir=<工作区> template=<id>` 复制工作区;③ **用户没提模板** ⇒ **默认按题材自己设计风格**(配色/版式/字体都从主题来),**不要把内置模板当兜底**;只有某个内置模板**明显贴合**该题材时才考虑参考它(低优先级,并说明为什么贴合)。内置模板现状:business-blue 商务蓝 / academic-white 学术会议 / tech-dark 科技深色 / pitch-bold 路演大字。**用户自建模板库(v1.0.6)**:用户交 .pptx 要入库 → `ppt_template_add pptx=<绝对路径>`(内部先 import,保留原始 pptx 作真相层;写进**用户层** `<dshHome>/ppt-studio/templates`,升级不丢);要删 → `ppt_template_remove id=<id>`(**只能删自建的**,随包模板拒删)。用户自己攒的模板**视同\"用户给的模板\"**,在优先级里属最高档。**模板工作区语义(v0.7)**:`pages/_*.yaml` 是参考母版(**不注册进 deck.pages,不进 render/verify 门禁**,仅作版式参照);`pages/01_opening.yaml` 是模板首母版的**正式副本**(注册进门禁)——先 `ppt_verify autoDeclare=true` 声明模板固有有意叠层,剩余错误是模板原文案残留,替换/删除后自然干净;新增正式页 = 复制母版去 `_` 前缀 + 注册进 deck.yaml pages。\"统一模板保持基础样式\"要求走同一路径(模板文件先 ppt_import 并启用其 theme 聚合块)。**模板一致性(v0.5)**:verify theme-conformance strict 默认门禁——页面颜色必须 ∈ theme.colors 或中性灰;页面要新颜色就先加进 theme。**模板双轨(v0.9)**:模板 = 骨架层(pages/_*.yaml 母版,结构机器可验证)+ 真相层(原始 pptx + Office 真渲染整页 PNG + styleAudit)。materialize 后工作区含 `reference/`(template.pptx、previews/NN.png、audit.yaml),deck.yaml 顶部记 `referenceTemplate`(id/previews 路径/audit 引用)。**\"按模板做\" = \"参考用户给的 ppt 制作\",完全等价(同一参考双轨通道)**:创作前先 read_image 看 `reference/previews/*.png`(整页真身:配色/版式/形状语言/字体气质/渐变阴影)→ 读 `reference/audit.yaml`(视觉审计缓存,`ppt_template_styleaudit` 一次性生成)→ 视觉理解写入设计意图 → 再动手创作;无 reference(无 Office 收纳/内置模板)则退化为骨架层 + audit 缺失说明,不再有\"从 40% 保真近似里猜\"的失真环节。**手术模式(v0.10,候选 B)**:成品要\"看起来就是模板原样\"时用 `ppt_patch`(模板真身 + 工作区内容——只改 <a:t>,rPr/几何/渐变/字体/图片原样保留;未动页内容 sha256 验证不变;与 ppt_export 互不影响,常规导出仍走渲染)。模板工作区自带 reference/template.pptx 时直接用它作底版。",
|
|
113
|
+
"7. 交付前:S4 全通过 + S6 导出 .pptx + 交付说明(素材来源、未视觉审阅项、修改指引)。**内容审阅(M3 重写 2026-09-18)**:有具体数字/事实主张的稿子,交付前用 `ppt_crosscheck` 生成「审阅材料包」(全页正文 + 素材清单 + 审阅协议)→ 再按协议做一次内容审阅:**默认用独立子代理**(全新上下文、只给材料包与素材文件;**用户明确禁止子代理时改自审并标注「自审(同上下文)」**),逐条判\"一致 / 冲突 / 无来源支撑 / 无法核实\",重点核对同一指标跨页值是否一致、数字是否有依据、结论是否强于数据;**没有外部素材时只能判\"无法核实\",不得报绿**。该工具**只汇总材料、不做判定、不构成门禁**(旧版 grounded/unmapped 状态与跨页数字分组已废除)。制作进程中**供用户看稿优先用 ppt_preview(dir)**(返回同源预览链接,用户点击即看,附在交付信息里);导出前/后均可预览。**修改既有精美 PPT 的某一页(edit/augment 高频场景)**:ppt_import 参考层读真身 → 改工作区页并审阅清零 → **`ppt_splice`**(只把该页替换进原稿:保留源母版横幅/页脚/备注关系/媒体,其余页条目 SHA256 逐字节一致——不要整册近似重渲伤及其他页)→ 交付整册副本;用户要\"单页独立版\"再 **`ppt_slice`**;抽查该页观感用 **`ppt_visual pages=N`**(按页真渲染,不必整册);\"看起来就是模板原样\"用 `ppt_patch`(手术贴模板)。",
|
|
114
|
+
"8. 版式系统(审美基线,用户风格优先):写页面之前先定版式规则——默认基线:8px 网格对齐、3-4 级字号阶梯、4-5 色主题(只在 $theme 内取色)、统一间距节奏(8/16/24px)、左右外边界一致、构图重心居中;**用户对风格有要求(字体/字号/配色/密度)一律优先,默认基线仅为未指定时的风格参考**。文字:短句化(每块 ≤60 字为默认参考,可依内容放宽),**文本最小字号以用户指令为准**(hardConstraints;未给下限不设强制),长句在语义断点显式 \\\\n 换行。",
|
|
115
|
+
"9. 审美建议(ppt_verify 输出的 [·] 建议)不是门禁,但请逐条斟酌采纳;overlap/out-of-page/text-overflow 错误仍必须清零(审美改进不得引入元素区块冲突)。",
|
|
116
|
+
"10. 引擎:auto 默认 = pptd(自研主引擎,图表矢量拼绘);pptd 硬失败时自动回退 python-pptx(报告醒目标注降级);python-pptx 仅用户显式指定时使用(其图表降级为表格)——除非用户要求,不要自行切换引擎。",
|
|
117
|
+
"11. 质量档 audit(/ppt quality audit,从严门禁):禁 autoDeclare(工具已拦);每页必须 ppt_shot + 读图视觉审阅(无读图能力则降级结构 Lint 并在交付说明标注\"未经视觉审阅\");导出报告必须包含并核对 audit 回读断言(页数/尺寸/最小字号 ≥ minFontSize);有 Office 时导出后自动 **Office 真渲染**(成品视觉审核,逐页 read_image);交付说明含素材来源与数据脱敏/假设标注。",
|
|
118
|
+
"12. **真渲染抽检铁律(P1 事故教训)**:有 Office 时,真渲染抽查**必须覆盖所有含 table/chart/image/custGeom 的页**(每类至少一页,其余页轮换)——不要只挑\"美观重点页\";抽查后逐页 read_image(渲染图已带 1px=1pt 比例标注水印,降低坐标误判)。导出报告会给出建议覆盖页清单(P8 行)。"
|
|
119
|
+
]
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
"quick": false,
|
|
123
|
+
"taskType": "summarize",
|
|
124
|
+
"name": "ppt-workflow",
|
|
125
|
+
"lines": [
|
|
126
|
+
"=== PPT 制作工作流已激活(dsh-ppt-studio) ===",
|
|
127
|
+
"任务类型:summarize(from-scratch 从头 / augment 补完 / edit 修改 / summarize 总结)",
|
|
128
|
+
"协作模式:auto|内容忠实度 auto|审阅 points|质量 standard|引擎 auto|暂停点 无(/ppt 可改)",
|
|
129
|
+
"",
|
|
130
|
+
"【执行阶段】(按序推进,已完成可跳过,循环至交付):",
|
|
131
|
+
" S0 规格澄清 → S1 大纲与素材准备 → S2 视觉定调(样例页)→ S3 逐页制作 → S4 页审循环 → S5 整体审 → S6 导出交付",
|
|
132
|
+
"",
|
|
133
|
+
"【入门(减少试错,反馈整合)】",
|
|
134
|
+
" - 语法速查:先调 ppt_schema(deck.yaml/元素/主题 token/声明/安全区速查);要完整可跑样例:ppt_new 生成示例工程(含 expectedOverlaps 与 safeArea 范本);回归样例在插件 examples/smoke。",
|
|
135
|
+
" - 制作手册(内置技能,按需加载;纯增益,不改任何铁律与门禁):定纲/定版式前加载 `ppt-studio-craft`;页面要放数字与图表时加载 `ppt-studio-data`;写标题与要点时加载 `ppt-studio-copy`。三本只给启发式与反例——**门禁数值一律以 ppt_verify 输出与用户指令为准**;不加载也照常工作。",
|
|
136
|
+
" - 答疑手册 `ppt-studio-manual`(内置技能):**只在用户提问时加载**(问用法/写法/报错/交付路径)——**制作开工时不要加载**。制作中只是自己拿不准某个写法/工具语义 → 调 ppt_schema(DSL 权威速查)/ ppt_check / ppt_verify 拿输出,不要靠读手册。",
|
|
137
|
+
" - line 元素可省略 bounds(由 points 的 AABB 自动推导,w/h≥1px)。",
|
|
138
|
+
" - 模板背景带 logo/页眉/页脚带:在 deck.yaml theme.safeArea(或页面级 safeArea)配置上/下/左/右安全边距,verify 会把安全区外的元素判为出界;ppt_render debug=true 会画出安全区参考框。",
|
|
139
|
+
" - 文本溢出:verify 与导出共用同一保守度量;**字号下限 = 用户指令**——用户给出最小字号(如\"不得小于12号\")→ 把该值写入 theme.minFontSize 并严格执行——导出 auto-fit 缩字不得低于它;到下限仍溢出会明确报告(✗),请扩大容器或精简文案;用户未给下限 → 不做强制(auto-fit 仅 60% 原字号保底,绝不升字)。",
|
|
140
|
+
" - 批量声明:色块衬底/图片标注/箭头跨越等\"警告级\"未声明重叠,用 ppt_verify autoDeclare=true 一键写入 expectedOverlaps;内容互压(content-collision)不支持自动声明,必须手工改布局。写入后输出**声明清单**(每对附一句意图:色块衬底/图上标注/箭头跨越),说不清意图的对子必须改布局而不是声明(D1)。",
|
|
141
|
+
" - 出界声明(expectedOutOfSafeArea)不批量、必须手工:验证报安全区出界错误时,确认\"这是有意的 logo/角标\"才加入声明;不确定就先移动元素。",
|
|
142
|
+
"",
|
|
143
|
+
"【铁律】",
|
|
144
|
+
"1. 产物 = 中间层项目(deck.yaml + pages/*.yaml + media/)。页面用元素描述(bounds 为 [x,y,w,h] px,1px=1pt,原点左上);不要直接写 pptx。",
|
|
145
|
+
"2. 每页制作后依次运行:ppt_render → ppt_verify(数字审阅)→ ppt_shot(有读图能力时视觉审阅);overlap/out-of-page/text-overflow 错误清零后才算通过。**重叠语义(设计意图声明制)**:设计页面时把**有意**重叠的元素对记入页面 `expectedOverlaps`(图片上标注、色块衬底、箭头跨越等);审阅时警告级重叠逐对与声明对照——命中 = 确认(✓ 预期重叠),未命中 = 设计预期外错误(修正布局,或确认是有意的 → 补声明再验);**嵌套承载(面板→框→文字)只需声明相邻层对,隔层由声明闭包自动通过**;**内容互压(文字/表格/图表相互遮挡)不支持声明豁免,永远错误**;纯装饰元素可加 `role: decoration` 豁免**重叠**(装饰性=设计意图声明)。**出界分级(与声明制同构)**:超页面边界=永远错误不可声明;超安全区(模板页眉页脚带)=声明制——有意落在带上的 logo/角标/水印逐元素写入页面 `expectedOutOfSafeArea`(不批量、必须手工,id 必须存在);未命中=错误。declaration 之后若要免声明批量使用:仅重叠可用 `ppt_verify autoDeclare=true`(见入门段),出界声明永远手工。",
|
|
146
|
+
"3. 样式只用 theme token($colors/$textStyles 引用);新增风格先改 theme,不允许页面里出现脱离主题的颜色/字号。",
|
|
147
|
+
"4. 文本必须给出文本框实际容纳能力:先算文本面积再放框(字体字号→行宽行数),溢出用更小字号或更大框修复,不要靠视觉猜。",
|
|
148
|
+
"5. 用户明确要求(hardConstraints)任何模式下严格遵循;未指定处可自决。",
|
|
149
|
+
"6. 素材:用户提供的 > 从用户内容提取(文档/网页)> 自行生成/搜索;素材理解(物理规格程序化读取 + 语义理解),无读图能力时请用户描述后写入素材说明。",
|
|
150
|
+
"6a. **视觉理解通道(v0.8.0→v0.9.1,先看后做;参考任务 = 参考双轨)**:用户提供的 .pptx(参考稿/待改稿)经 `ppt_import` 后工作区**自动带参考层**——`reference/source.pptx`(零失真真相)+ `reference/previews/NN.png`(Office 真渲染整页,COM 可用时)+ deck.yaml 顶部 `referenceSource`。**创作前先 read_image 看 reference/previews/*.png(整页真身:配色/版式/形状语言/字体气质/渐变阴影)→ 视觉理解写入设计摘要,再动手**——与模板双轨(6b)\"按模板做\"是同一通道、完全等价;无 Office 时自动降级(XML 推断 + source.pptx 可用 `ppt_visual` 补渲 + 标注\"未经 Office 真渲染理解\")。**\"完整明白原稿长什么样\"是参考类任务的第一步,不能跳过**。",
|
|
151
|
+
"6b. **模板决策(S1 前完成,需求 2/4)**:按**来源优先级**决定参考谁——① **用户给了自己的模板,或任务是对既有 ppt 补完/修改** ⇒ **只以用户那份为参考**(先 `ppt_import` 读真身:`reference/previews/*.png` + `audit.yaml`),**内置模板一律不参与**(也别拿它当风格种子);② **用户明确要求用内置模板** ⇒ 由用户指令决定是他自己挑、还是你按**主题适配度**挑一套(`ppt_templates` 展示清单与预览图),选定后 `ppt_new dir=<工作区> template=<id>` 复制工作区;③ **用户没提模板** ⇒ **默认按题材自己设计风格**(配色/版式/字体都从主题来),**不要把内置模板当兜底**;只有某个内置模板**明显贴合**该题材时才考虑参考它(低优先级,并说明为什么贴合)。内置模板现状:business-blue 商务蓝 / academic-white 学术会议 / tech-dark 科技深色 / pitch-bold 路演大字。**用户自建模板库(v1.0.6)**:用户交 .pptx 要入库 → `ppt_template_add pptx=<绝对路径>`(内部先 import,保留原始 pptx 作真相层;写进**用户层** `<dshHome>/ppt-studio/templates`,升级不丢);要删 → `ppt_template_remove id=<id>`(**只能删自建的**,随包模板拒删)。用户自己攒的模板**视同\"用户给的模板\"**,在优先级里属最高档。**模板工作区语义(v0.7)**:`pages/_*.yaml` 是参考母版(**不注册进 deck.pages,不进 render/verify 门禁**,仅作版式参照);`pages/01_opening.yaml` 是模板首母版的**正式副本**(注册进门禁)——先 `ppt_verify autoDeclare=true` 声明模板固有有意叠层,剩余错误是模板原文案残留,替换/删除后自然干净;新增正式页 = 复制母版去 `_` 前缀 + 注册进 deck.yaml pages。\"统一模板保持基础样式\"要求走同一路径(模板文件先 ppt_import 并启用其 theme 聚合块)。**模板一致性(v0.5)**:verify theme-conformance strict 默认门禁——页面颜色必须 ∈ theme.colors 或中性灰;页面要新颜色就先加进 theme。**模板双轨(v0.9)**:模板 = 骨架层(pages/_*.yaml 母版,结构机器可验证)+ 真相层(原始 pptx + Office 真渲染整页 PNG + styleAudit)。materialize 后工作区含 `reference/`(template.pptx、previews/NN.png、audit.yaml),deck.yaml 顶部记 `referenceTemplate`(id/previews 路径/audit 引用)。**\"按模板做\" = \"参考用户给的 ppt 制作\",完全等价(同一参考双轨通道)**:创作前先 read_image 看 `reference/previews/*.png`(整页真身:配色/版式/形状语言/字体气质/渐变阴影)→ 读 `reference/audit.yaml`(视觉审计缓存,`ppt_template_styleaudit` 一次性生成)→ 视觉理解写入设计意图 → 再动手创作;无 reference(无 Office 收纳/内置模板)则退化为骨架层 + audit 缺失说明,不再有\"从 40% 保真近似里猜\"的失真环节。**手术模式(v0.10,候选 B)**:成品要\"看起来就是模板原样\"时用 `ppt_patch`(模板真身 + 工作区内容——只改 <a:t>,rPr/几何/渐变/字体/图片原样保留;未动页内容 sha256 验证不变;与 ppt_export 互不影响,常规导出仍走渲染)。模板工作区自带 reference/template.pptx 时直接用它作底版。",
|
|
152
|
+
"7. 交付前:S4 全通过 + S6 导出 .pptx + 交付说明(素材来源、未视觉审阅项、修改指引)。**内容审阅(M3 重写 2026-09-18)**:有具体数字/事实主张的稿子,交付前用 `ppt_crosscheck` 生成「审阅材料包」(全页正文 + 素材清单 + 审阅协议)→ 再按协议做一次内容审阅:**默认用独立子代理**(全新上下文、只给材料包与素材文件;**用户明确禁止子代理时改自审并标注「自审(同上下文)」**),逐条判\"一致 / 冲突 / 无来源支撑 / 无法核实\",重点核对同一指标跨页值是否一致、数字是否有依据、结论是否强于数据;**没有外部素材时只能判\"无法核实\",不得报绿**。该工具**只汇总材料、不做判定、不构成门禁**(旧版 grounded/unmapped 状态与跨页数字分组已废除)。制作进程中**供用户看稿优先用 ppt_preview(dir)**(返回同源预览链接,用户点击即看,附在交付信息里);导出前/后均可预览。**修改既有精美 PPT 的某一页(edit/augment 高频场景)**:ppt_import 参考层读真身 → 改工作区页并审阅清零 → **`ppt_splice`**(只把该页替换进原稿:保留源母版横幅/页脚/备注关系/媒体,其余页条目 SHA256 逐字节一致——不要整册近似重渲伤及其他页)→ 交付整册副本;用户要\"单页独立版\"再 **`ppt_slice`**;抽查该页观感用 **`ppt_visual pages=N`**(按页真渲染,不必整册);\"看起来就是模板原样\"用 `ppt_patch`(手术贴模板)。",
|
|
153
|
+
"8. 版式系统(审美基线,用户风格优先):写页面之前先定版式规则——默认基线:8px 网格对齐、3-4 级字号阶梯、4-5 色主题(只在 $theme 内取色)、统一间距节奏(8/16/24px)、左右外边界一致、构图重心居中;**用户对风格有要求(字体/字号/配色/密度)一律优先,默认基线仅为未指定时的风格参考**。文字:短句化(每块 ≤60 字为默认参考,可依内容放宽),**文本最小字号以用户指令为准**(hardConstraints;未给下限不设强制),长句在语义断点显式 \\\\n 换行。",
|
|
154
|
+
"9. 审美建议(ppt_verify 输出的 [·] 建议)不是门禁,但请逐条斟酌采纳;overlap/out-of-page/text-overflow 错误仍必须清零(审美改进不得引入元素区块冲突)。",
|
|
155
|
+
"10. 引擎:auto 默认 = pptd(自研主引擎,图表矢量拼绘);pptd 硬失败时自动回退 python-pptx(报告醒目标注降级);python-pptx 仅用户显式指定时使用(其图表降级为表格)——除非用户要求,不要自行切换引擎。",
|
|
156
|
+
"11. 质量档 audit(/ppt quality audit,从严门禁):禁 autoDeclare(工具已拦);每页必须 ppt_shot + 读图视觉审阅(无读图能力则降级结构 Lint 并在交付说明标注\"未经视觉审阅\");导出报告必须包含并核对 audit 回读断言(页数/尺寸/最小字号 ≥ minFontSize);有 Office 时导出后自动 **Office 真渲染**(成品视觉审核,逐页 read_image);交付说明含素材来源与数据脱敏/假设标注。",
|
|
157
|
+
"12. **真渲染抽检铁律(P1 事故教训)**:有 Office 时,真渲染抽查**必须覆盖所有含 table/chart/image/custGeom 的页**(每类至少一页,其余页轮换)——不要只挑\"美观重点页\";抽查后逐页 read_image(渲染图已带 1px=1pt 比例标注水印,降低坐标误判)。导出报告会给出建议覆盖页清单(P8 行)。"
|
|
158
|
+
]
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
"quick": false,
|
|
162
|
+
"taskType": "unknown",
|
|
163
|
+
"name": "ppt-workflow",
|
|
164
|
+
"lines": [
|
|
165
|
+
"=== PPT 制作工作流已激活(dsh-ppt-studio) ===",
|
|
166
|
+
"任务类型:unknown(from-scratch 从头 / augment 补完 / edit 修改 / summarize 总结)",
|
|
167
|
+
"协作模式:auto|内容忠实度 auto|审阅 points|质量 standard|引擎 auto|暂停点 无(/ppt 可改)",
|
|
168
|
+
"",
|
|
169
|
+
"【执行阶段】(按序推进,已完成可跳过,循环至交付):",
|
|
170
|
+
" S0 规格澄清 → S1 大纲与素材准备 → S2 视觉定调(样例页)→ S3 逐页制作 → S4 页审循环 → S5 整体审 → S6 导出交付",
|
|
171
|
+
"",
|
|
172
|
+
"【入门(减少试错,反馈整合)】",
|
|
173
|
+
" - 语法速查:先调 ppt_schema(deck.yaml/元素/主题 token/声明/安全区速查);要完整可跑样例:ppt_new 生成示例工程(含 expectedOverlaps 与 safeArea 范本);回归样例在插件 examples/smoke。",
|
|
174
|
+
" - 制作手册(内置技能,按需加载;纯增益,不改任何铁律与门禁):定纲/定版式前加载 `ppt-studio-craft`;页面要放数字与图表时加载 `ppt-studio-data`;写标题与要点时加载 `ppt-studio-copy`。三本只给启发式与反例——**门禁数值一律以 ppt_verify 输出与用户指令为准**;不加载也照常工作。",
|
|
175
|
+
" - 答疑手册 `ppt-studio-manual`(内置技能):**只在用户提问时加载**(问用法/写法/报错/交付路径)——**制作开工时不要加载**。制作中只是自己拿不准某个写法/工具语义 → 调 ppt_schema(DSL 权威速查)/ ppt_check / ppt_verify 拿输出,不要靠读手册。",
|
|
176
|
+
" - line 元素可省略 bounds(由 points 的 AABB 自动推导,w/h≥1px)。",
|
|
177
|
+
" - 模板背景带 logo/页眉/页脚带:在 deck.yaml theme.safeArea(或页面级 safeArea)配置上/下/左/右安全边距,verify 会把安全区外的元素判为出界;ppt_render debug=true 会画出安全区参考框。",
|
|
178
|
+
" - 文本溢出:verify 与导出共用同一保守度量;**字号下限 = 用户指令**——用户给出最小字号(如\"不得小于12号\")→ 把该值写入 theme.minFontSize 并严格执行——导出 auto-fit 缩字不得低于它;到下限仍溢出会明确报告(✗),请扩大容器或精简文案;用户未给下限 → 不做强制(auto-fit 仅 60% 原字号保底,绝不升字)。",
|
|
179
|
+
" - 批量声明:色块衬底/图片标注/箭头跨越等\"警告级\"未声明重叠,用 ppt_verify autoDeclare=true 一键写入 expectedOverlaps;内容互压(content-collision)不支持自动声明,必须手工改布局。写入后输出**声明清单**(每对附一句意图:色块衬底/图上标注/箭头跨越),说不清意图的对子必须改布局而不是声明(D1)。",
|
|
180
|
+
" - 出界声明(expectedOutOfSafeArea)不批量、必须手工:验证报安全区出界错误时,确认\"这是有意的 logo/角标\"才加入声明;不确定就先移动元素。",
|
|
181
|
+
"",
|
|
182
|
+
"【铁律】",
|
|
183
|
+
"1. 产物 = 中间层项目(deck.yaml + pages/*.yaml + media/)。页面用元素描述(bounds 为 [x,y,w,h] px,1px=1pt,原点左上);不要直接写 pptx。",
|
|
184
|
+
"2. 每页制作后依次运行:ppt_render → ppt_verify(数字审阅)→ ppt_shot(有读图能力时视觉审阅);overlap/out-of-page/text-overflow 错误清零后才算通过。**重叠语义(设计意图声明制)**:设计页面时把**有意**重叠的元素对记入页面 `expectedOverlaps`(图片上标注、色块衬底、箭头跨越等);审阅时警告级重叠逐对与声明对照——命中 = 确认(✓ 预期重叠),未命中 = 设计预期外错误(修正布局,或确认是有意的 → 补声明再验);**嵌套承载(面板→框→文字)只需声明相邻层对,隔层由声明闭包自动通过**;**内容互压(文字/表格/图表相互遮挡)不支持声明豁免,永远错误**;纯装饰元素可加 `role: decoration` 豁免**重叠**(装饰性=设计意图声明)。**出界分级(与声明制同构)**:超页面边界=永远错误不可声明;超安全区(模板页眉页脚带)=声明制——有意落在带上的 logo/角标/水印逐元素写入页面 `expectedOutOfSafeArea`(不批量、必须手工,id 必须存在);未命中=错误。declaration 之后若要免声明批量使用:仅重叠可用 `ppt_verify autoDeclare=true`(见入门段),出界声明永远手工。",
|
|
185
|
+
"3. 样式只用 theme token($colors/$textStyles 引用);新增风格先改 theme,不允许页面里出现脱离主题的颜色/字号。",
|
|
186
|
+
"4. 文本必须给出文本框实际容纳能力:先算文本面积再放框(字体字号→行宽行数),溢出用更小字号或更大框修复,不要靠视觉猜。",
|
|
187
|
+
"5. 用户明确要求(hardConstraints)任何模式下严格遵循;未指定处可自决。",
|
|
188
|
+
"6. 素材:用户提供的 > 从用户内容提取(文档/网页)> 自行生成/搜索;素材理解(物理规格程序化读取 + 语义理解),无读图能力时请用户描述后写入素材说明。",
|
|
189
|
+
"6a. **视觉理解通道(v0.8.0→v0.9.1,先看后做;参考任务 = 参考双轨)**:用户提供的 .pptx(参考稿/待改稿)经 `ppt_import` 后工作区**自动带参考层**——`reference/source.pptx`(零失真真相)+ `reference/previews/NN.png`(Office 真渲染整页,COM 可用时)+ deck.yaml 顶部 `referenceSource`。**创作前先 read_image 看 reference/previews/*.png(整页真身:配色/版式/形状语言/字体气质/渐变阴影)→ 视觉理解写入设计摘要,再动手**——与模板双轨(6b)\"按模板做\"是同一通道、完全等价;无 Office 时自动降级(XML 推断 + source.pptx 可用 `ppt_visual` 补渲 + 标注\"未经 Office 真渲染理解\")。**\"完整明白原稿长什么样\"是参考类任务的第一步,不能跳过**。",
|
|
190
|
+
"6b. **模板决策(S1 前完成,需求 2/4)**:按**来源优先级**决定参考谁——① **用户给了自己的模板,或任务是对既有 ppt 补完/修改** ⇒ **只以用户那份为参考**(先 `ppt_import` 读真身:`reference/previews/*.png` + `audit.yaml`),**内置模板一律不参与**(也别拿它当风格种子);② **用户明确要求用内置模板** ⇒ 由用户指令决定是他自己挑、还是你按**主题适配度**挑一套(`ppt_templates` 展示清单与预览图),选定后 `ppt_new dir=<工作区> template=<id>` 复制工作区;③ **用户没提模板** ⇒ **默认按题材自己设计风格**(配色/版式/字体都从主题来),**不要把内置模板当兜底**;只有某个内置模板**明显贴合**该题材时才考虑参考它(低优先级,并说明为什么贴合)。内置模板现状:business-blue 商务蓝 / academic-white 学术会议 / tech-dark 科技深色 / pitch-bold 路演大字。**用户自建模板库(v1.0.6)**:用户交 .pptx 要入库 → `ppt_template_add pptx=<绝对路径>`(内部先 import,保留原始 pptx 作真相层;写进**用户层** `<dshHome>/ppt-studio/templates`,升级不丢);要删 → `ppt_template_remove id=<id>`(**只能删自建的**,随包模板拒删)。用户自己攒的模板**视同\"用户给的模板\"**,在优先级里属最高档。**模板工作区语义(v0.7)**:`pages/_*.yaml` 是参考母版(**不注册进 deck.pages,不进 render/verify 门禁**,仅作版式参照);`pages/01_opening.yaml` 是模板首母版的**正式副本**(注册进门禁)——先 `ppt_verify autoDeclare=true` 声明模板固有有意叠层,剩余错误是模板原文案残留,替换/删除后自然干净;新增正式页 = 复制母版去 `_` 前缀 + 注册进 deck.yaml pages。\"统一模板保持基础样式\"要求走同一路径(模板文件先 ppt_import 并启用其 theme 聚合块)。**模板一致性(v0.5)**:verify theme-conformance strict 默认门禁——页面颜色必须 ∈ theme.colors 或中性灰;页面要新颜色就先加进 theme。**模板双轨(v0.9)**:模板 = 骨架层(pages/_*.yaml 母版,结构机器可验证)+ 真相层(原始 pptx + Office 真渲染整页 PNG + styleAudit)。materialize 后工作区含 `reference/`(template.pptx、previews/NN.png、audit.yaml),deck.yaml 顶部记 `referenceTemplate`(id/previews 路径/audit 引用)。**\"按模板做\" = \"参考用户给的 ppt 制作\",完全等价(同一参考双轨通道)**:创作前先 read_image 看 `reference/previews/*.png`(整页真身:配色/版式/形状语言/字体气质/渐变阴影)→ 读 `reference/audit.yaml`(视觉审计缓存,`ppt_template_styleaudit` 一次性生成)→ 视觉理解写入设计意图 → 再动手创作;无 reference(无 Office 收纳/内置模板)则退化为骨架层 + audit 缺失说明,不再有\"从 40% 保真近似里猜\"的失真环节。**手术模式(v0.10,候选 B)**:成品要\"看起来就是模板原样\"时用 `ppt_patch`(模板真身 + 工作区内容——只改 <a:t>,rPr/几何/渐变/字体/图片原样保留;未动页内容 sha256 验证不变;与 ppt_export 互不影响,常规导出仍走渲染)。模板工作区自带 reference/template.pptx 时直接用它作底版。",
|
|
191
|
+
"7. 交付前:S4 全通过 + S6 导出 .pptx + 交付说明(素材来源、未视觉审阅项、修改指引)。**内容审阅(M3 重写 2026-09-18)**:有具体数字/事实主张的稿子,交付前用 `ppt_crosscheck` 生成「审阅材料包」(全页正文 + 素材清单 + 审阅协议)→ 再按协议做一次内容审阅:**默认用独立子代理**(全新上下文、只给材料包与素材文件;**用户明确禁止子代理时改自审并标注「自审(同上下文)」**),逐条判\"一致 / 冲突 / 无来源支撑 / 无法核实\",重点核对同一指标跨页值是否一致、数字是否有依据、结论是否强于数据;**没有外部素材时只能判\"无法核实\",不得报绿**。该工具**只汇总材料、不做判定、不构成门禁**(旧版 grounded/unmapped 状态与跨页数字分组已废除)。制作进程中**供用户看稿优先用 ppt_preview(dir)**(返回同源预览链接,用户点击即看,附在交付信息里);导出前/后均可预览。**修改既有精美 PPT 的某一页(edit/augment 高频场景)**:ppt_import 参考层读真身 → 改工作区页并审阅清零 → **`ppt_splice`**(只把该页替换进原稿:保留源母版横幅/页脚/备注关系/媒体,其余页条目 SHA256 逐字节一致——不要整册近似重渲伤及其他页)→ 交付整册副本;用户要\"单页独立版\"再 **`ppt_slice`**;抽查该页观感用 **`ppt_visual pages=N`**(按页真渲染,不必整册);\"看起来就是模板原样\"用 `ppt_patch`(手术贴模板)。",
|
|
192
|
+
"8. 版式系统(审美基线,用户风格优先):写页面之前先定版式规则——默认基线:8px 网格对齐、3-4 级字号阶梯、4-5 色主题(只在 $theme 内取色)、统一间距节奏(8/16/24px)、左右外边界一致、构图重心居中;**用户对风格有要求(字体/字号/配色/密度)一律优先,默认基线仅为未指定时的风格参考**。文字:短句化(每块 ≤60 字为默认参考,可依内容放宽),**文本最小字号以用户指令为准**(hardConstraints;未给下限不设强制),长句在语义断点显式 \\\\n 换行。",
|
|
193
|
+
"9. 审美建议(ppt_verify 输出的 [·] 建议)不是门禁,但请逐条斟酌采纳;overlap/out-of-page/text-overflow 错误仍必须清零(审美改进不得引入元素区块冲突)。",
|
|
194
|
+
"10. 引擎:auto 默认 = pptd(自研主引擎,图表矢量拼绘);pptd 硬失败时自动回退 python-pptx(报告醒目标注降级);python-pptx 仅用户显式指定时使用(其图表降级为表格)——除非用户要求,不要自行切换引擎。",
|
|
195
|
+
"11. 质量档 audit(/ppt quality audit,从严门禁):禁 autoDeclare(工具已拦);每页必须 ppt_shot + 读图视觉审阅(无读图能力则降级结构 Lint 并在交付说明标注\"未经视觉审阅\");导出报告必须包含并核对 audit 回读断言(页数/尺寸/最小字号 ≥ minFontSize);有 Office 时导出后自动 **Office 真渲染**(成品视觉审核,逐页 read_image);交付说明含素材来源与数据脱敏/假设标注。",
|
|
196
|
+
"12. **真渲染抽检铁律(P1 事故教训)**:有 Office 时,真渲染抽查**必须覆盖所有含 table/chart/image/custGeom 的页**(每类至少一页,其余页轮换)——不要只挑\"美观重点页\";抽查后逐页 read_image(渲染图已带 1px=1pt 比例标注水印,降低坐标误判)。导出报告会给出建议覆盖页清单(P8 行)。"
|
|
197
|
+
]
|
|
198
|
+
},
|
|
199
|
+
{
|
|
200
|
+
"quick": true,
|
|
201
|
+
"taskType": "from-scratch",
|
|
202
|
+
"name": "ppt-workflow",
|
|
203
|
+
"lines": [
|
|
204
|
+
"=== PPT 工作流已激活(dsh-ppt-studio · 快速模式) ===",
|
|
205
|
+
"任务类型:from-scratch(from-scratch 从头 / augment 补完 / edit 修改 / summarize 总结)|协作 auto|引擎 auto(常见值见下)",
|
|
206
|
+
"",
|
|
207
|
+
"【快速模式铁律】(低 token 快交付,质量底线不变)",
|
|
208
|
+
"0. 不熟悉 DSL 语法:先调 ppt_schema;要现成骨架:ppt_new 生成样例再改。",
|
|
209
|
+
"1. S0 最小化:按消息推断,最多一次简短确认(≤1 问);不 grill、不做多轮讨论。",
|
|
210
|
+
"2. 版式:用中性三件套骨架(封面/内容/结尾),**不套内置模板**、不做视觉定调;配色与字号按本册主题(按题材定)走,下限以用户指令为准(未给下限不做强制)。",
|
|
211
|
+
"3. 素材:只使用用户提供或纯色块/图形表达;不做素材搜索、不生成复杂图表(需要时用表格或简单柱形)。",
|
|
212
|
+
"4. 页数:≤8 页(用户指定除外);每页文本精简(每块 ≤40 字为默认参考,用户要求可放宽)。",
|
|
213
|
+
"5. 审阅:ppt_render + ppt_verify 必跑——内容互压/出界/文本溢出/预期外重叠(设计意图声明制)必须清零;出界分级同标准模式(超页面不可声明;安全区外有意元素逐项加 expectedOutOfSafeArea);autoDeclare 后附一句意图说明;跳过截图视觉审阅与美学迭代。",
|
|
214
|
+
"6. 交付:ppt_export(引擎 auto=pptd)→ 交付说明标注\"快速模式:未经视觉审阅\"。",
|
|
215
|
+
"7. 引擎:auto 默认 = pptd(自研主引擎,图表矢量拼绘);python-pptx 仅显式指定或 pptd 失败时使用(其图表降级为表格)。不要自行切换引擎。",
|
|
216
|
+
"8. 用户明确要求始终优先;回到完整模式:/ppt normal。"
|
|
217
|
+
]
|
|
218
|
+
},
|
|
219
|
+
{
|
|
220
|
+
"quick": true,
|
|
221
|
+
"taskType": "augment",
|
|
222
|
+
"name": "ppt-workflow",
|
|
223
|
+
"lines": [
|
|
224
|
+
"=== PPT 工作流已激活(dsh-ppt-studio · 快速模式) ===",
|
|
225
|
+
"任务类型:augment(from-scratch 从头 / augment 补完 / edit 修改 / summarize 总结)|协作 auto|引擎 auto(常见值见下)",
|
|
226
|
+
"",
|
|
227
|
+
"【快速模式铁律】(低 token 快交付,质量底线不变)",
|
|
228
|
+
"0. 不熟悉 DSL 语法:先调 ppt_schema;要现成骨架:ppt_new 生成样例再改。",
|
|
229
|
+
"1. S0 最小化:按消息推断,最多一次简短确认(≤1 问);不 grill、不做多轮讨论。",
|
|
230
|
+
"2. 版式:用中性三件套骨架(封面/内容/结尾),**不套内置模板**、不做视觉定调;配色与字号按本册主题(按题材定)走,下限以用户指令为准(未给下限不做强制)。",
|
|
231
|
+
"3. 素材:只使用用户提供或纯色块/图形表达;不做素材搜索、不生成复杂图表(需要时用表格或简单柱形)。",
|
|
232
|
+
"4. 页数:≤8 页(用户指定除外);每页文本精简(每块 ≤40 字为默认参考,用户要求可放宽)。",
|
|
233
|
+
"5. 审阅:ppt_render + ppt_verify 必跑——内容互压/出界/文本溢出/预期外重叠(设计意图声明制)必须清零;出界分级同标准模式(超页面不可声明;安全区外有意元素逐项加 expectedOutOfSafeArea);autoDeclare 后附一句意图说明;跳过截图视觉审阅与美学迭代。",
|
|
234
|
+
"6. 交付:ppt_export(引擎 auto=pptd)→ 交付说明标注\"快速模式:未经视觉审阅\"。",
|
|
235
|
+
"7. 引擎:auto 默认 = pptd(自研主引擎,图表矢量拼绘);python-pptx 仅显式指定或 pptd 失败时使用(其图表降级为表格)。不要自行切换引擎。",
|
|
236
|
+
"8. 用户明确要求始终优先;回到完整模式:/ppt normal。"
|
|
237
|
+
]
|
|
238
|
+
},
|
|
239
|
+
{
|
|
240
|
+
"quick": true,
|
|
241
|
+
"taskType": "edit",
|
|
242
|
+
"name": "ppt-workflow",
|
|
243
|
+
"lines": [
|
|
244
|
+
"=== PPT 工作流已激活(dsh-ppt-studio · 快速模式) ===",
|
|
245
|
+
"任务类型:edit(from-scratch 从头 / augment 补完 / edit 修改 / summarize 总结)|协作 auto|引擎 auto(常见值见下)",
|
|
246
|
+
"",
|
|
247
|
+
"【快速模式铁律】(低 token 快交付,质量底线不变)",
|
|
248
|
+
"0. 不熟悉 DSL 语法:先调 ppt_schema;要现成骨架:ppt_new 生成样例再改。",
|
|
249
|
+
"1. S0 最小化:按消息推断,最多一次简短确认(≤1 问);不 grill、不做多轮讨论。",
|
|
250
|
+
"2. 版式:用中性三件套骨架(封面/内容/结尾),**不套内置模板**、不做视觉定调;配色与字号按本册主题(按题材定)走,下限以用户指令为准(未给下限不做强制)。",
|
|
251
|
+
"3. 素材:只使用用户提供或纯色块/图形表达;不做素材搜索、不生成复杂图表(需要时用表格或简单柱形)。",
|
|
252
|
+
"4. 页数:≤8 页(用户指定除外);每页文本精简(每块 ≤40 字为默认参考,用户要求可放宽)。",
|
|
253
|
+
"5. 审阅:ppt_render + ppt_verify 必跑——内容互压/出界/文本溢出/预期外重叠(设计意图声明制)必须清零;出界分级同标准模式(超页面不可声明;安全区外有意元素逐项加 expectedOutOfSafeArea);autoDeclare 后附一句意图说明;跳过截图视觉审阅与美学迭代。",
|
|
254
|
+
"6. 交付:ppt_export(引擎 auto=pptd)→ 交付说明标注\"快速模式:未经视觉审阅\"。",
|
|
255
|
+
"7. 引擎:auto 默认 = pptd(自研主引擎,图表矢量拼绘);python-pptx 仅显式指定或 pptd 失败时使用(其图表降级为表格)。不要自行切换引擎。",
|
|
256
|
+
"8. 用户明确要求始终优先;回到完整模式:/ppt normal。"
|
|
257
|
+
]
|
|
258
|
+
},
|
|
259
|
+
{
|
|
260
|
+
"quick": true,
|
|
261
|
+
"taskType": "summarize",
|
|
262
|
+
"name": "ppt-workflow",
|
|
263
|
+
"lines": [
|
|
264
|
+
"=== PPT 工作流已激活(dsh-ppt-studio · 快速模式) ===",
|
|
265
|
+
"任务类型:summarize(from-scratch 从头 / augment 补完 / edit 修改 / summarize 总结)|协作 auto|引擎 auto(常见值见下)",
|
|
266
|
+
"",
|
|
267
|
+
"【快速模式铁律】(低 token 快交付,质量底线不变)",
|
|
268
|
+
"0. 不熟悉 DSL 语法:先调 ppt_schema;要现成骨架:ppt_new 生成样例再改。",
|
|
269
|
+
"1. S0 最小化:按消息推断,最多一次简短确认(≤1 问);不 grill、不做多轮讨论。",
|
|
270
|
+
"2. 版式:用中性三件套骨架(封面/内容/结尾),**不套内置模板**、不做视觉定调;配色与字号按本册主题(按题材定)走,下限以用户指令为准(未给下限不做强制)。",
|
|
271
|
+
"3. 素材:只使用用户提供或纯色块/图形表达;不做素材搜索、不生成复杂图表(需要时用表格或简单柱形)。",
|
|
272
|
+
"4. 页数:≤8 页(用户指定除外);每页文本精简(每块 ≤40 字为默认参考,用户要求可放宽)。",
|
|
273
|
+
"5. 审阅:ppt_render + ppt_verify 必跑——内容互压/出界/文本溢出/预期外重叠(设计意图声明制)必须清零;出界分级同标准模式(超页面不可声明;安全区外有意元素逐项加 expectedOutOfSafeArea);autoDeclare 后附一句意图说明;跳过截图视觉审阅与美学迭代。",
|
|
274
|
+
"6. 交付:ppt_export(引擎 auto=pptd)→ 交付说明标注\"快速模式:未经视觉审阅\"。",
|
|
275
|
+
"7. 引擎:auto 默认 = pptd(自研主引擎,图表矢量拼绘);python-pptx 仅显式指定或 pptd 失败时使用(其图表降级为表格)。不要自行切换引擎。",
|
|
276
|
+
"8. 用户明确要求始终优先;回到完整模式:/ppt normal。"
|
|
277
|
+
]
|
|
278
|
+
},
|
|
279
|
+
{
|
|
280
|
+
"quick": true,
|
|
281
|
+
"taskType": "unknown",
|
|
282
|
+
"name": "ppt-workflow",
|
|
283
|
+
"lines": [
|
|
284
|
+
"=== PPT 工作流已激活(dsh-ppt-studio · 快速模式) ===",
|
|
285
|
+
"任务类型:unknown(from-scratch 从头 / augment 补完 / edit 修改 / summarize 总结)|协作 auto|引擎 auto(常见值见下)",
|
|
286
|
+
"",
|
|
287
|
+
"【快速模式铁律】(低 token 快交付,质量底线不变)",
|
|
288
|
+
"0. 不熟悉 DSL 语法:先调 ppt_schema;要现成骨架:ppt_new 生成样例再改。",
|
|
289
|
+
"1. S0 最小化:按消息推断,最多一次简短确认(≤1 问);不 grill、不做多轮讨论。",
|
|
290
|
+
"2. 版式:用中性三件套骨架(封面/内容/结尾),**不套内置模板**、不做视觉定调;配色与字号按本册主题(按题材定)走,下限以用户指令为准(未给下限不做强制)。",
|
|
291
|
+
"3. 素材:只使用用户提供或纯色块/图形表达;不做素材搜索、不生成复杂图表(需要时用表格或简单柱形)。",
|
|
292
|
+
"4. 页数:≤8 页(用户指定除外);每页文本精简(每块 ≤40 字为默认参考,用户要求可放宽)。",
|
|
293
|
+
"5. 审阅:ppt_render + ppt_verify 必跑——内容互压/出界/文本溢出/预期外重叠(设计意图声明制)必须清零;出界分级同标准模式(超页面不可声明;安全区外有意元素逐项加 expectedOutOfSafeArea);autoDeclare 后附一句意图说明;跳过截图视觉审阅与美学迭代。",
|
|
294
|
+
"6. 交付:ppt_export(引擎 auto=pptd)→ 交付说明标注\"快速模式:未经视觉审阅\"。",
|
|
295
|
+
"7. 引擎:auto 默认 = pptd(自研主引擎,图表矢量拼绘);python-pptx 仅显式指定或 pptd 失败时使用(其图表降级为表格)。不要自行切换引擎。",
|
|
296
|
+
"8. 用户明确要求始终优先;回到完整模式:/ppt normal。"
|
|
297
|
+
]
|
|
298
|
+
}
|
|
299
|
+
]
|
|
300
|
+
}
|