dsh-slide
A per-Conversation visual slide editor for the DeepSeek Harness Web UI. A setting switches the current Conversation from the built-in chat surface to a PowerPoint-like canvas while preserving the same Session and AI input channel.

Features
- Enable or disable Slide Editor independently for the currently open Conversation.
- Multi-slide 16:9 canvas with live-content thumbnails, object and page selection, AI-only deck editing, and automatic Workspace persistence.
- Human interaction is limited to selecting objects, pages, or the whole deck and instructing an annotation agent; direct text editing, object movement, resizing, insertion, deletion, and page keyboard mutations are not exposed.
- Export the current deck to a standalone browser presentation with keyboard navigation, fullscreen mode, and print-to-PDF layout; Workspace images are embedded as data URIs.
- Give a dedicated annotation subagent an edit instruction with selected objects, a selected page, or the entire deck as its focus; every subagent retains full-deck modification authority and validated operations are applied directly.
- Continue the conversation below each annotation while preserving that annotation's own message thread and focus.
- Each annotation receives a title summarized from its first request, can be renamed manually, and preserves a custom title across later model turns.
- Watch visible assistant text and tool lifecycle in place of the annotation input while it runs; hidden model reasoning is not exposed.
- Collapse individual annotation threads, review applied-operation counts, resolve, reopen, or delete them from the right panel.
- Resize the right panel by dragging its left edge; the chosen width is preserved locally and can also be adjusted with arrow keys.
- Workspace file browser with single-click navigation/opening, text and image preview, drag-and-drop upload, folder creation, rename, and delete context actions.
- Shared knowledge initialization prompt and Workspace-relative knowledge file list, editable from Settings or the editor panel.
- Host file routes are bound to the live Session's authoritative
cwd; lexical traversal and symlink escapes are rejected.
AI-guided selection
Select one or more slide objects to give the annotation agent a precise focus. The selection is context rather than a permission boundary, so the agent can still make the broader deck changes needed to fulfill the request.

Install
Install the published plugin:
dsh plugin --profile web add dsh-slide@dsh-plugin
dsh web
Or build this checkout:
pnpm install
pnpm run build
dsh plugin --profile web add /absolute/path/to/dsh-slide
dsh web
Switch the current Conversation mode
The setting is scoped to the Conversation that is currently open; it is not a global replacement for every chat.
- Open the Conversation you want to use as a slide deck.
- Open Settings from the lower-left corner.
- Select 幻灯片编辑器 (Slide Editor).
- In the 当前 Conversation card, turn on the switch labeled 开启幻灯片编辑模式.
- Return to the Conversation. Its normal chat surface is replaced by Slide Editor while retaining the same Session, Workspace, and model configuration.
To return to the standard chat interface, open the same setting while that Conversation is active and turn it off. Enabling or disabling Slide Editor for one Conversation does not affect other Conversations.
Storage
Each Conversation defaults to:
.dsh-slide/<session-id>.slides.json
Opening another *.slides.json file from the right-side file browser makes it the document associated with that Conversation. Documents contain the slide model and annotation review state. Global settings contain the enabled Session ids, shared knowledge prompt, knowledge paths, and per-Session document paths.
AI annotation flow
Each annotation owns an isolated message thread and one focus: selected elements, selected pages, or the whole deck. Every turn starts a foreground one-shot spawn subagent under the current Conversation with that annotation's history, focused content, full deck JSON, shared guidance, and knowledge file paths. Selection guides the task but never limits authority: every annotation may update any object or page and add pages. The host streams visible text deltas and tool start/end events as NDJSON while withholding reasoning deltas. The final strict JSON response contains a short review message and slide operations; the browser validates and applies accepted operations immediately, updating both the canvas and live thumbnails. One-shot runs do not wake the parent Conversation, and annotations can progress independently.
Architecture
- Host entry: settings namespace plus two Workspace HTTP routes.
- Browser entry: one Settings section and a dynamic
conversationslot registration at priority-100only while the current Session is enabled. - Browser bundle: lazy CommonJS factory loaded through
window.__ModuleLoader__, so installing the package does not rebuild the DSH frontend.
Current limitations
- The native editable format is
*.slides.json; HTML export is included, while editable PPTX export is not. - The file API currently caps JSON uploads at 32 MB per request.
- The subagent response protocol currently supports updating or deleting selected objects and adding text or shape objects; image generation and arbitrary document rewrites are not accepted.
- The editor supports text, rectangles, and images; rich text runs, charts, tables, guides, and collaborative cursors are not implemented.
No comments yet. Be the first to write one.