前言¶
在 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