查真实用户两个「ppt生成」任务的 DB 执行轨迹:24 页 SVG 共 0 个 <use data-icon>。 根因是图标管线四环节无一强制图标落地——策略层(有时)锁图标,执行层不放、 质检层不拦、工具层还断着。四层一起修: - B 工具断点:references/SKILL 23 处路径仍指向已不存在的 skills/ppt-master/ (zcbot 是 skills/ppt/)→ 模型 `ls .../icons/<lib>/|grep` 验名得空集 → 放弃图标; 且 strategist 强制用的 icon_sync.py 在 zcbot 根本没有(GATE 空转,正是某任务连 图标都没锁的原因)。修:全量改路径(保留上游署名)+ 新建 icon_sync.py(复用 embed_icons 解析,验名+拷进 project/icons,缺名非零退出)。 - A 质检兜底(硬门):svg_quality_checker 加图标校验——锁了 icons.library + 非空 inventory 但全 deck 0 图标 → deck 级 error 退非零(逼回执行重写);单页 0 图标 → warning(封面/分节/breathing/尾页豁免)。 - C 执行强制:executor-base §4 + SKILL 执行纪律改为"内容页必须放 1–3 个 inventory 图标"(自由设计无模板可继承图标,只能逐页手写)。 - D 导出兜底(纵深):svg_to_pptx 导出前预扫,锁了 inventory 却 0 图标 → stderr 大声 [WARN](非致命,防跳过质检直接导出)。核实 native 转换器本就自己从图标库展开 <use data-icon>,故原设想的"finalize 硬前置"前提不成立,D 改成与 A 同源的导出层警告。 同版附带修 svg_preview.py 在沙箱里渲不出 SVG(报"未找到 Chrome / Edge"):移植自 ppt-master 的 find_browser() 只认 Windows chrome/msedge,不认镜像自带 /usr/bin/chromium (给 mermaid 装的)→ 视觉验收这关在容器里全程失效。对齐 rendering/pdf.py 发现逻辑 (认 chromium/chromium-browser/google-chrome + $CHROMIUM 覆盖);render() 补容器必需的 --disable-dev-shm-usage + 临时 --user-data-dir;并修一个静默已久的 bug——--screenshot 传相对路径 chromium 写不出文件(原代码吞 stderr,看着和"没浏览器"一样),改传绝对路径 并暴露 chromium stderr。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| 中国电信 | ||
| 中国电建_常规 | ||
| 中国电建_现代 | ||
| 中汽研_商务 | ||
| 中汽研_常规 | ||
| 中汽研_现代 | ||
| 招商银行 | ||
| 重庆大学 | ||
| README.md | ||
| decks_index.json | ||
README.md
Deck Templates
Deck = full-PPT replica. Each deck reverse-engineers a specific organization's branded presentation and bundles its identity + structure + middle segments into one atomic asset. Use a deck when you want the complete look of a particular institution (color, typography, logo, page structure, voice) preserved as a whole.
Single source of truth for what decks exist: decks_index.json (deck_id → { summary, canvas_format, page_count, primary_color }). This README explains the kind; it does not enumerate decks.
Full data model: docs/zh/templates-architecture.md.
Trigger rule
Deck selection is opt-in by explicit path. The main workflow defaults to free design. A deck is only used when the user gives an explicit directory path in their initial message (e.g. skills/ppt/templates/decks/招商银行/). Bare names do not trigger. See SKILL.md Step 3.
decks_index.json is a discovery aid, not a trigger — it lets the AI answer "what decks exist?" by listing ids and paths. Listing alone never advances the pipeline.
design_spec.md schema
Decks carry the full set of segments (identity + structure + middle). Minimum schema:
---
deck_id: <slug>
kind: deck
summary: <one-line use cases>
canvas_format: ppt169
page_count: 5
primary_color: "#XXXXXX"
---
# [Brand / Organization Name] - Design Specification
## I. Template Overview # Middle — Use cases / Design intent
## II. Canvas Specification # Structure
## III. Color Scheme # Identity — role / HEX / provenance / notes
## IV. Typography # Identity — role / family / weight
## V. Logo # Identity — file / form / usage rules (if logo bundled)
## VI. Page Structure # Structure — layout grid / decorative DNA
## VII. Page Types # Structure — per-page roles
## VIII. SVG Page Roster # Structure — file list + per-file purpose
Decks may include additional supporting sections (Voice & Tone, Icon Style, Layout Modes, Spacing Specification, SVG Technical Constraints, Placeholder Specification, Asset Specification, Usage Notes). Use them when meaningful for the replica.
Fusion behavior at Step 3
When the user gives a deck path alone, Strategist locks all segments; Eight Confirmations narrows to deck-content fields (target audience / page count / outline / tone tweaks).
When the user gives a deck path with a brand path or layout path, identity / structure segments are overridden by the higher-priority source (brand wins on identity, layout wins on structure). See SKILL.md Step 3 fusion table.
Creating a new deck
- Run
workflows/create-template.md(default kind isdeck) - Resulting directory lands under
templates/decks/<id>/ - Validate:
python3 skills/ppt/scripts/svg_quality_checker.py templates/decks/<id> --template-mode --format ppt169 - Register:
python3 skills/ppt/scripts/register_template.py <id> --kind deck
The register step updates decks_index.json — the single source of truth for deck discovery.
See also
templates/layouts/— structure-only templates without identitytemplates/brands/— identity-only presets without page rostersdocs/zh/templates-architecture.md— three-class data model + fusion rules