前言¶
在 DSH 里让模型「做一份 PPT」,常见做法要么用 python-pptx 静默写文件(改一处要重开、过程不可见),要么走 HTML 再转(格式丢、难编辑),要么用 RPA 点界面(脆弱且慢)。dsh-ppt 是社区工作流类插件,走另一条路:通过 COM 驱动本机 Microsoft PowerPoint 或 WPS,产出原生 .pptx;同时在 PowerPoint 窗口与 DSH 输入框旁的预览面板里实时可见生成过程。下面介绍它是什么、能做什么、如何启用与典型调用方式。
这是什么¶
- 名称与维护:GitHub 仓库 yfy12306/dsh-ppt,维护者 yfy12306;社区目录页 skillhub.cn/plugins/yfy12306/dsh-ppt,分类为工作流。
- 一句话定位:DSH 桌面端的 PPT 制作插件——真实 Office COM 生成演示文稿,JSON 数据驱动,带 default 风格(支持自定义主题)、matplotlib 图表、PDF 落盘校验与 Zotero 参考文献页;精华抽取自 harness-anything(MIT),针对 Microsoft Office 实测重写并补齐实时预览。
- 许可与版本:MIT;package.json 中当前版本为 1.1.1。插件以你启用 DSH 时的进程权限运行,安装前请自行查看仓库源码与许可证。
它解决什么问题¶
README 将 AI 做 PPT 的三条老路与本插件对比如下:
| 老路 | 问题 |
|---|---|
| python-pptx 直接写文件 | 看不到过程,改一处要重开文件 |
| 截图 + 鼠标点 GUI(RPA) | 脆弱、慢、坐标一偏全错 |
| 生成 HTML 再转 | 丢格式、不可编辑 |
dsh-ppt 用 COM 自动化真实 Office:表格、图表、文本框均为原生对象;因连接的是活着的 PowerPoint 进程,用户可在窗口中观看逐页生成。
核心功能¶
COM 引擎与元素模型¶
引擎在 engine/pptx_engine/ 下:office.py 连接 PowerPoint(MS Office 优先,WPS 兜底,ProgID 自动探测);deck.py 管理 Deck 会话;elements.py 提供 36 种绘图原语/组合组件;renderer.py 将声明式 JSON spec 路由到绘图调用。charts.py 用 matplotlib 出图(中文字体已配置);assets.py 用 PIL 生成渐变、封面等程序化素材。
实时可见的三层实现¶
- 真实 PowerPoint 窗口:
Presentations.Add(WithWindow=msoTrue)建稿,每步后ActiveWindow.View.GotoSlide(idx),在 Office 里直接看。 - DSH 内预览面板:引擎内只读 HTTP 侧车(默认
127.0.0.1:8790),变更后将当前页Slide.Export为 PNG;Node 宿主代理为/ppt/*,客户端芯片约每 1.2s 轮询缩略图。 - 操作流水字幕:每个动作记录
{seq, 时间, 类型, 页码, 摘要},面板按时间倒序展示。
COM 仅在 CoInitialize 过的线程使用;HTTP 侧车跑在独立 daemon 线程,只读磁盘 PNG 与 state.json,不触碰 COM,避免跨线程崩溃。
设计系统、质量与校验¶
内置 default 干净商务风格(近白底、藏青、橙色 60-30-10 等,规则见 README 与 CHANGELOG 1.1.0)。themes.py 含排版与布局硬约束;quality.py 做 pre-flight 与五维度终评。保存时可同导 PDF(autoPdf);verify.py 用 PyMuPDF 做溢出、重叠、空页与 parity 等落盘校验。
Zotero 参考文献¶
若本机已装 Zotero,可通过 zotero_search / zotero_cite / zotero_refs_slide 检索、按 GB/T 7714 / APA / IEEE 渲染引用并插入参考文献页;未安装时相关工具返回 available=false,不影响 PPT 主流程。
DSH 侧集成¶
启用后模型侧出现 mcp__ppt__*、mcp__zotero__* 工具与 dsh-ppt Skill;输入框右侧有 PPT 芯片打开实时预览;斜杠命令 /ppt 做状态自检。MCP 协议层手写于 mcp_stdio.py,不依赖 mcp Python 包。兼容说明见 package.json:DSH Desktop 2.0.17(bundled host 0.2.0-rc.2)等项已列在 dsh.compatibility。
安装与启用¶
README 未提供 dsh plugin add github:... 一类命令;需在 profile 中登记并 重启 DSH 后生效。步骤如下:
- 在
profiles/desktop/package.json的dependencies中加入插件路径(示例为 Windows 本机 link,请按你的实际目录改写):
"dsh-ppt": "link:C:/Users/user/.dsh/profiles/desktop/dsh-ppt"
- 在
dependencies["dsh"].profile.bundles中加入"dsh-ppt"。 - 将插件自带的
cordis.patch.yml内容追加到profiles/desktop/cordis.patch.yml。 - 在 profile 目录执行
pnpm install,然后重启 DSH。
文档还提到可用 junction 代替损坏的 pnpm 链路:手动将 node_modules\dsh-ppt 链到插件目录。重启前建议运行:
node scripts/preflight.mjs
按 DSH 真实解析根校验包引用,不通过则不重启。
配置项(cordis.patch.yml)¶
| 键 | 默认 | 说明 |
|---|---|---|
visible |
true | 弹出真实 PowerPoint 窗口实时观看 |
backend |
auto | auto / ms-office / wps |
theme |
default | 风格;支持自定义主题 |
livePort |
8790 | 实时预览侧车端口(占用则 +1 顺延) |
workdir |
~/Desktop/dsh-ppt-out | 产物/素材/恢复副本目录 |
autoPdf |
true | 保存时同导 PDF |
snapshotScale |
960 | 预览快照导出宽度 px |
quitOnExit |
false | 退出时不结束 PowerPoint,保留窗口 |
典型用法¶
先在模型侧确认环境,再用 JSON 一次建稿或分步操作。以下示例来自 README:
ppt_status # 先看环境
ppt_new theme=default # 建文稿(干净商务风格)
ppt_build slides=[ # JSON 一次建整份
{elements:[{type:cover, title:产线质量月报, ...}]},
{elements:[{type:header, sec:1.1, title:合格率},
{type:stat_cards, box:[16,84,928,96], items:[...]},
{type:chart, chart:bar, box:[24,196,440,260], data:{...}},
{type:table, box:[488,196,448,200], header:[...], rows:[...]}]}
]
ppt_quality # pre-flight 审查
ppt_save # 出 pptx + pdf + 落盘校验
ppt_verify # PDF 实测溢出/重叠/parity
文献相关(需 Zotero):
zotero_search query=外倾角
zotero_cite refs=[...] style=gbt7714
zotero_refs_slide refs=[...] insert=true # 直接生成参考文献页
引擎 Python 依赖见 engine/requirements.txt(含 pywin32、Pillow 等;README 写明本机 hermes venv 可已带部分依赖)。
适用场景与注意¶
适合谁:在 Windows 上已安装 PowerPoint 或 WPS,希望在 DSH 对话里用 MCP 工具 + Skill 驱动可编辑的原生 pptx,并需要生成过程可见、PDF 校验与(可选)Zotero 参考文献页的用户。
务必知晓的边界:
- 仅 Windows(COM 依赖)。
- 桌面锁屏时 PowerPoint 窗口可能不可见,引擎与预览侧车仍工作,解锁后可见。
- 预览依赖 DSH 回环路由
/ppt/*;若 404,先用/ppt查看live.up。 - 插件异常时 host/client 会降级为不挂载或不显示芯片,避免拖垮 profile;回滚步骤见 README「安全与防崩」一节(删配置引用与
node_modules\dsh-ppt链接后重启)。
社区目录 skillhub.cn 与 DeepSeek / 幻方无官方从属关系;DSH 生态理念是「一切皆插件」,本文仅介绍该仓库公开说明中的能力。
结尾¶
dsh-ppt 把「真实 Office COM + JSON 驱动 + 实时预览 + PDF/Zotero 扩展」收进一个 DSH 工作流插件,适合不想在 python-pptx 与 HTML 转制之间二选一的桌面用户。详情与测试命令见仓库 README;启用前请核对 profile 路径、跑 preflight,并确认本机 Office 与 Python 环境满足要求。
- 目录页:https://www.skillhub.cn/plugins/yfy12306/dsh-ppt
- GitHub:https://github.com/yfy12306/dsh-ppt