Introduction¶
In DeepSeek Harness (DSH), a common workflow for agents to generate presentations is to first create an outline or Markdown, which is then manually moved into presentation tools for layout. If adjustments are needed later, the user can only describe the changes in text during the conversation. dsh-slide takes a different approach: it switches the current Conversation’s chat interface to a 16:9 slide canvas. The user is only responsible for selecting objects, pages, or the entire deck; specific modifications are executed by a dedicated annotation sub-agent, with results directly reflected on the canvas and thumbnails. DSH’s philosophy is “everything is a plugin,” and dsh-slide is one such capability provided as a plugin.
Below, it is introduced in the order of features, installation, and typical usage.
What is this¶
dsh-slide is a DSH Web plugin maintained by JeremyGuo, current version 0.2.0, MIT license. One-sentence positioning: a visual slide editor that can be independently enabled for a Conversation, featuring AI annotations, Workspace file management, and shared knowledge guidance.
It solves the problem of letting agents generate and iterate on multi-page slides on a persistent, visual canvas, rather than treating slide content as pure text chat. Editing actions are fully handed over to AI; users do not directly edit text or drag/resize objects, but participate only by selecting focus and giving commands.
Core Features¶
Toggle per Conversation, no global replacement¶
The Slide Editor toggle only affects the currently open Conversation; it does not replace all chat interfaces with a canvas. When enabled, it preserves the same Session, Workspace, and model configuration. When disabled, it disables the mode for the current Session but retains the last document association. Toggling for one Conversation does not affect others.
AI-only editing¶
Multi-page 16:9 canvas with real-time content thumbnails and object/page selection. Human-machine interaction is only one type: select object, page, or whole deck, then issue instructions to the annotation agent. Direct text editing, object movement/scaling, insertion, deletion, and keyboard page modifications are not exposed.
Editing is performed by a dedicated annotation sub-agent, with the focus being the selected object, selected page, or the whole deck. Each sub-agent retains full deck modification rights, and validated operations are applied directly. Selection is context, not permission boundary; to fulfill requests, the agent may still make broader changes, including adding new pages.
Annotation threads and right-side panel¶
Each annotation has an independent message thread and can continue the conversation. The title is automatically summarized by the first request and can be manually renamed; subsequent rounds preserve it.
During sub-agent execution, visible assistant text and tool lifecycle are visible at the annotation input location; hidden model reasoning is not exposed. The right-side panel supports collapsing individual threads, viewing applied operation counts, resolving, reopening, and deleting; panel width is draggable, width is locally preserved, and can also be adjusted with arrow keys. One-shot sub-agent execution will not wake the parent Conversation; each annotation can progress independently.
File management and export¶
The deck is automatically persisted to Workspace, default path:
.dsh-slide/<session-id>.slides.json
The path contains the Session ID, so files in different Sessions of the same Workspace are not shared by default. If multiple Sessions are deliberately associated with the same *.slides.json, they will share the file, and concurrent saves may overwrite each other.
The floating File menu provides New / Load / Save / Save As / Copy / Export / Close; New, Load, and Save As use the Workspace file selector, no manual path entry required. The accompanying Workspace file browser supports click navigation and opening, text and image previews, drag-and-drop upload, new folder creation, renaming, and deletion.
The current deck can be exported as a standalone browser presentation, supporting keyboard navigation, fullscreen, and printing to PDF; Workspace images are embedded as data URIs.
Rendering capabilities¶
Image elements support three sources: workspace:<relative-path>, data URL, HTTPS URL; fit supports contain / cover / fill. Geometric elements use standard SVG path data: polygons (M/L/H/V/Z), cubic Bezier (C/S), quadratic Bezier (Q/T), elliptical arcs (A).
All coordinates and visual lengths—x, y, width, height, fontSize, radius, etc.—use a fixed 1280 × 720 slide design space. The editor scales synchronously with the render size, and pages and thumbnails share the same coordinate system.
Shared knowledge and file access boundaries¶
The plugin provides shared knowledge initialization prompt and Workspace relative knowledge file list, editable in Settings or the editor panel, serving as a public context for annotations. The host file route binds the authoritative cwd of the current Session, rejecting lexical path traversal and symlink escape.
Installation¶
To install the release version plugin, then start dsh web:
dsh plugin --profile web add dsh-slide@dsh-plugin
dsh web
You can also build and install from source. package.json requires node >=22.19.0:
pnpm install
pnpm run build
dsh plugin --profile web add /absolute/path/to/dsh-slide
dsh web
Typical usage¶
Switch to Slide Editor mode¶
After installation, follow these steps to switch a Conversation to the editor:
- Open the target Conversation.
- Click Settings in the bottom left.
- Select “Slide Editor”.
- Open the “Enable Slide Editor Mode” toggle in the “Current Conversation” card.
- Return to the Conversation; the chat interface is replaced by the Slide Editor. Session, Workspace, and model configuration remain unchanged.
To close, go back to the same settings and turn the toggle off to return to the standard chat interface.
Open an existing deck via agent¶
The main Conversation gains an open_slide_deck tool, which can open an existing and document-validated Workspace relative *.slides.json file and switch the current Conversation to Slide Editor mode. Typical flow: agent first uses file system tools to create *.slides.json, then calls open_slide_deck.
Note: Sub-agents cannot use this tool; calls carrying parentSession or origin: "subagent" will be rejected.
Images and geometric elements¶
Elements in the deck are described in JSON. Below is an image element, src pointing to a file inside the Workspace:
{
"kind": "image",
"x": 80,
"y": 120,
"width": 500,
"height": 320,
"src": "workspace:images/photo.png",
"fit": "cover",
"alt": "Product photo"
}
Geometric elements are described using a standard SVG path for polygons or curves; the path is defined within a local viewBox, then scaled into the outer rectangle:
{
"kind": "geometry",
"x": 600,
"y": 180,
"width": 400,
"height": 240,
"viewBoxWidth": 100,
"viewBoxHeight": 100,
"path": "M 5 90 L 50 5 L 95 90 Z",
"fill": "#dbeafe",
"stroke": "#2563eb",
"strokeWidth": 2
}
Polygons use M/L/H/V/Z, cubic Bezier uses C/S, quadratic Bezier uses Q/T, elliptical arcs use A; open curves generally write "fill":"none".
Use cases and notes¶
Suitable scenarios: Need to continuously generate and maintain a set of multi-page slides within the DSH conversation flow, treating slides as an iterative product rather than a one-time exported file; want humans to only control direction, with details modified by the agent.
Points to note:
- The editing model is AI-only. You cannot manually edit text, drag or resize objects; all modifications go through the annotation sub-agent. Install only if you accept this interaction premise.
- Selection is only context. To fulfill requests, sub-agents may modify pages or objects outside the selected scope, and may also add new pages.
- When multiple Sessions are deliberately associated with the same
*.slides.json, concurrent saves may overwrite each other; the default path design separated by Session isolation is intended to avoid this. - The plugin runs with the permissions of the current dsh process. Although the host file route binds the Session’s cwd and rejects path traversal and symlink escape, it is still recommended to check the plugin source code and license before installation (this project is MIT).
Summary¶
dsh-slide turns “conversational slide generation” from text back-and-forth into selection and instruction on a canvas: humans manage focus, sub-agents manage operations, and deck and annotation states remain in the Workspace. If you are using DSH and need an agent to maintain a presentation, it can serve as a starting point.
- GitHub: https://github.com/JeremyGuo/dsh-slide
- Plugin Directory Page: https://www.skillhub.cn/plugins/JeremyGuo/dsh-slide
The Plugin Directory Page is a community-maintained index site and has no official affiliation with DeepSeek / HF.