chiphoton/DeepSeek-Harness-Video-Director ↗★ 76
dsh-video-director
A project-scoped multimodal video director plugin for DeepSeek Harness. 适合需要本地运行工作流,将剧本、提示词、图像和音频合成为视频的创作者。
설치
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:chiphoton/DeepSeek-Harness-Video-Director简体中文 · Agent installation guide · Developer guide · Terminology · vd-node definitions · Example Gallery

🎬 DeepSeek-Harness Video-Director
A visual, node-based video director for DeepSeek Harness.
Script · Prompt · Image · Audio · Video · Fully local workflows
DSH Plugin · ComfyUI · Ollama · MiniMax-H3
DeepSeek-Harness Video-Director is a video-production plugin built for DeepSeek Harness. It turns script, image, audio, and video generation into a connectable canvas, with ready-to-use paths for ComfyUI, Ollama, OpenAI-compatible APIs, and Codex Plan.
Beginners can start with the built-in workflows instead of assembling every provider call by hand. Native Qwen3.8-27B and MiniMax-H3 paths make a fully local, deployment-controlled multimedia pipeline possible when the selected models and runtime support it.
We call canvas elements vd-nodes and the overall canvas graph a vd-workflow. A ComfyUI-backed vd-node executes a comfyui-workflow containing comfyui-nodes. See the terminology guide for definitions, packages, bindings, and execution IDs.
✨ Why Video-Director
| Highlight | What you get |
|---|---|
| 🧩 Visual production graph | Connect text, images, audio, video, workflows, previews, and saved outputs on one infinite canvas. |
| 🚀 Beginner-ready workflows | Start from bundled image, H3 video, H3 audio, and prompt-enhancement workflows. |
| 🏠 Local-first generation | Use Ollama and ComfyUI on your own machine, including Qwen3.8-27B and MiniMax-H3 pipelines. |
| 🔌 Multiple providers | Mix Ollama, OpenAI-compatible endpoints, Codex Plan, and one logical ComfyUI backend in the same project. |
| 🎞️ Project-aware direction | Every Video Project keeps its own canvas, chat session, jobs, immutable assets, and provider choices. |
| 🌐 Language and storage | Switch between English and Chinese, and relocate canvas data from Settings. |
| 🛠️ Extensible by design | Import reviewed API-format comfyui-workflows or package them as declarative vd-node packs. |

🚀 Quick start
1. Install into DSH and run
Requirements: Git, Node.js ^22.19.0 or >=24, pnpm 11.7.0, and an installed dsh CLI. For a single-machine, fully local deployment, NVIDIA DGX Spark is the recommended environment, but it is not required; the exact hardware requirement depends on the installation preset and model precision you select. Run the following from the directory where you want to keep the plugin:
git clone --branch main --single-branch https://github.com/chiphoton/DeepSeek-Harness-Video-Director.git
cd DeepSeek-Harness-Video-Director
pnpm install --frozen-lockfile
pnpm run build
dsh plugin --profile web add "file:$PWD"
dsh web
dsh web opens the DSH Web UI. The plugin is installed persistently into the web profile, so later starts only need:
dsh web
If you run DSH from a sibling source checkout instead of an installed CLI:
# Run once in DeepSeek-Harness-Video-Director
pnpm install --frozen-lockfile
pnpm run build
# Then run in the sibling deepseek-harness checkout
pnpm dsh plugin --profile web add ../DeepSeek-Harness-Video-Director
pnpm dsh web
2. Connect a generator
If Ollama or ComfyUI is not ready yet, give the agent installation guide to an agent. It inventories the exact models, comfyui-workflows, and ComfyUI custom-node packages used by this repository, installs only the selected installation preset, and verifies the result. The default path installs both services locally; a separate path keeps cloud services bound to their remote loopback interfaces and reaches them through SSH local port forwarding.
Open Settings → Connections in Video-Director:
- Ollama: defaults to
127.0.0.1:11434; install a model such as Qwen3.8-27B on the Ollama host, then select it in Video-Director. - ComfyUI: defaults to
127.0.0.1:8188; install each comfyui-workflow's required models and ComfyUI custom-node packages on the ComfyUI server. - OpenAI Compatible: set the Base URL and API key, then refresh to discover the provider's model list.
- Codex Coding Plan: uses the machine's existing Codex sign-in for prompt and image workflows. Models and default reasoning effort come from the installed CLI. Refresh reloads the catalog; Fast (priority) is optional and off by default. Set
DSH_VIDEO_DIRECTOR_CODEX_PATHif Codex is not on PATH.
Connection fields save when you leave the field or press Enter. Refresh checks the saved connection and displays its model inventory; choose generation models on individual nodes. ComfyUI lists installed files under checkpoints, diffusion_models, loras, and vae tabs, with search inside each category. Samplers, schedulers, and other workflow options remain in node controls. Unload Models releases loaded Ollama models or requests ComfyUI model/cache cleanup on that card's endpoint. Installed model files remain available. On narrow screens, Refresh and Unload Models use icons. A blank API key field keeps the saved key; Clear saved key explicitly removes its settings override.
You only need one working provider to begin. Video-Director does not silently install models, ComfyUI custom-node packages, or external services.
3. Build your first vd-workflow
Double-click empty canvas space, add vd-nodes, and connect compatible handles:
Text → Prompt Enhancer → H3 Video → Preview → Save Output
Set the provider on each executable vd-node, choose its model or registered comfyui-workflow as applicable, enter a generation prompt, then click Run. Use Save in the top bar to persist canvas edits; generation can run from the current unsaved canvas snapshot.
Unsaved workflows appear in italics with an ***** in the project picker and its selected title. Edits are cached automatically, independently of Save, so you can switch projects and recover drafts after restarting DSH. The picker shows the unsaved count; drag project rows to reorder them (or use Alt+Up / Alt+Down), and use each row’s ⋯ menu for project actions. The order survives restart.
New projects, imports, duplicates, and editable example copies stay unsaved until you click Save. Discard changes restores the last explicitly saved workflow and clears undo/redo while retaining its jobs and assets. For a never-saved copy, Discard removes the draft and its owned assets; its DSH conversation remains. Wait for queued/running tasks to finish or cancel them before discarding.
Click Run again to queue another snapshot. All browser tabs on the same DSH host share one workflow queue, with dependency stages and batches kept together. You can switch, rename, duplicate, import, and export workflows during execution. Jobs initially fetches the latest 10 records and loads another 10 when you scroll to the bottom (or choose Load 10 more). Loaded pages stay in this tab’s controller memory across drawer closes and workflow filters; a new tab or reload starts with 10 again. Completed cards append (elapsed time) to their datetime line. Jobs shows compact runs across all workflows with filtering, live elapsed time, clickable artifacts, and a three-dot menu for artifact/workflow downloads, opening the submitted snapshot, removing history, and inspecting properties. Choose Cancel Job at the top of the three-dot menu to cancel queued or running work; the inspector keeps its cancel action too. Inspect Property shows Elapsed Time directly below Submitted: it excludes queue wait, updates during execution, and stops at the terminal timestamp. Opening a submitted snapshot is undoable; exporting produces an importable project archive with its referenced assets. The DSH backend persists and schedules the complete graph, including dependent stages, triggers, and Batch Input cases. Tabs may be minimized, suspended, or closed after submission. Run N adds N separate runs. Keep DSH and the computer running; after a host restart, queued snapshots resume in order, while interrupted active work is marked failed rather than submitted twice.
Duplicating a workflow creates independent asset references to the same stored media bytes. Replacing an input affects only that copy, and deleting one workflow keeps files referenced by other workflows. Portable exports still include their media.
Starting a vd-workflow or a single node resets other non-frozen, inactive nodes to IDLE, preserving their cached outputs. Nodes stay IDLE while waiting, show RUNNING with their current stage or percentage during execution, and show COMPLETED with the local finish time (MMDD-HH:mm:ss) and duration in seconds. Frozen nodes retain FROZEN. New job durations exclude the Host queue wait; older history uses its available timestamps.
If an SSH tunnel drops, active ComfyUI and Ollama work waits and retries automatically with backoff. ComfyUI retrieves completed outputs using the original prompt ID; Ollama retries the interrupted text request. Permanent configuration or execution errors still fail visibly.
Cancel also stops the submitted ComfyUI prompt, including a prompt waiting in ComfyUI's queue. The job stays cancelling until that prompt stops; cancelling-reconnecting means cancellation is waiting for the tunnel to recover. Other users' jobs are unaffected. Running-prompt cancellation requires ComfyUI's per-job cancellation API; older servers report an explicit failure instead of interrupting an unrelated job. Ollama cancellation closes the active inference request and stops retries; it leaves the model loaded for later use.
🧰 vd-nodes and how to use them
| Group | vd-nodes | Use |
|---|---|---|
| Inputs | Text, Image, Audio, Video, Sketch | Type, upload, paste, drop, or draw source material. |
| Generation | Prompt Enhancer, Image Processing, H3 Video, H3 Audio | Generate or transform media with the selected provider and model or comfyui-workflow. |
| Utilities | VRAM Trigger | Insert an execution barrier and optionally eject Ollama models or clear ComfyUI VRAM/cache. |
| Outputs | Preview, Save Output | Inspect results in the project or download them with an explicit filename. |
| vd-node definitions | Bundled and imported definitions | Run typed, reusable ComfyUI-backed vd-nodes with compact primary and Advanced controls. |
Useful canvas gestures:
- Adding an Image, Audio, or Video input creates an empty node. Choose or drop a file when ready.
- Audio inspection opens a compact waveform player with a scrolling timeline, full-track overview, click/drag seeking, zoom, precise playback time, 15-second skip controls, volume, and playback speed. Duration, format, sample rate, channel count, file size, and embedded metadata remain available.
- Edit, to the left of Metadata in audio/video previews, opens the Media Editor. You can also right-click and choose Edit Audio or Edit Video. Trim with the waveform handles or exact times; videos also offer a draggable crop rectangle, aspect presets, and Export current frame. Export downloads the result without changing the source; Save applies it to the current source; Save as new copy makes the copy active and retains the original in Gallery. Discard changes closes without applying edits. The close button exits immediately when unchanged, or asks for confirmation when there are unsaved edits. Source changes support Undo, and closing a context menu only requires clicking elsewhere. Editing requires
ffmpegandffprobeon the DSH host; output is MP4 video, FLAC/WAV audio, or PNG frames. - Image, Audio, and Video inputs offer Replace and Inspect in their right-click menu. Click an image to inspect it in the Preview viewer, or click the filename to replace its file; hovering or focusing the filename reveals Replace. Replacement preserves the node and connections, resets its mask and trim, and supports Undo.
- Drop one matching file onto a Text, Image, Audio, or Video input to replace its content. Batch Input accepts multiple supported text/media files and applies its filename regex; unsupported files are skipped with feedback. Drops on input nodes never create extra canvas nodes.
- Video inspection in Input, Preview, and Save Output shows dimensions, FPS, format, duration, and file size. Metadata opens container/stream tags and codec details. Detailed video inspection uses
ffprobefrom FFmpeg on the DSH host; if it is unavailable, browser-readable dimensions and duration still appear. - Gallery, beside Tasks, opens on All workflows and groups source artifacts under Input and cached results plus retained job history under Output. Filter by workflow and search filenames, workflow/node names, media types, or text content; cards identify their workflow, and unsaved drafts are included. Browsing does not switch or save the active workflow. Refresh reloads the catalog. Repeated files appear once per workflow/tab. Click any image, video, audio, or text card to inspect it; images support drag-to-pan, wheel/button zoom, Reset view, and Metadata. Closing Inspect preserves the Gallery tab, filter, and search.
- Text inputs show a live character count above the textbox, with Import (UTF-8 text files) and Clear below it. Import replaces the text while preserving whitespace; both actions support Undo.
- Double-click blank space to search the node menu.
- Drag an output onto blank space to create and connect a compatible node.
- Select (V): drag empty canvas to pan, click a node to select it, and drag a node to move it. Hand (H): drag anywhere to pan, including over nodes and their controls. Hold Space for temporary Hand navigation.
- The sidebar accepts Image, Audio, Video, Folder and Node references. Compact tiles show preview/remove controls on hover or keyboard focus; clicking the body inserts an atomic alias such as ``. Removing an unsent reference renumbers draft aliases; aliases already sent remain stable. Double-click anywhere on a node title bar, drag its editable title into chat, choose + → Node, or right-click the node and choose Add to Chat References. Media and folders can be dropped anywhere in the sidebar. Folder previews offer a searchable tree. Aliases belong to the conversation; imported canvas assets retain their original filenames.
- Sidebar context contains a compact workflow summary. The Host-owned
vd_canvastool queries details on demand and can edit/validate/run workflows after tabs close. Conflicting human/agent edits are detected. See sidebar architecture and validation for commands, context handling and current limits. - Ctrl-drag selects a group in either mode; Ctrl-click adds or removes a node. On macOS, Command also works for these gestures and shortcuts; Ctrl-click selects without opening a context menu. Selected nodes have an expanded border, and draggable node areas use a crosshair cursor in Select mode. Ctrl+B freezes or unfreezes the selection.
- Scroll to zoom over the canvas or nodes. Scrollable fields and panels consume the wheel to scroll their own content.
- Right-click empty canvas for the