DSH (DeepSeek Harness) uses a plugin-based architecture. Under the Web Profile, directly writing complex PPT generation workflows in the chat window can lead to issues such as prompt management, conversation context truncation, and permission control. The dsh-ppt-maker plugin adds an entry to the composer menu and encapsulates a self-contained 58KB orchestration prompt inside the plugin, so a single message send can start the full workflow.
Core Features¶
- Menu entry: Adds a
PPT Makeroption to the+menu at the bottom left of the input box. - Trigger mechanism: After clicking, only one kickoff message is sent. It does not modify conversation permissions and does not enable host HTTP routing.
- Full workflow orchestration: After the Agent receives the prompt, it sequentially runs environment checking, requirement confirmation, style selection, draft generation, graphic/image processing, chart animation, and PPTX export.
- Deterministic pipeline: Includes a built-in HTML-to-PPTX conversion script and supports three-stage validation: rendering, generation, and on-device acceptance.
- Self-contained: Prompt files are packaged with the plugin, do not occupy chat context, and the workflow can run when the working directory is empty.
Installation¶
Make sure DSH Desktop or the Web Profile is installed (it must include dsh-client-ui-commands and dsh-client-ui-conversation).
Use the official command to install:
dsh plugin --profile web add github:kitterfast/dsh-ppt-maker
After installation, the plugin mounts automatically. If manual verification or development is needed, the local environment must have Node.js ≥ 20.
Usage¶
- In the DSH interface, click the
+button at the bottom left of the input box. - Select
PPT Makerfrom the popup menu. - Choose one of the sub-options:
- A. Use AI image generation: Calls Seedream (requires a Volcano Ark account), costing about 0.3 yuan per image.
- B. Do not use AI image generation: Uses programmatic graphics/SVG, with zero cost and offline support.
- The plugin sends one kickoff message and pre-answers checkpoint 0. The flow then stops at checkpoint ① (requirements), ② (style), and ③ (export) waiting for confirmation.
Workflow and Permissions¶
The full workflow involves headless browser rendering, writing to workspace temporary directories, and other operations, and runs by default in a restricted sandbox environment.
- One-time confirmation: When the plugin starts for the first time, the Agent requests the user to send
/permission danger-full-access. This is to avoid a security prompt before every operation. After this command is sent, the rest of the flow is not interrupted item by item. - Security boundary: The plugin itself does not modify conversation permissions; the user must manually send the
/permissioncommand. If this is not sent, the Agent automatically falls back to a safe path that performs no external writes (Checkpoint A0/7B).
HTML → PPTX Deterministic Pipeline¶
This plugin includes a self-contained conversion pipeline (v2.0.0) to address instability caused by the Agent writing converters on the fly.
- Rendering: A headless browser renders real alpha layers.
- Generation: Shapes are located by shape ID and written to the native PowerPoint timeline.
- Acceptance: Structure is checked and page-by-page pixel-level comparison is performed.
node scripts\deck\deck-render.mjs build\deck.config.json
node scripts\deck\deck-to-pptx.mjs build\deck.config.json
node scripts\deck\deck-verify.mjs build\deck.config.json
Note:
* Text is rasterized and cannot be directly edited in PowerPoint; it is written to speaker notes or replaced as an image.
* Infinite loop animations (CSS infinite) cannot be mapped to the PowerPoint timeline. The pipeline detects and warns about them.
Design Boundaries¶
- Does not modify conversation permissions: Security policy is controlled by the user.
- Does not open host HTTP routing: The plugin does not expose unauthenticated endpoints to the user client.
- Does not dump the full prompt into the chat: The prompt is stored as a plugin resource file, avoiding version-control breakage.
- Does not send Composer notifications: Interaction is limited to visible states in the chat window.