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,537 @@
|
|
|
1
|
+
# PPT 插件设计文档(头脑风暴成果 · 持续更新)
|
|
2
|
+
|
|
3
|
+
> 状态:讨论推进中,主干已定;待细化项见文末清单。
|
|
4
|
+
> 愿景:**该插件能应用到复杂场景中,实现其他工具做不好的 PPT 制作。**
|
|
5
|
+
> 差异化 = 四类任务全兼容 + 布局工程(元素冲突防治)+ 跨页整体性 +
|
|
6
|
+
> 协作模式光谱 + 引擎可插拔 + 双通道控制 + 质检门禁。
|
|
7
|
+
> **复杂场景定义(已拍板)**:长 deck(50+ 页)+ 多源内容整合 + 高认知负荷
|
|
8
|
+
> 内容(对忠实度/严谨性要求极高)——设计重心向审计门禁、证据链、
|
|
9
|
+
> 整体一致性倾斜。
|
|
10
|
+
> 目标:在 dsh 上做一个专门用于制作 PPT 的插件(agent preset + 工作流),
|
|
11
|
+
> 包含标准模式(Standard)全部功能;用户提出 PPT 制作类任务时进入专门工作流,
|
|
12
|
+
> 非 PPT 任务行为与标准模式完全一致。
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## 1. 定位与形态
|
|
17
|
+
|
|
18
|
+
- **一个 agent preset**(从 `standard` copy,标准模式全部功能零删减)
|
|
19
|
+
+ **路由/工作流行**(借鉴 `router-standard` 已验证模式:消息分类 → 注入工作流)
|
|
20
|
+
+ **PPT 专用工具集**(见 §10)。
|
|
21
|
+
- 部署位置:`${DSH_HOME:-$HOME/.dsh}/.agent-presets/<preset-id>/`,
|
|
22
|
+
从 shipped `standard` 通过 `agentPresets.copy()` 复制开始,保证可加载。
|
|
23
|
+
- **分发(已拍板)**:官方 bundle 装配通道(`dsh plugin add` + 预设复制,
|
|
24
|
+
重启生效,**不依赖注入器**)+ 开源发布(GitHub Release + npm 包,
|
|
25
|
+
参照现有生态 dsh-external 模式);插件 = npm 包 + preset 目录两部分。
|
|
26
|
+
- 标准模式 = shipped `presets/standard/agent.cordis.yml`(persona / shell /
|
|
27
|
+
文件系统 / jobs / skills / goals / plan mode / compaction / 委托
|
|
28
|
+
(subagent、spawn、fork、workflow、ralph)/ ask-user / todo / web)。
|
|
29
|
+
新预设 = 该文件全量 + 增量行。
|
|
30
|
+
|
|
31
|
+
### 生命周期与路由(双通道控制:语义 + 斜杠命令)
|
|
32
|
+
|
|
33
|
+
**关键前提**:PPT 工作流是"状态/语境"而非"能力切换"——预设 = 标准模式
|
|
34
|
+
全功能 + 工作流提示词,进入/退出只切换提示词语境,不改变能力。因此
|
|
35
|
+
语义误判/漏判代价近零,路由可宽松设计;命令 > 语义。
|
|
36
|
+
|
|
37
|
+
- **进入**:① 语义——消息含**明确 PPT 任务意图**(制作/修改/补完/总结/
|
|
38
|
+
做 slides 等)才进入;纯提及("我看过那个 PPT 文档…")不触发;
|
|
39
|
+
**弱信号不切换**。② 命令——`/ppt on` 强制进入。
|
|
40
|
+
- **退出**:① 语义——消息与 PPT **明确无关**才退出;模棱两可保持
|
|
41
|
+
(代价低)。② 命令——`/ppt off` 强制退出。
|
|
42
|
+
- 生命周期内所有动作视为工作流内:中途改需求("第 3 页改成…")、
|
|
43
|
+
换风格、修 bug。
|
|
44
|
+
- 复用 router 实测经验:分类信号 + 固定"近距离引导"(每轮几行提示),
|
|
45
|
+
router-standard 实测路由准确率 96%。
|
|
46
|
+
- **非 PPT 任务 → 不进入工作流,行为与标准模式完全一致。**
|
|
47
|
+
|
|
48
|
+
### 主要规则
|
|
49
|
+
|
|
50
|
+
- 命令 > 语义;语义推断仅作为"初始倾向",最终默认档以"一次轻量确认"落地。
|
|
51
|
+
- 命令写入 `spec.hardConstraints`(用户明确要求,任何档位都严格遵循);
|
|
52
|
+
`/ppt free` 后询问环节可跳过。
|
|
53
|
+
- 命令可"预设定":任务开始前直接 `/ppt strict` 等效于说明本次开工要确认。
|
|
54
|
+
|
|
55
|
+
### 斜杠命令面(决策:全量子命令首版)
|
|
56
|
+
|
|
57
|
+
| 命令 | 作用 |
|
|
58
|
+
|---|---|
|
|
59
|
+
| `/ppt` | 状态查询(工作流状态/档位/引擎/质量模式/暂停点) |
|
|
60
|
+
| `/ppt on` `/ppt off` | 强制进入/退出(覆盖语义判断) |
|
|
61
|
+
| `/ppt free` `/ppt mid` `/ppt strict` | 强制三档协作模式(自由/中间/严格) |
|
|
62
|
+
| `/ppt fidelity strict\|auto\|free` | 强制内容忠实度(支持 `--page N` 页级) |
|
|
63
|
+
| `/ppt style ...` | 风格参数(如 `/ppt style blue-toned texty aligned`) |
|
|
64
|
+
| `/ppt review none\|points\|every` | 审阅频率(不打扰/关键点/每页) |
|
|
65
|
+
| `/ppt engine pptd\|python-pptx\|pptxgenjs` | 强制引擎(可用性探测展示于状态查询) |
|
|
66
|
+
| `/ppt quality quick\|standard\|audit` | 强制质量模式 |
|
|
67
|
+
| `/ppt pause-after outline\|layout\|pages\|overall` | 追加/覆盖暂停点 |
|
|
68
|
+
| `/ppt help` | 帮助与当前状态 |
|
|
69
|
+
|
|
70
|
+
实现载体参考 dsh 既有 command 机制(command-goal/command-compact),
|
|
71
|
+
preset 内注册命令行 + 会话级状态存储(工作流状态/档位配置写 spec 上下文);
|
|
72
|
+
精确机制实现时用 Inspect 确认。
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## 2. 任务形态(差异化亮点)
|
|
77
|
+
|
|
78
|
+
封闭四类 + 回退通用:
|
|
79
|
+
|
|
80
|
+
| 入口 | 用户给了什么 | 产出 | 工作流起始点 |
|
|
81
|
+
|---|---|---|---|
|
|
82
|
+
| **从头制作** | 主题/内容;可选内置模板或参考模板 | 新 deck | 路由 → 规格 → 全流程 |
|
|
83
|
+
| **补完** | 已有 PPT + 增页需求 | 原 PPT + 新增页 | 解析 → 理解风格/结构 → 从大纲后插入,不重做已有页 |
|
|
84
|
+
| **修改** | 初版 PPT + 某几页修改要求 | 修改后 PPT | 解析 → 定位目标页 → 只对目标页走页级工作流 |
|
|
85
|
+
| **总结** | PPT + 总结要求 | 报告内容/文件(可能不是 pptx) | 解析 → 内容抽取 → 直接生成报告 |
|
|
86
|
+
| 其他/判不出 | — | — | **回退通用标准模式能力**(预设本就含全部功能) |
|
|
87
|
+
|
|
88
|
+
- **已有 PPT 格式**(决策):.pptx 为主 + 降级重建(解析不动时拆页成图 →
|
|
89
|
+
模型看图重建)。
|
|
90
|
+
- **还原保真度**(决策):**内容保真、版式可从新**——导入器只需抽取
|
|
91
|
+
**内容层**(文字/结构/数据/素材)与**风格层**(字体/配色/版式比例/母版特征),
|
|
92
|
+
不做"布局逆推";新页/改后页在内容保真 + 风格参照基础上重新设计。
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
## 3. 模型配置(决策:与标准模式同款读图方案)
|
|
97
|
+
|
|
98
|
+
预设**不自带、不强制**任何读图通道:用户在自己的 dsh 里怎么配
|
|
99
|
+
(主模型多模态直读 / 其他模型辅助 / MCP 外接 / 不能读),PPT 预设沿用同一套。
|
|
100
|
+
模型路由、MCP、插件装配都在 host 层、由用户偏好决定;预设只做
|
|
101
|
+
**能力探测 + 流程适配**:
|
|
102
|
+
|
|
103
|
+
- **能力探测**:运行时读当前会话的读图能力(主模型是否多模态、工具目录中
|
|
104
|
+
是否有读图工具、是否有可派发的视觉子代理通道),不硬编码模型元数据。
|
|
105
|
+
- **软步骤(审美/一致性评审)**:有视觉 → 截图回看;无视觉 →
|
|
106
|
+
自动降级**结构 Lint**(数值断言:溢出、重叠 box、字号层级、颜色对比度、
|
|
107
|
+
图片比例、字体缺失),并标注"未经视觉审阅"。
|
|
108
|
+
- **硬步骤(必须看到,如读懂用户参考图)**:无视觉 → 工作流提示模型
|
|
109
|
+
"本会话无视觉通道,请自选其他方式"(OCR/图像描述/问用户/跳过并标注),
|
|
110
|
+
**不阻止流程**,将"哪些内容未经视觉确认"写入交付说明。
|
|
111
|
+
- 读图通道示例(探测到才用,不绑定):
|
|
112
|
+
- 主模型多模态直读;
|
|
113
|
+
- 外接插件读图(如本机 dsh-vision-toolkit:Image Q&A / OCR / pixel diff);
|
|
114
|
+
- 视觉子代理(tool-subagent 的 modelSelectionSettings,实现时用 Inspect
|
|
115
|
+
确认精确形态)——适合"审美评审":派评审子代理读截图出报告,多页并发。
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
## 4. 工作流:loop + 两档审核 + 可配置暂停点
|
|
120
|
+
|
|
121
|
+
```
|
|
122
|
+
┌──────────────────────────────────────┐
|
|
123
|
+
│ ① 内容大纲确认(含素材准备) │
|
|
124
|
+
▼ │
|
|
125
|
+
② 页面布局设计 ──► ③ 各页制作 ──► ④ 各页审核
|
|
126
|
+
│(页级不过→回到③修该页)
|
|
127
|
+
▲ ▼
|
|
128
|
+
│ ⑤ 整体审核 ──► ⑥ 修改完善
|
|
129
|
+
│ (整体不过/修改建议 → 回到相应阶段)
|
|
130
|
+
└──────────────────────────────────────┘
|
|
131
|
+
循环直到符合要求 → 交付
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
- **④ 页审**:每页做完即时审(渲染→截图→评审/Lint,页级门禁)。
|
|
135
|
+
- **⑤ 整体审**:全 deck 一致性/叙事/风格统一。
|
|
136
|
+
- **暂停点由用户事先指定**(如 `pauseAfter: [大纲, 布局, 每页, 整体]`):
|
|
137
|
+
用户可只卡关键点,也可全自动一条龙、最后一次性看成品。
|
|
138
|
+
配置在 S0 规格澄清时收集进 spec("哪些步骤做完要给你看"),允许中途改。
|
|
139
|
+
- **交互确认点**(决策:三处默认):S0 规格、S2 样例页、S5 交付前预览;
|
|
140
|
+
页审/循环自动跑不打扰。
|
|
141
|
+
- **预览交互(已拍板)**:dsh 网页 UI 内嵌预览——client 插件在对话中直接
|
|
142
|
+
渲染每页/总览图(可翻页、可确认),用户不离开对话;与渲染器共用
|
|
143
|
+
PPTD→HTML 输出。
|
|
144
|
+
|
|
145
|
+
### 阶段细节(从头制作主线;其他任务从对应点插入)
|
|
146
|
+
|
|
147
|
+
| 阶段 | 做什么 | 产物 |
|
|
148
|
+
|---|---|---|
|
|
149
|
+
| S0 规格澄清 | 受众/场景/时长/页数/风格参考/素材/必须内容 → ask_user 补齐 | `spec` |
|
|
150
|
+
| S1 大纲故事线 | 叙事结构(开场-问题-方案-证据-行动),页级规划;**内含素材准备**(见 §5) | `outline` + 素材 manifest |
|
|
151
|
+
| S2 视觉定调 | 从零 + 可选模板:字体/配色/网格/图表风格 → 先做 1 张"模板页"并先行评审一轮 | `theme` + 样例页 |
|
|
152
|
+
| S3 逐页量产 | 主 agent 调度:先串行 2-3 页确认稳定,再并行(subagent/workflow)摊开 | 全部页面 |
|
|
153
|
+
| S4 渲染审阅循环 | 逐页渲染 → 截图 → 视觉评审/Lint → 修正,循环到门禁通过(自动,不打扰) | 通过的页面 |
|
|
154
|
+
| S5 一致性校验 | 全 deck:风格 token 一致、术语一致、图表数据一致、页码导航 | QA 报告 |
|
|
155
|
+
| S6 导出交付 | 导出 .pptx + 预览 + 交付说明(未经视觉审阅项、素材来源、修改指引) | 交付物 |
|
|
156
|
+
|
|
157
|
+
### 量产形态(决策:主 agent 调度 + 并行量产)
|
|
158
|
+
|
|
159
|
+
- 主 agent 主导阶段间调度;S3 用量产引擎(subagent / workflow)并行每页;
|
|
160
|
+
先串行 2-3 页定调,稳定后并行摊开。
|
|
161
|
+
|
|
162
|
+
### 门禁机制(决策:产物 + 校验文件)
|
|
163
|
+
|
|
164
|
+
- 门禁 = 产物存在 + schema 校验 + 质量报告硬验证;
|
|
165
|
+
- 状态写入中间层项目的 page 状态:`draft → rendered → reviewed → approved`;
|
|
166
|
+
- S4 未通过不允许 S6 导出;通过与否记录在状态文件,agent 可读可写;
|
|
167
|
+
- 不依赖强状态机插件(保留 agent 自由度)。
|
|
168
|
+
|
|
169
|
+
---
|
|
170
|
+
|
|
171
|
+
## 4.5 协作模式(用户参与光谱,非两种硬编码模式)
|
|
172
|
+
|
|
173
|
+
用户描述的两类极端("自由发挥" / "严格把控")是一个**参数化光谱**的两端,
|
|
174
|
+
不同用户/不同任务/不同倾向落在光谱任意位置(如:开工前全确认但工作中不审阅)。
|
|
175
|
+
|
|
176
|
+
### 五维参数
|
|
177
|
+
|
|
178
|
+
| 维度 | 自由发挥端 | 严格把控端 |
|
|
179
|
+
|---|---|---|
|
|
180
|
+
| A 开工前确认深度 | 0 轮(说开干就开干) | 多轮 grill(逐项确认) |
|
|
181
|
+
| B 制作中审阅频率 | 0(做完直接交成品) | 每页/关键点积极审阅 |
|
|
182
|
+
| C 内容忠实度 | 自由发挥补充 | 严格忠实(**支持页级**:前述 strict,后段 free) |
|
|
183
|
+
| D 风格遵从度 | 自由发挥 | 严格跟模板/参考(粒度弹性:用户可只指定配色,其余自决) |
|
|
184
|
+
| E 未决事项处置 | 全由模型自决 | 必须用户拍板 |
|
|
185
|
+
|
|
186
|
+
### 档位感知与适配(采用:情境自适应 + 轻量确认 + 会话内记忆)
|
|
187
|
+
|
|
188
|
+
1. **推断**:任务路由时从用户措辞/任务情境推出默认档位
|
|
189
|
+
("你直接做吧"→A0B0;"我们仔细确认下"→多轮;学术/正式→严谨倾向;
|
|
190
|
+
轻松展示→自由倾向;无法判→中间档);
|
|
191
|
+
2. **一次轻量确认**:S0 开头给出推断档位让用户一句话确认/纠正,
|
|
192
|
+
不做问卷轰炸;
|
|
193
|
+
3. **grill-me 机制(严格档)**:**分层问题清单,按档位选择问哪些**——
|
|
194
|
+
L1 影响交付物实质(受众/用途/忠实度/规模/风格基调)→
|
|
195
|
+
L2 细节参数(配色/图文比/对齐/模板遵从度)→ L3 可选(素材偏好等);
|
|
196
|
+
一次一问(或至多一小簇);每问用户可答"你决定"即跳给模型自决;
|
|
197
|
+
答案全部写入 spec;
|
|
198
|
+
4. **硬约束/自决分账**:`spec.hardConstraints`(用户明确给出的要求 =
|
|
199
|
+
任何档位都严格遵循,包括"自由发挥"模式)+ `spec.freeParameters`
|
|
200
|
+
(未指定,模型自决);
|
|
201
|
+
5. **记忆(会话内)**:同会话内多次 PPT 任务复用上次档位,每次仍可覆盖;
|
|
202
|
+
跨会话不自动继承,避免误用。
|
|
203
|
+
6. **命令强制**:任意档位参数均可用斜杠命令强制(`/ppt free|mid|strict`、
|
|
204
|
+
`/ppt fidelity ...`、`/ppt review ...` 等,见 §1.2 命令面);命令写入
|
|
205
|
+
hardConstraints,优先于语义推断与会话记忆。
|
|
206
|
+
|
|
207
|
+
### S0 规格字段扩展
|
|
208
|
+
|
|
209
|
+
- `fidelity`:strict / auto / free(支持 `pages[].fidelity` 页级覆盖);
|
|
210
|
+
- `styleStrictness`:一组**可选参数**(配色色系/素花/图文比/对齐/模板遵从度),
|
|
211
|
+
每项允许"用户未指定 → 模型自决";
|
|
212
|
+
- `collaboration`:confirmDepth / reviewPoints / fidelity / styleStrictness /
|
|
213
|
+
unresolved(五维档位)。
|
|
214
|
+
|
|
215
|
+
---
|
|
216
|
+
|
|
217
|
+
## 5. 素材准备(S1 大纲确认的内含步骤)
|
|
218
|
+
|
|
219
|
+
**目标**:明确需要什么素材 → 按用户偏好渠道搜集 → 充分理解 → 明确如何用。
|
|
220
|
+
|
|
221
|
+
### 素材来源与优先级
|
|
222
|
+
|
|
223
|
+
- 来源四类:① 用户直接提供;② 从用户内容提取(Word 文档内图片、
|
|
224
|
+
网页链接→界面截图、文档图表导出等);③ 插件自生成(流程图/架构图/
|
|
225
|
+
示意图等;暂不含 AI 生图);④ 上网搜索(首版靠标准模式现有
|
|
226
|
+
web_search/web_fetch 能力,不单独建素材库)。
|
|
227
|
+
- 默认优先级:**① > ② > ③(④ 含于生成/补充)**;用户可事先通过指令
|
|
228
|
+
指定偏好(如"优先搜网上的",或某类素材禁用某种渠道)。
|
|
229
|
+
- 策略存为 spec 配置 `materialPolicy`,允许用户按次修改。
|
|
230
|
+
|
|
231
|
+
### 流程
|
|
232
|
+
|
|
233
|
+
1. **素材需求清单**:从大纲推导每页需要的素材(类型/用途/规格要求),
|
|
234
|
+
明确"哪些可以不做素材"(如纯文字排版)。
|
|
235
|
+
2. **搜集**:按优先级逐渠道补足;记录每项来源与获取方式
|
|
236
|
+
(用户提供路径 / 提取位置 / 生成命令 / 搜索 URL)。
|
|
237
|
+
3. **理解(分层)**:
|
|
238
|
+
- **物理层**(程序化,无需视觉):图片宽高/比例/格式/透明底等元数据
|
|
239
|
+
可机器读取——供布局计算引用;
|
|
240
|
+
- **语义层**:能读图 → 视觉理解;不能读图 → 请求用户给出具体描述,
|
|
241
|
+
**把语义描述写入素材 manifest**(一次确认,后续阶段直接引用,
|
|
242
|
+
不反复打扰)。
|
|
243
|
+
4. **素材使用计划**:每个素材明确用于哪页哪个位置/用途;无法满足需求的
|
|
244
|
+
素材要记录"缺口"并决定替代方案。
|
|
245
|
+
|
|
246
|
+
### 产物:素材 manifest
|
|
247
|
+
|
|
248
|
+
```
|
|
249
|
+
素材 manifest:{ id, 路径/URL, 来源(用户/提取/生成/搜索),
|
|
250
|
+
物理规格(尺寸/比例/格式), 语义理解(文本), 使用计划, 状态 }
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
状态:`pending → collected → understood → assigned`;素材清单中
|
|
254
|
+
"待确认项"(如无视觉需用户描述的图)在 S0 暂停点一次性向用户问清。
|
|
255
|
+
|
|
256
|
+
---
|
|
257
|
+
|
|
258
|
+
## 6. 布局工程:元素区块冲突防治(核心亮点)
|
|
259
|
+
|
|
260
|
+
### 定义与冲突模式
|
|
261
|
+
|
|
262
|
+
**元素区块** = 一页中占据页面空间的一切:图形、文本框、图片、表格等。
|
|
263
|
+
|
|
264
|
+
冲突模式(驱动性分类):
|
|
265
|
+
- **重叠**:元素区块相互叠压(文本戳进图片等);
|
|
266
|
+
- **出界**:超出页面 / 超出背景块(放映不可见/跑出设计区);
|
|
267
|
+
- **文本溢出**:文字超出文本框(随后诱发重叠/出界);
|
|
268
|
+
- **对齐失准**:应相对对齐的元素位置偏移、间距不均、难看。
|
|
269
|
+
|
|
270
|
+
### 三层防线(决策:实验融入渲染验证)
|
|
271
|
+
|
|
272
|
+
```
|
|
273
|
+
① 设计蓝图(模型): 布局意图 + 预估计算 → 数字预校验
|
|
274
|
+
↓ 渲染
|
|
275
|
+
② 渲染/产物回读(机器): 布局快照 + 空间断言(精确数字审阅)
|
|
276
|
+
↓ 截图
|
|
277
|
+
③ 视觉审阅(模型/子代理): 审美 + 重点区确认(兜底)
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
- **① 设计阶段**:输出"布局蓝图"——每个元素的**布局意图**(锚点/对齐关系/
|
|
281
|
+
间距/网格,而非纯绝对坐标)+ 预估 bounds(基于字体度量表的文本面积估算、
|
|
282
|
+
换行模拟)。**文本区分"框"与"文字实际面积"**:预估文字占位,声明溢出
|
|
283
|
+
预留。特殊形状(箭头/三角/圆)以真实碰撞体建模(圆=圆碰撞、三角/箭头=
|
|
284
|
+
多边形 SAT、矩形=AABB),把握不足时标记"待视觉确认"。
|
|
285
|
+
**实验 = 蓝图的临时渲染验证**(渲染→断言→视觉,通过后蓝图定稿),
|
|
286
|
+
不另建独立实验页体系。
|
|
287
|
+
- **② 数字审阅(引擎无关,关键修正)**:空间断言**不依赖渲染器**——
|
|
288
|
+
.pptx 的 XML 坐标就是 PowerPoint/WPS 的权威渲染坐标,重叠/出界/对齐/
|
|
289
|
+
间距断言可直接从产物几何读取。统一契约:**每引擎适配器实现
|
|
290
|
+
`layout-snapshot` 提取接口**(元素几何 + 文本 metrics 估算),断言引擎
|
|
291
|
+
只消费快照,快照带**精度档位**(实测/估算;估算档文本溢出用保守缓冲
|
|
292
|
+
×1.1~1.15)。两个首版引擎的快照来源:
|
|
293
|
+
- PPTD 引擎:PPTD→HTML 渲染器回读(**高精度实测档**——同时是视觉审阅
|
|
294
|
+
的截图来源与用户预览形态;渲染器失效时自动落回契约档,多重保险);
|
|
295
|
+
- python-pptx 引擎:产物 .pptx XML 几何(精确)+ 字体度量估算(估算档);
|
|
296
|
+
若探测到 LibreOffice,可选无头渲染(pptx→PDF→PNG)做像素级核实。
|
|
297
|
+
- 未来引入第三引擎 = 再写一个 snapshot 适配器,断言/审阅系统不变。
|
|
298
|
+
**多重保险**:实测档(渲染回读)→ 契约档(XML 几何+估算)→ 视觉审阅,
|
|
299
|
+
任一环节失效不空转(标注精度档位)。
|
|
300
|
+
输出**冲突报告**:类型、元素对、度量、建议。
|
|
301
|
+
- **③ 重点区审阅**:元素密度聚类自动圈出密集区 → 该区裁剪截图做视觉审阅 +
|
|
302
|
+
该区涉及元素的数字审阅。
|
|
303
|
+
|
|
304
|
+
### 修正协议(防"按下葫芦起个瓢")
|
|
305
|
+
|
|
306
|
+
- 冲突修复 = **修改布局意图重新求解**(重新生成蓝图 → 渲染 → 断言通过),
|
|
307
|
+
而不是局部挪动单个坐标;
|
|
308
|
+
- 修改时输出"重新验证计划":受影响元素及其关联断言;验证必须跑全页,确认
|
|
309
|
+
无新冲突;
|
|
310
|
+
- 频繁冲突/多次迭代不过 → 回退设计(改蓝图/换版式),不硬调。
|
|
311
|
+
|
|
312
|
+
### 断言 vs 视觉分工
|
|
313
|
+
|
|
314
|
+
| 检查项 | 机器断言(可靠) | 视觉审阅(审美) |
|
|
315
|
+
|---|---|---|
|
|
316
|
+
| 重叠/出界/溢出 | ✓ 精确 | ✓ 辅助确认 |
|
|
317
|
+
| 对齐/间距/网格 | ✓ 精确 | ✓ 观感 |
|
|
318
|
+
| 美观/风格协调/图文一致 | — | ✓ |
|
|
319
|
+
| 特殊形状视觉观感 | 近似判定 | ✓ 主判 |
|
|
320
|
+
|
|
321
|
+
---
|
|
322
|
+
|
|
323
|
+
## 6.5 整体性:跨页一致性(重点;补完/修改任务格外重要)
|
|
324
|
+
|
|
325
|
+
单页合格 ≠ 整体合格。整体性分两层,两层都可跨引擎:
|
|
326
|
+
|
|
327
|
+
- **结构层(机器断言)**:全局 `theme`(字体/字号层级/配色/网格/组件样式)
|
|
328
|
+
为唯一风格源,页面**只允许引用 theme token**,不得出现主题外颜色/字体/
|
|
329
|
+
字号(允许显式豁免并记录)。断言 = 逐页检查元素样式与 theme token 的
|
|
330
|
+
符合性;跨页相同概念(标题、页码、页眉页脚、导航)必须同款。
|
|
331
|
+
- **观感层(视觉审阅)**:**整 deck 拼接总览图**(每页缩略拼图)一次审阅
|
|
332
|
+
(参考 open-kimi-ppt 的 export_images 总览图做法),检查节奏连贯、
|
|
333
|
+
风格无割裂感、深浅页切换突兀等。
|
|
334
|
+
- **数据连贯(机器断言)**:跨页数字/术语对账(参考 claude-office-skills
|
|
335
|
+
的 ib-check-deck 的 cross-slide reconciliation):同一指标在不同页出现
|
|
336
|
+
必须一致;数字标记**证据状态**(unmapped/candidate/grounded/conflicted/
|
|
337
|
+
missing,参照 ultimate-ppt-master-skill),防止虚构数据。
|
|
338
|
+
- **"统一 XX 页风格"任务变体**:S2 风格抽取(从目标页/参考页提取 theme
|
|
339
|
+
特征)→ 应用到指定页 → 结构断言 + 总览图审阅验证,形成
|
|
340
|
+
"抽取-应用-验证"闭环;补完/修改任务新页默认从旧 deck 的 theme 继承,
|
|
341
|
+
不重新定调。
|
|
342
|
+
|
|
343
|
+
---
|
|
344
|
+
|
|
345
|
+
## 6.6 质量模式(调研借鉴,待确认)
|
|
346
|
+
|
|
347
|
+
参照 ultimate-ppt-master-skill 的 quick/standard/audit 分级,质量门槛
|
|
348
|
+
可按任务场景调节,与"用户指定暂停点"协同:
|
|
349
|
+
|
|
350
|
+
| 模式 | 适用 | 门禁 |
|
|
351
|
+
|---|---|---|
|
|
352
|
+
| quick | 草稿/内部讨论/内容验证 | 结构/文件有效性不过才 fail;视觉证据 warning |
|
|
353
|
+
| standard(默认) | 正式汇报/常规产出 | 结构 + 布局断言通过;视觉评审建议 |
|
|
354
|
+
| audit | 董事会/政府/金融合规/外部发布 | 缺预览 PNG/设计报告/空白页风险即 fail |
|
|
355
|
+
|
|
356
|
+
---
|
|
357
|
+
|
|
358
|
+
## 6.7 视觉默认与叙事节奏(调研借鉴,待确认)
|
|
359
|
+
|
|
360
|
+
- **视觉默认值**(默认浅色封面、深色封面仅限用户要求/品牌/图片主视觉等),
|
|
361
|
+
作为 S2 从零定调时的默认基线,避免极端化(如默认全黑封面)。
|
|
362
|
+
- **叙事节奏模板**:极端薄提示("做份 PPT"无任何上下文)时的默认页节奏
|
|
363
|
+
(封面→问题/背景→证据→对比/流程→风险/行动→结尾),内置多套按情境
|
|
364
|
+
(汇报/方案/教学/路演/学术),S1 大纲优先套用再按内容调整。
|
|
365
|
+
|
|
366
|
+
---
|
|
367
|
+
|
|
368
|
+
## 7. 技术路线与引擎(决策:PPTD 中间层 + 首版双引擎)
|
|
369
|
+
|
|
370
|
+
### 背景:PPTD(PPT-DSL)
|
|
371
|
+
|
|
372
|
+
PPTD 是基于 YAML 的演示文稿 DSL,OOXML 之上的简化抽象层:保留主题、
|
|
373
|
+
页面布局、元素位置等核心信息,每页自包含;与 .pptx 双向转换。
|
|
374
|
+
参考实现 open-kimi-ppt-skill 为**逆向 Kimi Slides 的非官方产物,已被要求
|
|
375
|
+
下架**(LINUX DO / cocoloop 均有记录;git 仓库暂仍可访问,但不可作为长期
|
|
376
|
+
依赖)。规范文档公开,格式本身可独立实现。
|
|
377
|
+
|
|
378
|
+
### 中间层选型
|
|
379
|
+
|
|
380
|
+
- **PPTD 为唯一中间层**(替代早先讨论的自造 deck.json 布局树):
|
|
381
|
+
- 元素模型成熟:text/shape/line/image/icon/table/chart,含主题继承链、
|
|
382
|
+
图表系列、动画;已有公开规范与 checker 概念可参考;
|
|
383
|
+
- 天然支持四类任务:从头(直接生成)、补完/修改(PPTX→PPTD→改→PPTD→PPTX)、
|
|
384
|
+
总结(解析文本/图表);
|
|
385
|
+
- "内容保真、版式可从新"语义 = PPTX→PPTD→改写→PPTX。
|
|
386
|
+
- 自研工具链(初版实现范围子集,见 §12 待细化):
|
|
387
|
+
- `pptd → pptx` 转换器(主引擎)
|
|
388
|
+
- `pptx → pptd` 导入器(内容层 + 风格层抽取)
|
|
389
|
+
- `pptd checker`(结构与数值校验,配合 Lint 清单)
|
|
390
|
+
- `pptd → html` 预览渲染器(视觉审阅闭环 + 布局回读断言用,
|
|
391
|
+
Edge/Chrome headless 截图)
|
|
392
|
+
- `pptd serve` 可选:本地浏览器预览/编辑(后期)
|
|
393
|
+
- 合规:**自行实现格式,不依赖、不分发任何 Kimi 逆向产物**;格式兼容
|
|
394
|
+
采用公开规范子集 + 自研渲染,遇复杂特性明确降级语义。
|
|
395
|
+
|
|
396
|
+
### 引擎可插拔(决策:首版双引擎)
|
|
397
|
+
|
|
398
|
+
引擎位解耦,工作流参数 `engine: auto | pptd | python-pptx`(默认 auto,
|
|
399
|
+
按任务类型自动挑):
|
|
400
|
+
|
|
401
|
+
| 引擎 | 说明 | 状态 |
|
|
402
|
+
|---|---|---|
|
|
403
|
+
| **pptd 转换器(主)** | 自研:PPTD→PPTX;覆盖全部四类任务 | 首版 |
|
|
404
|
+
| **python-pptx(兜底)** | 多方验证的成熟方案:自研适配器把中间层/内容映射为 python-pptx 脚本(subprocess 调用,**探测到 python 环境才可用**);作为自研转换器有质量问题时兜底 | 首版 |
|
|
405
|
+
| **pptxgenjs(第二兜底)** | Node 内置(npm 依赖随插件自带):**无 python 环境时的第二兜底**;对象模型直写,几何已知 | 首版 |
|
|
406
|
+
|
|
407
|
+
**运行时依赖策略(已拍板:三引擎 + 浏览器降级)**:
|
|
408
|
+
- python 缺失 → python-pptx 引擎自动不可用(明示),pptxgenjs 兜底;
|
|
409
|
+
- headless 浏览器缺失 → 预览/视觉闭环降级:估算档断言 + 产物文件/PNG
|
|
410
|
+
供用户本地打开;视觉评审自动降级 Lint(见 §3);
|
|
411
|
+
- 引擎可用性在 `/ppt` 状态查询与 S0 规格中明确向用户展示。
|
|
412
|
+
|
|
413
|
+
- 每个引擎 = 一个"中间层/内容 → 引擎调用"的适配器 + 一个
|
|
414
|
+
`layout-snapshot` 实现;适配器数量收敛。
|
|
415
|
+
- 渲染/审阅闭环与引擎无关:预览一律走 `pptd → html` 渲染器 + 截图,
|
|
416
|
+
不依赖引擎本身的可视化能力(python-pptx 引擎同此,先经中间层渲染预览)。
|
|
417
|
+
|
|
418
|
+
---
|
|
419
|
+
|
|
420
|
+
## 8. 视觉系统(决策:从零 + 可选模板)
|
|
421
|
+
|
|
422
|
+
- 默认 S2 从零设计一套视觉系统;
|
|
423
|
+
- **可选模板库**:风格种子(主题 token + 版式模板);用户可导入模板作为种子
|
|
424
|
+
(文件格式与加载方式待细化,§12.4);
|
|
425
|
+
- 内置成熟设计原则/checklist(版本层级、留白、对比度、信息密度)作为
|
|
426
|
+
评审标准的一部分,避免纯靠模型审美漂移。
|
|
427
|
+
|
|
428
|
+
---
|
|
429
|
+
|
|
430
|
+
## 9. 图表与素材策略(决策:自动生成 + 用户素材可覆盖)
|
|
431
|
+
|
|
432
|
+
- 默认自动生成图表(中间层 chart 模型 → 转换器出真实图表);
|
|
433
|
+
- 用户提供的素材(图片/图表/数据)可覆盖自动生成;
|
|
434
|
+
- 首版实现图表**子集**(bar/line/pie/table 等常见类型),其余类型降级
|
|
435
|
+
为表格/图片或预留标注(待细化,§12.1)。
|
|
436
|
+
|
|
437
|
+
---
|
|
438
|
+
|
|
439
|
+
## 10. 工具集草案(无重依赖原则)
|
|
440
|
+
|
|
441
|
+
| 能力 | 方案 | 依赖 |
|
|
442
|
+
|---|---|---|
|
|
443
|
+
| **material 工具** | 素材需求清单/搜集/manifest 管理/物理规格读取(图像元数据) | 零 |
|
|
444
|
+
| **layout-blueprint 工具** | 布局蓝图(意图 + 预估 bounds + 断言清单)生成与校验 | 零 |
|
|
445
|
+
| **layout-snapshot 适配器**(每引擎一个) | 从引擎产物提取"布局快照"(几何 + 文本 metrics 估算 + 精度档位) | 每引擎各自依赖 |
|
|
446
|
+
| **layout-verify 工具** | 快照断言 + 冲突报告 + 密集区检测(重点审阅区) | 零(依赖快照) |
|
|
447
|
+
| 中间层工具链 | 自研 pptd checker / 导入 / 导出(DSL 解析 + XML 生成) | npm 包(zip/xml) |
|
|
448
|
+
| 导出引擎 A(主) | 自研 PPTD→PPTX | 同上 |
|
|
449
|
+
| 导出引擎 B(兜底) | python-pptx 适配器 | python 环境(探测) |
|
|
450
|
+
| 渲染预览 | PPTD→HTML + Edge/Chrome headless 截图 | 零(系统自带) |
|
|
451
|
+
| 视觉评审 | 复用被探测到的读图通道(vision-toolkit 等) | 零 |
|
|
452
|
+
| 页面状态/门禁 | 中间层项目内的 page 状态 + 校验脚本 | 零 |
|
|
453
|
+
| 并行量产 | 复用标准预设 tool-workflow / subagent | 零(已有) |
|
|
454
|
+
|
|
455
|
+
---
|
|
456
|
+
|
|
457
|
+
## 11. 质量保障
|
|
458
|
+
|
|
459
|
+
- **双轨验证**:结构 Lint(渲染回读断言:重叠/出界/溢出/对齐/间距)+
|
|
460
|
+
视觉评审(有视觉能力时);重点区单独审阅。
|
|
461
|
+
- **门禁**:产物 + schema 校验 + QA 报告;页面状态
|
|
462
|
+
`draft → rendered → reviewed → approved`;S4 不过不出货。
|
|
463
|
+
- **明示透明**:交付说明标注"未经视觉审阅项"、素材来源(含版权标注)、
|
|
464
|
+
修改指引、降级重建的页面清单。
|
|
465
|
+
|
|
466
|
+
---
|
|
467
|
+
|
|
468
|
+
## 12. 生态调研结论(持续补充)
|
|
469
|
+
|
|
470
|
+
| 项目 | 性质 | 借鉴点 |
|
|
471
|
+
|---|---|---|
|
|
472
|
+
| [pipitmk](https://github.com/quzichun785-byte/pipitmk)(MIT) | 自研 Deck DSL + python-pptx 编译器 + 校验器 + 截图目检 | **python-pptx 兜底引擎的参考实现**:校验器先行(error 拒编)、文本溢出/遮挡启发式、LibreOffice→PDF→PNG 目检、原生图表 vs 矢量拼绘双轨、Font Awesome 矢量图标(不依赖查看端字体)、customFonts 自动安装、每页自包含哲学;v1 明确不做"编辑已有 pptx"——正是我们的差异化 |
|
|
473
|
+
| [ultimate-ppt-master-skill](https://github.com/kdnsna/ultimate-ppt-master-skill) | 工作流策略化 skill(contracts 生成政策) | 路由政策 + 最多 3 个聚焦问题、quality modes(quick/standard/audit)、证据状态(grounded 需 claim 级源绑定)、视觉默认值、薄提示页节奏、preserve-edit 引擎概念、可追踪链 |
|
|
474
|
+
| [claude-office-skills](https://github.com/fivetaku/claude-office-skills)(Anthropic 官方 skills 重建) | Office 域 skill 包 | deck-refresh(已有 deck 数据刷新)、ib-check-deck(数字一致性/叙事对齐/格式 QC + 跨页数字对账 extract_numbers.py) |
|
|
475
|
+
| open-kimi-ppt-skill(已下架,参考) | 逆向 Kimi Slides | PPTD 格式规范公开、视觉质检总览图做法、主题/动画模型概念;仅作格式参考,不作依赖 |
|
|
476
|
+
|
|
477
|
+
## 13. 待细化清单
|
|
478
|
+
|
|
479
|
+
1. **路由细节**:触发词清单、误触发/漏触发处理、退出 PPT 工作流的边界条件。
|
|
480
|
+
2. **PPTD 首版子集**:元素/图表/动画的实现范围界定;不支持特性的降级语义。
|
|
481
|
+
3. **pptx 导入器细则**:内容层/风格层的抽取规则;降级重建的判定标准。
|
|
482
|
+
4. **模板库格式**:可选模板(风格种子)文件结构与加载方式。
|
|
483
|
+
5. **python-pptx 适配器**:调用形态(subprocess 脚本)、内容映射规则、
|
|
484
|
+
与中间层的对应关系。
|
|
485
|
+
6. **Lint 规则集与阈值**:重叠容差、出界容差、溢出判定、对齐误差(≤1px)、
|
|
486
|
+
间距/网格符合性等具体数值;文本面积估算的字体度量表建设。
|
|
487
|
+
7. **碰撞几何库**:AABB/圆/多边形(SAT)实现的选取(自写 vs 小库)。
|
|
488
|
+
8. **评审 prompt 标准**:视觉评审子代理任务书模板(含审核 checklist)。
|
|
489
|
+
9. **异常路径**:无视觉时各阶段降级剧本、渲染失败、转换失败、python 缺失回退。
|
|
490
|
+
10. **pptx 对齐/保真方案**:字体度量近似、网格换算、导出差异控制。
|
|
491
|
+
11. **素材搜索质量**:互联网素材的筛选/版权标注规范(首版靠 web 工具时的边界)。
|
|
492
|
+
12. **质量模式**:quick/standard/audit 三档是否采用及各自门禁细则。
|
|
493
|
+
13. **证据状态**:数据/事实的证据状态机(unmapped→grounded 等)应用范围。
|
|
494
|
+
14. **图标/字体资产**:内置矢量图标库选择(Font Awesome 免费版等)、
|
|
495
|
+
customFonts 自动下载安装的落地。
|
|
496
|
+
15. **图表双轨**:原生图表(可改数据)与矢量拼绘(不可改数据)的覆盖划分与降级。
|
|
497
|
+
|
|
498
|
+
---
|
|
499
|
+
|
|
500
|
+
## 14. 关键决策记录
|
|
501
|
+
|
|
502
|
+
| 决策点 | 结论 |
|
|
503
|
+
|---|---|
|
|
504
|
+
| 插件形态 | agent preset(copy standard)+ 路由工作流行 + 工具集 |
|
|
505
|
+
| 任务形态 | 封闭四类(从头/补完/修改/总结)+ 回退通用 |
|
|
506
|
+
| 已有 PPT 格式 | .pptx 为主 + 降级重建 |
|
|
507
|
+
| 还原保真度 | 内容保真、版式可从新 |
|
|
508
|
+
| 模型读图 | 与标准模式同款(探测 + 适配,不绑定通道) |
|
|
509
|
+
| 审阅门禁 | 有视觉必审;无视觉结构 Lint 兜底并明示 |
|
|
510
|
+
| 素材来源 | 首版三源(用户提供/内容提取/自生成)+ 搜索靠标准模式现有工具;优先级可配 |
|
|
511
|
+
| 素材理解 | 物理层程序化 + 语义层(视觉/用户描述,写入 manifest) |
|
|
512
|
+
| 冲突防治 | 三层防线:设计蓝图(意图+预估)→ 渲染回读(机器断言)→ 视觉审阅;实验融入渲染验证 |
|
|
513
|
+
| 数字审阅 | **引擎无关**:每引擎 `layout-snapshot` 适配器(几何+文本估算+精度档位);pptx XML 坐标即权威,断言不依赖渲染器 |
|
|
514
|
+
| 修正协议 | 修改布局意图重新求解;验证跑全页;频败回退设计 |
|
|
515
|
+
| 整体性 | 结构层(theme token 符合性断言)+ 观感层(总览图视觉审阅)+ 数据连贯(跨页数字对账/证据状态) |
|
|
516
|
+
| 技术路线 | **PPTD(YAML DSL)为唯一中间层,自研工具链**(open-kimi-ppt-skill 已下架,不作依赖) |
|
|
517
|
+
| 引擎 | 首版双引擎:自研 PPTD→PPTX(主)+ python-pptx(兜底) |
|
|
518
|
+
| 交付物 | 中间层项目 + .pptx(可编辑);总结任务可产出报告文件 |
|
|
519
|
+
| 量产形态 | 主 agent 调度 + 并行量产 |
|
|
520
|
+
| 门禁机制 | 产物 + 校验文件(非完整状态机插件) |
|
|
521
|
+
| 交互确认点 | S0 规格 / S2 样例页 / S5 交付前预览;暂停点用户可事先指定 |
|
|
522
|
+
| 设计系统 | 从零 + 可选模板 |
|
|
523
|
+
| 图表策略 | 自动生成 + 用户素材可覆盖;首版实现常见类型子集 |
|
|
524
|
+
| 质量模式 | 三级 quick/standard/audit(audit 含硬门禁:预览图/设计报告/空白页风险) |
|
|
525
|
+
| pipitmk 借力 | 参考其思路(校验器/编译/目检/图表双轨/矢量图标),按自研契约重写 |
|
|
526
|
+
| 数据对账 | 首版纳入基础版:跨页数字/术语对账 + 证据状态(unmapped→grounded) |
|
|
527
|
+
| 协作模式 | 参数化五维光谱(确认深度/审阅频率/忠实度/遵从度/未决处置);**情境自适应默认 + 一次轻量确认 + 会话内记忆**;问卷分层按档位选问;hardConstraints 任何档位都严格遵循 |
|
|
528
|
+
| 路由控制 | **双通道**:语义(明确意图才进、明确无关才退、弱信号不切)+ 斜杠命令(`/ppt` 命令面全量子命令首版,命令>语义,命令写入 hardConstraints) |
|
|
529
|
+
| 愿景/复杂场景 | 长 deck + 多源整合 + 严谨内容;向审计门禁/证据链/整体一致性倾斜 |
|
|
530
|
+
| 运行时依赖 | 三引擎:自研 PPTD(主)+ python-pptx(有 python 则启用)+ pptxgenjs(无 python 第二兜底);浏览器缺失→估算档+文件预览 |
|
|
531
|
+
| 分发形态 | 官方 bundle 装配(不依赖注入器)+ 开源发布(GitHub Release + npm) |
|
|
532
|
+
| 预览形态 | dsh 网页 UI 内嵌预览(client 插件渲染 + 总览图,对话内确认) |
|
|
533
|
+
| PPTD 格式 | 独立自定义(参考公开规范理念,字段/语义自洽优先;不绑定 Kimi 逆向生态) |
|
|
534
|
+
| 生态协同 | 与现有 paper2ppt/PaperSpine 等独立共存,各管一段;不改造不耦合 |
|
|
535
|
+
| 验收评测 | 评测集(四类任务+复杂场景样例含陷阱)+ 自动断言评分 + 人工评分 |
|
|
536
|
+
| 总结产出 | markdown 默认 + docx/pdf 可选导出 |
|
|
537
|
+
| 语言字体 | 中英混排度量表(CJK+Latin);采纳 customFonts 自动下载用户级安装 |
|