# DeepSeek-Harness Video-Director — Developer Guide [简体中文](./DEVELOP_zh.md) · [Project README](../README.md) `dsh-video-director` is an external [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) plugin for project-scoped video direction. It adds an infinite node canvas, a DeepSeek conversation bound to the selected Video Project, multimodal asset ingestion, and provider-backed text, image, audio, and video workflow nodes. This is an early functional implementation, not a hosted generation service. You supply and operate Ollama, OpenAI-compatible endpoints, and/or ComfyUI. MiniMax H3 weights are separately licensed; this plugin accepts the license gate by default, and deployments can explicitly disable it. ## What it provides - A compact project switcher with create, rename/delete, Undo/Redo, plus explicit **Run**, **Jobs**, **Settings**, and **Save** actions. Run supports the whole graph, selected nodes, or selected nodes plus their descendants, with batches from 1–20. The Jobs drawer groups graph runs while retaining individual node jobs. The always-front horizontal canvas toolbar lives at bottom-right and includes selection, panning, zoom, fit, and Mini Map visibility controls. - A left-side conversation whose `sessionId` changes with the selected Video Project and shares that Session's model directory. Images and audio can be pasted or dropped directly into the composer or selected from the **+** multimodal menu. PNG, JPEG, WebP, and GIF images are sent as native image prompt blocks; audio is transcribed through a selected OpenAI-compatible provider and inserted into the composer. Input settings cover Enter-vs-Alt+Enter behavior plus the speech provider, non-echoed API key, and transcription model, while a microphone button records speech for transcription. - An infinite `@xyflow/react` canvas with load nodes for text, image, audio, video, and sketches. Existing sketches reopen in the drawing editor when clicked. The wheel zooms; double-clicking blank canvas opens a searchable node menu at that point; left-drag selects by default and Space temporarily pans. Dragging an output onto blank canvas opens a menu filtered to nodes with a compatible input; choosing one creates it at the release point and connects it. Right-clicking the menu, clicking elsewhere, or pressing Esc cancels the pending connection. Right-clicking a node background opens Run/Cancel, Duplicate, masked-copy, Rename, Details, and Delete actions while forms, media controls, and downloads retain their native interactions. - Workflow nodes for prompt enhancement, image generation, MiniMax H3 video, and H3 audio. - Project assets served by private immutable URLs, including byte ranges for audio/video seeking. - Optimistic project revisions so a stale browser cannot silently overwrite a newer edit. - Dependency-aware graph scheduling from an immutable canvas snapshot. Local input/sink nodes are folded out of the execution plan, independent remote nodes share a stage, downstream nodes wait for upstream results, and cycles fail before submission. - One configurable **VRAM Trigger** utility with Skip, Ollama eject, and ComfyUI unload/cache-clear actions. Its first incoming connection selects the matching local provider once, its eject button runs a manual test, and its ComfyUI release-model wait defaults to 10 seconds. Text, image, audio, and video workflows have no automatic generation deadline; they continue until completion, a provider error, or explicit cancellation. - Persisted grouped job records, graph/node cancellation, retry, exact ComfyUI `prompt_id` tracking, and conservative restart recovery. - Ollama, OpenAI-compatible, and one logical ComfyUI provider: enter one `IP:port`, while the Host chooses REST or MCP internally for each run. - A named ComfyUI Workflow Registry: import API-format image generation, image edit, video, or audio workflows and select them from nodes instead of treating model ids as ComfyUI workflows. - Built-in **Preview** and **Save** sink nodes for text, image, audio, and video outputs. - An immutable, declarative [Custom Node protocol](./custom-node-protocol.md) with typed ports plus compact `primary` and collapsed `Advanced` fields. - A bundled [`comfyui-workflow-to-node` skill](../skills/comfyui-workflow-to-node/SKILL.md) that converts trusted ComfyUI API graphs—or editor templates with matching `/object_info`—into reusable built-in workflows or Custom Node drafts. Mask, trim, crop, resize, and sketch data can be represented on the canvas. In this version they become effective generation inputs only when a compatible preprocessing or ComfyUI workflow consumes the derived asset or metadata; Video Director does not yet ship a complete non-destructive media editor. ## Requirements - Node.js `^22.19.0` or `>=24.0.0` - pnpm `11.7.0` - A built DeepSeek Harness checkout or installed `dsh` CLI - For local generation, a separately configured Ollama and/or ComfyUI installation - For the optional Codex Plan text/image provider, a local Codex sign-in; image workflows additionally require image generation on the account - For H3 Turbo, the required H3 nodes/models plus [`ComfyUI-MiniMax-H3-Turbo`](https://github.com/Larryvrh/ComfyUI-MiniMax-H3-Turbo) ## Build and install ```sh pnpm install --frozen-lockfile pnpm run check ``` The build creates `lib/client.js` as the lazy-CJS factory expected by the native DSH client module system. React, Cordis, and DSH client services remain shared module-table imports; `@xyflow/react` is bundled into the plugin. CSS is bundled as text because the App owns its `