| 1 | # 模板架构:Brand / Style / Layout / Deck 四分类 |
| 2 | |
| 3 | [English](../templates-architecture.md) | [Chinese](./templates-architecture.md) |
| 4 | |
| 5 | --- |
| 6 | |
| 7 | > 本文是**架构对齐文档**,定义“模板”在数据模型层面的四种身份、各自的 `design_spec.md` 字段集、以及多路径合成与冲突解决规则。面向贡献者与 AI 工作流,回答“一个模板目录里应该写什么、不写什么;多个模板同时给时怎么合成”。 |
| 8 | > |
| 9 | > 用户视角的用法(怎么选、怎么提供精确路径)见 [`templates-guide.md`](./templates-guide.md);本文不重复。 |
| 10 | |
| 11 | --- |
| 12 | |
| 13 | ## 一、四分类 |
| 14 | |
| 15 | | 分类 | 全局库工作区根目录 | 写什么 | 不写什么 | 出处工作流 | |
| 16 | |---|---|---|---|---| |
| 17 | | **Brand** | `templates/brands/<id>/` | 仅身份段:color / typography / logo / voice / icon style | 不写 canvas、page structure、SVG roster | `workflows/create-template/create-brand.md` | |
| 18 | | **Style** | `templates/styles/<id>/` | 可移植方向/方法段:沟通方法、页面角色词汇、证据/数据表达、视觉默认值、图片/图标方向、审阅关注点 | 不写身份真值、应用契约、canvas、页面结构或 SVG roster | `workflows/create-template/create-style.md` | |
| 19 | | **Layout** | `templates/layouts/<id>/` | 仅品牌中立的结构段:canvas / page structure / 语义文字角色 / page types / SVG roster | 不写品牌身份,也不拥有可重复沟通场景 | `workflows/create-template/create-layout.md` | |
| 20 | | **Deck** | `templates/decks/<id>/` | 一类可重复演示:描述性应用语境 + 一体化身份与结构 | —— | `workflows/create-template/create-deck.md` | |
| 21 | |
| 22 | 每张新建的 Layout/Deck SVG 都是完整预览,并在根节点声明 Master/Layout key 与选择器名称;固定 Master/Layout 视觉是直接原子元素;语义槽位是顶层 group。普通槽位必须有正数设计区域 bounds 和恰好一个兼容 carrier;复合 `object` 区域走显式 proxy 绑定,零槽 Layout 也合法。这些专用标记具有最高优先级;最小 `data-pptx-role` 只补充它们无法表达的页面框架行为。Create Template 根据自然语言意图与来源证据在内部推导 `standard` / `fidelity` / `mirror`;Strategist 再根据真实原型与当前内容推导 strict/adaptive 导出行为。这些实现值都不是用户必选项。仅 Brand/Layout/Deck 的旧式平铺目录可在满足当前 kind 合同时继续读取;Style 没有平铺兼容形态。带旧结构语义的包必须替换为新建模板工作区,不能原地升级。 |
| 23 | |
| 24 | 四者是**四种并列的可复用规则包**,不是 PowerPoint 包对象类型。在全局库范围内,物理目录与 frontmatter `kind` 字段双向对齐: |
| 25 | |
| 26 | 多路径合成后的项目级 `design_spec.md` 沿用能力标签:同时具备身份段和结构段时为 `deck`,只有结构段时为 `layout`,只有身份段时为 `brand`,只有方向/方法段时才为 `style`。Style 与其他 kind 合成时不改变原有能力标签。对于项目内临时组合的 Brand + Layout,`kind: deck` 只表示“已安装两种能力”,不会把组合自动提升为可注册的 Deck,也不会凭空生成应用语境;当前项目的 Stage 1 沟通契约负责提供场景。Strategist 在内部生成模板应用计划,确认页不显示模板模式控件。 |
| 27 | |
| 28 | ```yaml |
| 29 | # templates/brands/anthropic/templates/design_spec.md |
| 30 | --- |
| 31 | kind: brand |
| 32 | ... |
| 33 | --- |
| 34 | |
| 35 | # templates/styles/consulting_analytical/templates/design_spec.md |
| 36 | --- |
| 37 | kind: style |
| 38 | ... |
| 39 | --- |
| 40 | |
| 41 | # templates/layouts/presentation_core/templates/design_spec.md |
| 42 | --- |
| 43 | kind: layout |
| 44 | native_structure_mode: structured |
| 45 | ... |
| 46 | --- |
| 47 | |
| 48 | # templates/decks/中国电信/templates/design_spec.md |
| 49 | --- |
| 50 | kind: deck |
| 51 | native_structure_mode: structured |
| 52 | ... |
| 53 | --- |
| 54 | ``` |
| 55 | |
| 56 | ### PowerPoint 原生对象是编译目标 |
| 57 | |
| 58 | 项目模板 kind 与 PresentationML 对象不是一一对应关系: |
| 59 | |
| 60 | | 项目合同 | 原生投影 | |
| 61 | |---|---| |
| 62 | | **Brand** | Theme 的颜色、字体与效果,以及 Logo 等固定身份资产规则 | |
| 63 | | **Style** | 不提供可复用包结构;已确认的方法和视觉默认值指导 flat Slide-local 创作 | |
| 64 | | **Layout** | Master/Layout/Placeholder 拓扑、可复用几何、语义文字角色与槽位空间行为 | |
| 65 | | **Deck** | Brand 与 Layout 的投影,再加描述性重复应用语境和真实原型 | |
| 66 | |
| 67 | 一个 Slide Master 可以同时包含结构几何和品牌视觉。来源规则仍分开归属:Layout 决定拓扑、位置、语义文字角色与空间行为,Brand 决定身份值与资产。下游选择 `layout` 时,导出结合已确认的阅读模式和字号体系解析最终 placeholder 格式;选择 `mirror` 时则保留来源的字面格式与文字拓扑。最后再把适用规则编译进同一套 Master/Layout 图谱。因此 Theme 是已解析身份的实现投影——身份可以来自 Brand、Deck 或当前项目——而不是另一种模板 kind;Style 的色彩/字体 fallback 也不是 Theme 身份真值。 |
| 68 | |
| 69 | ### 输出范围与 kind 相互独立 |
| 70 | |
| 71 | `create-template` 会确认工作区放在哪里。这个执行选择不会增加另一种 kind,也不会增加新的 PPTX 结构模式: |
| 72 | |
| 73 | | 范围 | 工作区根目录 | 核心结构 | 发现行为 | |
| 74 | |---|---|---|---| |
| 75 | | `library`(默认) | `skills/ppt-master/templates/<kind>/<id>/` | 必需 `templates/`;可选 `images/`、`icons/` 与按需 `exports/` | 写入对应全局索引 | |
| 76 | | `project` | `projects/<name>/` | 完全相同的路由合同 | 不更新全局索引 | |
| 77 | |
| 78 | 两种根目录都保持相同的核心形态: |
| 79 | |
| 80 | ```text |
| 81 | <template_workspace>/ |
| 82 | ├── templates/ |
| 83 | │ ├── design_spec.md |
| 84 | │ └── *.svg |
| 85 | ├── images/ # 可选;SVG 统一引用 ../images/<name> |
| 86 | ├── icons/ |
| 87 | │ └── imported/ # 可选;导入向量素材的唯一规范副本 |
| 88 | └── exports/ # 可选;用户要求审阅或多 Master 包需要证据时创建 |
| 89 | └── <id>_template_preview.pptx |
| 90 | ``` |
| 91 | |
| 92 | 空的可选目录直接省略,不添加占位文件。预览 PPTX 是派生审阅证据,不是模板 |
| 93 | 源资产;单 Master 按需生成,多 Master 必须通过该 package gate。Step 3 只把 |
| 94 | 工作区 root 记录为候选输入,不读取其内容;Stage 1 选中后,apply 阶段才消费 |
| 95 | `templates/` 及实际存在的 `images/`、`icons/`,不会复制或使用 `exports/`; |
| 96 | 全局库下的 `exports/` 统一由 Git 忽略。 |
| 97 | |
| 98 | 导入向量统一使用 `data-icon="imported/<name>"`,唯一规范文件位于 `icons/imported/<name>.svg`。具备工作区感知的校验与导出会直接解析这个根目录路径;`templates/icons/` 不属于模板包结构。 |
| 99 | |
| 100 | 原生形状 metadata 采用两级模型。完整导入 SVG 保存 native metadata、隐藏 carrier 和预览证据,并作为不可变原生载荷后备;`svg_authoring_view.py` 生成可编辑 authoring IR,其中轻量 SVG 使用文档内 source ref 标识对象,manifest 只保存路径和初始 hash。创作模式使用项目规范化 SVG,只有精确匹配已登记 preset 时才使用 compact authored-preset 组。Mirror 从 IR 物化模板,仅为未改且 hash 匹配的 Slide-local/slot ref 重新接入转换器已支持的载荷;固定结构层保持直接原子,不支持或已修改的对象保留 SVG fallback,最终模板不包含 IR 专用 ref。导出只编译声明的结构,不推断归属。 |
| 101 | |
| 102 | 两种范围都在可移植 frontmatter 中保留所选 `kind`。`output_scope` 与 `target_project` 只属于工作流简报,不写入 `design_spec.md`。 |
| 103 | |
| 104 | 任何范围第一次写最终文件前,都必须解析工作区根目录、确认 `templates/` 为空,并检查全部计划写入的图片与图标文件名无冲突;用户要求预览或已确认 roster 含多个 Master 时检查预览 PPTX 目标。项目范围还必须确认目标项目已初始化。任一失败都在写入前停止,不合并、不覆盖。 |
| 105 | |
| 106 | ### 四段的字段切分 |
| 107 | |
| 108 | 为了让多路径合成能干净覆盖,所有字段按段归属,**段级整段替换是默认粒度**: |
| 109 | |
| 110 | | 段 | 包含的章节 | 归属(覆盖优先级)| |
| 111 | |---|---|---| |
| 112 | | **身份段** | Color Scheme / Typography / Logo / Voice & Tone / Icon Style | brand 覆盖 | |
| 113 | | **方向/方法段** | Communication Method / Page Role Vocabulary / Evidence & Data Expression / Visual System Defaults / Image & Icon Direction / Review Focus | style;默认值低于用户确认及身份/结构所有者 | |
| 114 | | **结构段** | 可移植 canvas/page-type 元数据、结构归属的 Signature 规则、SVG Page Roster,以及 SVG Master/Layout/slot 合同 | layout 覆盖 | |
| 115 | | **应用段** | Template Overview:重复场景、受众与结果、交付假设及代表性叙事/页面角色 | deck 独有;brand / layout 不写 | |
| 116 | |
| 117 | ### 为什么需要 Deck 这一类 |
| 118 | |
| 119 | Deck 编码的是**一类可重复演示**,而不只是预先组合好的 Brand 和 Layout。它描述模板服务哪些沟通场景、支持哪些受众结果,以及常见的叙事或页面角色。身份与结构围绕这份语境形成一个整体;具体选哪些原型、如何处理内容,由当前 Strategist 决定。 |
| 120 | |
| 121 | `standard` / `fidelity` 根据已确认的证据创作新完整系统;mirror 把已验证的来源身份与父子关系一对一映射进新工作区。Mirror 能保留来源事实,但不能单独证明来源就是可复用 Deck:创建时仍要识别稳定的应用规则。只得到身份时创建 Brand;方法与视觉方向需要脱离原型复用时创建 Style;得到品牌中立的可复用结构时创建 Layout;结构带品牌身份,或者包含场景叙事与内容语法时创建 Deck。 |
| 122 | |
| 123 | 这也约束创建模式:只有来源合同本身已经品牌中立且应用中立时,Layout mirror 才成立。删除品牌色、字体、Logo、固定身份对象或可复用应用规则都属于重新创作;越过这条边界的来源要么使用 `standard` / `fidelity` 创作新的 Layout,要么保留这些事实并创建 Deck mirror。 |
| 124 | |
| 125 | --- |
| 126 | |
| 127 | ## 二、各分类的 `design_spec.md` Schema |
| 128 | |
| 129 | 字段集只规定**必须写**的部分。「非必要不表明」——当前 schema 没列出的字段,不写。 |
| 130 | |
| 131 | ### Brand schema |
| 132 | |
| 133 | **Frontmatter** |
| 134 | |
| 135 | ```yaml |
| 136 | --- |
| 137 | brand_id: <slug> |
| 138 | kind: brand |
| 139 | summary: <一句话描述用途,含主色> |
| 140 | primary_color: "<HEX>" |
| 141 | --- |
| 142 | ``` |
| 143 | |
| 144 | **正文章节**(身份段全集) |
| 145 | |
| 146 | | 节 | 标题 | 必写字段 | |
| 147 | |---|---|---| |
| 148 | | I | Brand Overview | Brand Name / Use Cases / Tone | |
| 149 | | II | Color Scheme | role / HEX / provenance(`fact` 官方真值 \| `approx` 推导)/ notes | |
| 150 | | III | Typography | role / family / weight | |
| 151 | | IV | Logo | file / form / usage + clearspace 与组合规则 | |
| 152 | | V | Voice & Tone | formality / person / emoji / abbreviation 策略 | |
| 153 | | VI | Icon Style | preference(stroke / filled / duotone …)+ 推荐字库 | |
| 154 | |
| 155 | **不允许出现**:canvas viewBox、page types、SVG roster——这些是 layout 的职责。 |
| 156 | |
| 157 | ### Style schema |
| 158 | |
| 159 | **Frontmatter** |
| 160 | |
| 161 | ```yaml |
| 162 | --- |
| 163 | style_id: <slug> |
| 164 | kind: style |
| 165 | summary: <一句话描述可移植方法与视觉方向> |
| 166 | keywords: [tag1, tag2, tag3] |
| 167 | --- |
| 168 | ``` |
| 169 | |
| 170 | **正文章节**(方向/方法段) |
| 171 | |
| 172 | | 节 | 标题 | 必写内容 | |
| 173 | |---|---|---| |
| 174 | | I | Style Overview | 名称、宽泛适用语境、复用意图与来源;不绑定受众/结果 | |
| 175 | | II | Communication Method | mode 候选、论证流、页面信息纪律与证据纪律 | |
| 176 | | III | Page Role Vocabulary | 开放角色及其沟通任务、证据义务和构图倾向;不规定顺序/页数 | |
| 177 | | IV | Evidence & Data Expression | 主张/证据、事实/假设/含义/建议区分,以及图表/表格/来源规则 | |
| 178 | | V | Visual System Defaults | visual-style 候选、构图、密度、装饰、节奏及可选色彩/字体 fallback | |
| 179 | | VI | Image & Icon Direction | 渲染、使用与处理方向;不写 inventory 或逐页映射 | |
| 180 | | VII | Review Focus | 仅在用户另行开启 visual review 后追加的检查点 | |
| 181 | |
| 182 | Style 不写 SVG,也不拥有 Brand 官方身份、Deck 应用契约、canvas、页数/ |
| 183 | 顺序、Master/Layout/placeholder 结构或逐页资源。其色彩与字体只是可覆盖 |
| 184 | fallback:用户最终确认及 Brand/Deck 身份优先。Review Focus 不能启动 |
| 185 | visual review。`kind: style` 表示可复用包类型,区别于最终 Stage 2 的 |
| 186 | `visual_style` 选择和内部 flat 导出值 `template_reuse_scope: style`。 |
| 187 | |
| 188 | ### Layout schema |
| 189 | |
| 190 | **Frontmatter** |
| 191 | |
| 192 | ```yaml |
| 193 | --- |
| 194 | layout_id: <slug> |
| 195 | kind: layout |
| 196 | category: general | scenario | government | special |
| 197 | native_structure_mode: structured |
| 198 | summary: <一句话描述用途> |
| 199 | keywords: [tag1, tag2, tag3] |
| 200 | canvas_format: <ppt169 | ppt43 | a4 | ...> |
| 201 | canvas_width: <像素> |
| 202 | canvas_height: <像素> |
| 203 | canvas_viewbox: "0 0 <width> <height>" |
| 204 | source_canvas_width: <像素> # 已知 PPTX/SVG 来源画布时填写 |
| 205 | source_canvas_height: <像素> |
| 206 | source_viewbox: "0 0 <width> <height>" |
| 207 | replication_mode: standard | fidelity | mirror |
| 208 | page_count: <N> |
| 209 | page_types: [<cover, toc, chapter, content, ending, ...>] |
| 210 | --- |
| 211 | ``` |
| 212 | |
| 213 | **正文章节**(该包特有的结构段) |
| 214 | |
| 215 | | 节 | 标题 | 必写字段 | |
| 216 | |---|---|---| |
| 217 | | IV | Signature Design Elements | 该 Layout 特有的网格、区域、图片行为、密度节奏、中性框架、语义文字角色、对齐/换行/容量行为和 slot 约定 | |
| 218 | | V | Page Roster | 每个 SVG 文件、Layout key、picker name、适用内容与 slot 行为 | |
| 219 | |
| 220 | 只有 Layout 改写规范占位词汇时才增加 `Placeholder Overrides`。frontmatter |
| 221 | `summary` 承担简短的选型语境;Layout 不写 deck 独有的 Template Overview。 |
| 222 | |
| 223 | `category: scenario` 只表示发现时的适配标签。Layout 可以针对某种内容形态或交付环境优化几何,但不能规定沟通目的、受众结果、必需叙事顺序、固定措辞或示例内容;如果这些规则也要重复使用,应创建 Deck。 |
| 224 | |
| 225 | **不允许出现**:Color Scheme、品牌字体家族/字重身份、最终字号体系、品牌 logo、品牌 voice & tone、Icon Style 或官方真值色(`provenance: fact`)。Layout 可以保留语义文字角色、对齐、换行与容量规则,因为它们属于结构;SVG 中性 paint、字体和字号只用于审阅。最终色彩与字体由策略师确认阶段或其他模板 kind 解析。 |
| 226 | |
| 227 | ### Deck schema |
| 228 | |
| 229 | **Frontmatter** |
| 230 | |
| 231 | ```yaml |
| 232 | --- |
| 233 | deck_id: <slug> |
| 234 | kind: deck |
| 235 | category: brand | general | scenario | government | special |
| 236 | native_structure_mode: structured |
| 237 | summary: <一句话描述可重复演示类型与预期结果> |
| 238 | keywords: [tag1, tag2, tag3] |
| 239 | canvas_format: <ppt169 | ...> |
| 240 | canvas_width: <像素> |
| 241 | canvas_height: <像素> |
| 242 | canvas_viewbox: "0 0 <width> <height>" |
| 243 | source_canvas_width: <像素> # 已知 PPTX/SVG 来源画布时填写 |
| 244 | source_canvas_height: <像素> |
| 245 | source_viewbox: "0 0 <width> <height>" |
| 246 | replication_mode: standard | fidelity | mirror |
| 247 | page_count: <N> |
| 248 | primary_color: "<HEX>" |
| 249 | --- |
| 250 | ``` |
| 251 | |
| 252 | **正文章节**(应用契约 + 一体化身份/结构) |
| 253 | |
| 254 | | 节 | 标题 | 归属段 | |
| 255 | |---|---|---| |
| 256 | | I | Template Overview | 应用段 | |
| 257 | | II | Color Scheme | 身份段 | |
| 258 | | III | Typography | 身份段;只有使用共享默认字体栈时才省略 | |
| 259 | | IV | Signature Design Elements | 模板特有的身份图形与可复用结构语法 | |
| 260 | | V | Page Roster | 结构段 | |
| 261 | | VI | Assets | 身份/支撑资产;无资产时省略 | |
| 262 | | VII | Placeholder Overrides | 结构词汇;无覆盖时省略 | |
| 263 | |
| 264 | Template Overview 写明可重复演示类型、目标受众与结果、交付/阅读假设及代表性叙事或页面角色。Page Roster 只需如实描述每个原型的 Master/Layout/slot 合同、视觉特征、用途和容量,不得添加必需/可选/可重复或固定/可替换/仅示例政策;当前 Strategist 会按实际内容推导这些决定。 |
| 265 | |
| 266 | 可移植 canvas 字段、`page_count` 和显式 SVG roster 承载其余结构合同。通用间距、字号比例、SVG 和 placeholder 规则保持集中管理,不复制进每个 deck spec。省略条件章节只表示“采用共享默认值或没有资产”,不表示该段改由其他 kind 所有。 |
| 267 | |
| 268 | --- |
| 269 | |
| 270 | ## 三、四套 index 文件 |
| 271 | |
| 272 | 每个 index 跟物理目录一一对应,字段按需精简,沿用 [`charts_index.json`](../../skills/ppt-master/templates/charts/charts_index.json) 的紧凑“meta + summary”模式,同时保留对 Strategist 选型有用的结构化元数据。 |
| 273 | |
| 274 | 四套索引只覆盖全局库范围。项目根工作区有意不进入任何索引,仍可通过显式 `projects/<name>/` 路径使用。因为两种范围采用相同工作区形态,完整核心工作区可在两者之间移动或复制,不需要重写素材路径;只有全局库注册不同。 |
| 275 | |
| 276 | ### `templates/brands/brands_index.json` |
| 277 | |
| 278 | ```json |
| 279 | { |
| 280 | "<brand_id>": { |
| 281 | "summary": "Anthropic brand identity — AI/LLM tech talks, developer conferences", |
| 282 | "primary_color": "#D97757" |
| 283 | } |
| 284 | } |
| 285 | ``` |
| 286 | |
| 287 | - 保留 `primary_color` —— Strategist 选 brand 时第一眼就要知道主色 |
| 288 | - 去掉 keywords —— summary 自带英文等价词,AI 用自然语言匹配(沿用 charts 经验) |
| 289 | |
| 290 | ### `templates/styles/styles_index.json` |
| 291 | |
| 292 | ```json |
| 293 | { |
| 294 | "<style_id>": { |
| 295 | "summary": "Answer-first、证据驱动的决策文档默认值,不含页面原型或品牌身份", |
| 296 | "keywords": ["consulting", "decision-support", "evidence"] |
| 297 | } |
| 298 | } |
| 299 | ``` |
| 300 | |
| 301 | - 保留 `keywords`:方法/方向没有结构 roster,发现主要依赖语义 |
| 302 | - 不写 canvas、page count 或 primary color;Style 不拥有结构或身份真值 |
| 303 | |
| 304 | ### `templates/layouts/layouts_index.json` |
| 305 | |
| 306 | ```json |
| 307 | { |
| 308 | "<layout_id>": { |
| 309 | "summary": "Standard academic defense layout — cover/toc/chapter/content/ending", |
| 310 | "canvas_format": "ppt169", |
| 311 | "page_count": 5, |
| 312 | "page_types": ["cover", "toc", "chapter", "content", "ending"] |
| 313 | } |
| 314 | } |
| 315 | ``` |
| 316 | |
| 317 | - 加 `canvas_format` / `page_count` / `page_types` —— Strategist 选 layout 时要快速判断"页面骨架能不能装下我的 deck" |
| 318 | - 无 `primary_color` —— layout 无身份 |
| 319 | |
| 320 | ### `templates/decks/decks_index.json` |
| 321 | |
| 322 | ```json |
| 323 | { |
| 324 | "<deck_id>": { |
| 325 | "summary": "中国电信政企方案说明与下一步对齐汇报", |
| 326 | "canvas_format": "ppt169", |
| 327 | "page_count": 5, |
| 328 | "primary_color": "#XXXXXX" |
| 329 | } |
| 330 | } |
| 331 | ``` |
| 332 | |
| 333 | - 含 `primary_color`(deck 自带身份)+ 结构元数据 |
| 334 | - `summary` 优先描述可重复演示类型与预期结果,而不只是视觉气质 |
| 335 | - 详细应用契约留在 Template Overview;紧凑索引不重复整份契约 |
| 336 | |
| 337 | --- |
| 338 | |
| 339 | ## 四、多路径合成与冲突解决 |
| 340 | |
| 341 | ### 片段所有权(隐式触发) |
| 342 | |
| 343 | Step 3 确认已注册和/或指定工作区根目录后,会解析每个 root 的真实 |
| 344 | `kind`,再分片段写入一份 `<project>/templates/design_spec.md`。 |
| 345 | `library` / `explicit` 只记录发现来源,不改变所有权: |
| 346 | |
| 347 | | 片段 | 起始所有者 | |
| 348 | |---|---| |
| 349 | | 身份 | Brand,其次 Deck,否则留到最终 Stage 2;Style 只提供 fallback 候选 | |
| 350 | | 方向/方法 | Style,否则留到最终 Stage 2;Deck 的真实原型与 Signature 事实只提供兼容性依据 | |
| 351 | | 结构 | 兼容 Layout,其次 Deck,否则留到最终 Stage 2 / 自由设计 | |
| 352 | | 可复用应用语境 | 仅 Deck;保留供最终 Stage 2 对照,绝不充当当前项目的应用契约 | |
| 353 | |
| 354 | 用户当前明确指令和最终确认高于所有起始所有者。Brand 身份高于 Style |
| 355 | 的色彩/字体 fallback。Style-only 或 Style + Brand 使用 flat 创作;Style |
| 356 | 与 Layout/Deck 合成时沿用所选结构源。Style 自身不升级或降级结构。 |
| 357 | |
| 358 | Layout 覆盖 Deck 前,必须把 Deck 的可复用应用角色与 Layout 的页面角色、 |
| 359 | 槽位类型和容量对照;Style 与 Layout/Deck 合成前,也要确认其沟通方法和 |
| 360 | 构图预期能够被该可复用语境与结构兑现。不兼容时显式报告模板片段冲突, |
| 361 | 不能静默混合字段或保留一份当前结构无法兑现的承诺。当前项目的适配只在 |
| 362 | Stage 1 确认后的最终 Stage 2 开始。 |
| 363 | |
| 364 | ### 段级整段替换(默认粒度) |
| 365 | |
| 366 | 合成默认是**段级整段替换**——例如 deck + brand 时,整个 Color Scheme / Typography / Logo / Voice / Icon Style 五段从 brand 拿,**不做字段级混搭**(即不会发生"primary 从 brand 拿、secondary 从 deck 拿"这类隐式混合)。 |
| 367 | |
| 368 | 字段级微调走 策略师确认阶段这条已有路径——用户在 chat 里说"用 anthropic brand,但 primary 改成 #FF0000",由 Strategist 在 e/g 现场调整,不在 Step 3 的 fusion 层加字段级语法。 |
| 369 | |
| 370 | ### 同类多份 = git 冲突解决 |
| 371 | |
| 372 | 用户给 `brands/anthropic` + `brands/google`(同类多份的任意排列组合): |
| 373 | |
| 374 | ``` |
| 375 | AI: 你给了两个 brand,检测到段级冲突: |
| 376 | - Color Scheme(Anthropic 橙红 vs Google 多色) |
| 377 | - Typography(Styrene/AnthropicSans vs GoogleSans/Roboto) |
| 378 | - Logo(Anthropic 标 vs Google 标) |
| 379 | - Voice & Tone(restrained vs friendly) |
| 380 | - Icon Style(stroke vs filled) |
| 381 | |
| 382 | 要 (a) 全部按 Anthropic / (b) 全部按 Google / (c) 逐段挑? |
| 383 | ``` |
| 384 | |
| 385 | - 默认无隐式顺序,所有冲突都问 |
| 386 | - 仅在用户选 (c) 才进入逐段问答;不做字段级冲突解决 |
| 387 | - `style × 2`、`layout × 2`、`deck × 2`、`brand × 2` 同处理 |
| 388 | - 每类最多两份(再多让用户先在 chat 里收敛) |
| 389 | |
| 390 | Default 模板页面已经把组合空间收窄:Brand/Style/Layout/Deck 各有一个已注册模板 |
| 391 | 单选下拉框,另有一个指定地址下拉框;指定地址按解析出的 kind,最多给该类 |
| 392 | 增加第二份。服务端强制同一限制;聊天组合仍保留每类最多两份的通用边界。 |
| 393 | |
| 394 | ### Provenance 记录 |
| 395 | |
| 396 | 合成后的 `<project>/templates/design_spec.md` 顶部必须加: |
| 397 | |
| 398 | ```markdown |
| 399 | > **Fused from:** |
| 400 | > - deck: `templates/decks/中国电信/` (base) |
| 401 | > - brand: `templates/brands/anthropic/` (identity 段覆盖) |
| 402 | > - style: `templates/styles/consulting_analytical/` (方向/方法) |
| 403 | > - layout: `templates/layouts/presentation_core/` (structure 段覆盖) |
| 404 | > - conflicts resolved: Color Scheme from anthropic(用户选 a) |
| 405 | ``` |
| 406 | |
| 407 | 让 AI 和人类都能回溯每段来自哪。 |
| 408 | |
| 409 | --- |
| 410 | |
| 411 | ## 五、与 Generate PPTX Stage 1 的关系 |
| 412 | |
| 413 | Default Generate 的 [Step 3](../../skills/ppt-master/workflows/generate-pptx.md#step-3-template-candidate-preparation) |
| 414 | 只准备候选输入。Stage 1 把沟通契约与可切换的自由设计/使用模板选择同屏呈现。 |
| 415 | 普通请求默认自由设计并收起详细控件;明确要求使用模板或提供任意精确 root 时 |
| 416 | 默认展开模板模式。只提供一个 root 时会预选,多 root 仍只作为未选候选。裸 |
| 417 | 模板/品牌名称或风格词不会解析或预选工作区。对于每个已选工作区,确认后的 |
| 418 | apply 阶段解析 `<workspace>/templates/design_spec.md`;为兼容目录形态,也接受根目录直接包含 `<workspace>/design_spec.md`、且满足当前 kind 合同的旧式平铺 Brand/Layout/Deck 工作区。Layout/Deck 还必须带有当前 structured SVG;Style 没有平铺形态。若包仍使用 `native_structure_mode: template`、缺 Master 身份、原子 placeholder 或蒸馏时代标记等旧语义,apply 阶段必须拒绝;先由 `create-template` 产出新工作区,再继续生成。`kind` 字段决定**AI 如何处理已选路径**: |
| 419 | |
| 420 | | 用户路径指向 | Stage-1 确认后的 apply 行为(按 kind 分支)| |
| 421 | |---|---| |
| 422 | | `kind: brand` | 把工作区 `templates/` 及实际存在的 `images/`、`icons/` 映射到项目同名目录;忽略 `exports/` | |
| 423 | | `kind: style` | 安装仅含 spec 的方向/方法工作区;要求无 SVG roster,并保持生成页面为 flat | |
| 424 | | `kind: layout` | 把工作区 `templates/` 及实际存在的 `images/`、`icons/` 映射到项目同名目录;忽略 `exports/` | |
| 425 | | `kind: deck` | 把工作区 `templates/` 及实际存在的 `images/`、`icons/` 映射到项目同名目录;忽略 `exports/` | |
| 426 | | 多路径 | 按上表合成单份 `design_spec.md`,解决冲突后再合并实际存在的可移植目录 | |
| 427 | | 同类多份 | 按上节"git 冲突解决"问答,得到合成结果 | |
| 428 | |
| 429 | 位图统一进入工作区 `images/`,模板 SVG 通过 `../images/` 引用。如果显式输入根目录本来就是目标项目根目录,apply 阶段原地消费:不得复制到自身,也不得再次移动素材。除此之外,完整核心工作区是可移植的:可以从项目根复制到全局库根、从全局库复制到项目,或从另一个工作区直接复用,而不改变内部结构。注册是唯一与范围相关的步骤。 |
| 430 | |
| 431 | ### 策略师确认阶段在不同 kind 下的行为 |
| 432 | |
| 433 | 安装模板不会让沟通问题消失。Stage 1 把同一份开放式沟通契约与模板选择同时确认,但两者相互独立:沟通推荐只使用当前请求、源材料事实、对话约束和项目初始化状态,连模板画布也不能参与。Stage 1 完成且所选模板安装后,最终 Stage 2 才读取该状态,并确认完整方案与制作计划。Brand 提供身份约束、结构仍然自由;Style 提供方法和视觉默认值候选并保持 flat;Layout 提供结构能力;Deck 提供描述性的可复用应用语境供对照,但不充当当前项目契约。Style-only 时 Strategist 不读取原型,固定写入 `template_reuse_scope: style` 与 flat 结构;Layout/Deck 才读取真实原型和当前内容,生成页面/原型计划,并把 `mirror`、`layout` 或 `style` 记录为内部导出值。按 mirror 创建的工作区因此只提供原样复用能力,不会强制使用;Confirm UI 会显示自由设计/使用模板和候选控件,但不显示内部复用/遵循字段。规划语义由 `references/strategist.md` 与 `references/strategist-template.md` 负责,机器结构由 `templates/schemas/spec_lock.schema.json` 负责。 |
| 434 | |
| 435 | --- |
| 436 | |
| 437 | ## 六、与路线和子工作流的关系 |
| 438 | |
| 439 | | 路线或子工作流 | 产出 | |
| 440 | |---|---| |
| 441 | | `workflows/create-template.md` | 固定 Create Template 入口,以及范围、确认、预检、结构创作、注册、完成和交接的共享合同;只分派一个子工作流 | |
| 442 | | `workflows/create-template/create-brand.md` | 仅身份的 Brand 工作区;无 SVG roster,空的可选目录省略 | |
| 443 | | `workflows/create-template/create-style.md` | 仅方向/方法的 Style 工作区;无 SVG roster、身份真值、应用契约、原生结构或预览 PPTX | |
| 444 | | `workflows/create-template/create-layout.md` | 品牌中立、带结构化 SVG roster 的 Layout 工作区 | |
| 445 | | `workflows/create-template/create-deck.md` | 应用契约与身份/结构一体化、带结构化 SVG roster 的 Deck 工作区;可复用成果带品牌身份或场景语义时选择,不能只因来源是一份完整 PPTX 就默认选择 | |
| 446 | |
| 447 | 在全局库范围,frontmatter `kind` 字段决定工作区父目录位于 `templates/brands/` / `templates/styles/` / `templates/layouts/` / `templates/decks/`。项目范围在项目工作区根目录保留同一 kind 语义。完整工作区可在两种范围之间移动而不改形,只需增加或移除全局索引注册。 |
| 448 | |
| 449 | --- |
| 450 | |
| 451 | ## 七、不做(与本文 framing 配套的拒绝列表) |
| 452 | |
| 453 | - **不在 fusion 层支持字段级覆盖语法** —— 字段级微调走 策略师确认阶段这条已有路径 |
| 454 | - **不为同类三份及以上设计批量冲突解决** —— 用户先在 chat 里收敛到两份 |
| 455 | - **不引入双名映射表** —— 模板命名按其品牌/场景母语(中文模板用中文名,英文模板用 snake_case),不强制统一 |
| 456 | - **不为输出范围新增结构分支或 CLI flag** —— 输出范围是 `create-template` 简报里的执行选择;两种范围的 Layout/Deck 都声明 `native_structure_mode: structured`,Brand/Style 均无 roster |
| 457 | - **不增加 Theme kind** —— Theme 投影 Brand、Deck 或当前项目解析后的身份;Style fallback 不是身份真值 |
| 458 | - **不让 Style 自动触发 visual review** —— Review Focus 只补充已启用的审阅阶段 |
| 459 | - **不把 Brand + Layout 自动提升成可注册的 Deck** —— 项目内组合可以按同时具备身份/结构能力来路由,但可复用 Deck 仍必须包含应用契约 |
| 460 |