dsh-ppt:用本機 PowerPoint/WPS COM 做 JSON 驅動的演示文稿

前言

在 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 生成漸變、封面等程序化素材。

實時可見的三層實現

  1. 真實 PowerPoint 窗口:Presentations.Add(WithWindow=msoTrue) 建稿,每步後 ActiveWindow.View.GotoSlide(idx),在 Office 裏直接看。
  2. DSH 內預覽面板:引擎內只讀 HTTP 側車(默認 127.0.0.1:8790),變更後將當前頁 Slide.Export 爲 PNG;Node 宿主代理爲 /ppt/*,客戶端芯片約每 1.2s 輪詢縮略圖。
  3. 操作流水字幕:每個動作記錄 {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 後生效。步驟如下:

  1. 在 profiles/desktop/package.json 的 dependencies 中加入插件路徑(示例爲 Windows 本機 link,請按你的實際目錄改寫):
"dsh-ppt": "link:C:/Users/user/.dsh/profiles/desktop/dsh-ppt"
  1. 在 dependencies["dsh"].profile.bundles 中加入 "dsh-ppt"。
  2. 將插件自帶的 cordis.patch.yml 內容追加到 profiles/desktop/cordis.patch.yml。
  3. 在 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
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜