dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
DeepSeek Harness plugin: terminal-style world.execute(me); MV (canvas port of world.execute-me-ascii, with permission) + embedded MV terminal. Unofficial fan work; no media bundled.
English · 简体中文
· · · · Releases · 创意工坊 / workshop
MV 放映室 is a DeepSeek Harness Desktop plugin (@ljwei-stak/dsh-mv-cli, profile entry id dsh-mv, current version 0.12.2) that plays ASCII / terminal-styled, pixel 2D, WebGL2 3D and local rendered music videos on a `` in the workbench. Script scenes use your own audio as the clock; local videos use their own media clock.
Supports DSH 0.2.1-rc.3 / rc.2 and 0.2.0-rc.1 / rc.2. If an older plugin version is disabled because of a protocol mismatch, update the plugin and restart Harness.
One-line value: Adds an MV 放映室 sidebar for creating and playing music videos synced to your own audio or video, with lyrics and ASCII, Canvas2D, and WebGL2 scenes.
Primary category (one of the directory's 11 categories): Entertainment (music and media).
Install command (npm, pinned):
dsh plugin --profile web add @ljwei-stak/dsh-mv-cli@0.12.2The same package can be installed from DeepSeek Harness Desktop → Plugins → Add plugin by entering @ljwei-stak/dsh-mv-cli@0.12.2.
Compatibility: DSH protocol 0.2.1-rc.3 / 0.2.1-rc.2 and 0.2.0-rc.1 / 0.2.0-rc.2; Host Node.js >=20. WebGL scenes need Chromium Worker OffscreenCanvas and WebGL2; unsupported clients fall back to the generic renderer. Local video decoding depends on Chromium codecs.
Configuration files: The root package.json identifies the npm package and declares dsh.bundle.patch; cordis.patch.yml registers the dsh-mv plugin row, whose module exports apply(ctx) from .dsh-plugin/index.mjs. Each MV pack uses mv.json, with mv.schema.json for validation and editor completion. Runtime settings are managed in the DSH plugin configuration page (canvasFontSize, ffmpegPath, lrclib, enginePython, uvPath, hfEndpoint, httpProxy, workshopMirror, workshopDir, agentTools); the panel also stores local preferences in %LOCALAPPDATA%\dsh-mv\settings.json.
Permissions and external services: The Host reads user-selected pack/media paths and writes packs and settings under user-selected folders or %LOCALAPPDATA%\dsh-mv, subject to normal OS file permissions. ffmpeg runs only after confirmation. Optional lyric-engine setup downloads Python packages and speech models. Optional LRCLIB lookup sends only title, artist, album, and duration (no audio or filename) and can be disabled. Workshop browsing/install downloads from GitHub or the configured HTTPS mirror. AI pack creation opens a Harness Agent session for the local workspace; file access and model-provider handling follow the active Harness configuration and approval flow.
License: Plugin/npm code is MIT. Repository presets, workshop packs, artwork, lyrics, fonts, and other third-party materials may have separate terms; see LICENSE, NOTICE.md, and License and credits.
Screenshots: See Screenshots, including the library, workshop, and scene packs. These are standalone client UI previews from tools/ui-preview with a mock Host and placeholder demo packs/lyrics; they show UI states, not end-to-end verification against a live DSH Host.
0.12.0 Manim / local video support: canvas.renderer: "video" and video.file display the original MP4/M4V/MOV/WebM/MKV frames, with embedded sound or a separate local soundtrack, independent audio.offset, seek/pause/replay, volume/mute, fullscreen, PNG snapshots and optional lyric overlay. Run npx --yes --package @ljwei-stak/dsh-mv-cli@0.12.0 dsh-mv-import-video "D:/MV/manim-for-world-execute-me" --out "D:/MV-packs/manim", then import the generated folder. Render the upstream Manim project first: its original animation and baked captions remain intact. See the Manim import guide for the 5.16-second title card and soundtrack/lyric timing. Plugin and workshop releases contain no movies or song recordings.
0.11.0 workshop discovery: combined type/licence/tag/lyrics/compatibility/installation-update filters, clear filters, stable update/title sorting, native keyboard actions and narrow-panel layouts. No workshop account or Harness login integration. Shared statistics and anonymous voting are not deployed: default UI hides unavailable community metrics/rankings/trophy filters and all vote actions. Optional read-only data contracts remain available for a future trusted source; no fabricated popularity. See the released scope and integration note.
0.9.8 workshop downloads: fixes the HTTP CONNECT proxy path, adds bounded retries for transient download failures and supports a trusted HTTPS fallback mirror. TLS verification, commit-pinned files, size/SHA-256 checks and scene isolation remain enforced. See Workshop network and mirrors.
0.10.0: default direct-HTTPS fallback to the official Huawei static mirror, offline script fonts, silent negative-time introductions and larger bounded bitmap packs. Nyankomint's adaptation preserves 87 shots, 8 original silhouettes, 129 captions, 34 offline OFL faces and a five-second warning; only music is user-provided. This work is Canvas2D with WebGL2 post-processing, not geometric 3D. Rapid flashes remain: read its warning; QA is not PSE certification.
Script bitmap options: canvas.fonts is a local descriptor list {family,file,weight:"400",style:"normal",unicodeRange?,licenseFile} (64 faces, 2 MiB each, 12 MiB total, 30-second initialization). FontFace APIs/buffers remain private to the supervisor. canvas.preroll is 0–30 seconds at negative song time; audio, shots and captions still use zero. Optional WebGL-only canvas.context accepts boolean antialias, depth, premultipliedAlpha, preserveDrawingBuffer and enum powerPreference; omitted options preserve existing defaults. Bitmap workshop limits: 160 files/32 MiB, declared non-cover images 2 MiB; other single-file caps are unchanged. Fonts need separate OFL provenance, full licences and attribution; Windows fonts do not ship. Attributed author prompts/methods are included in the downloadable template's TEACHING_REFERENCES.md, as reference material, not instructions executed by scenes.
0.9.7 heavy 3D startup: optional warmup(info, gl) runs once, after prepare(), on the final output size and before playback, so one-off GPU work (shader compilation, render-target allocation) is paid on the panel's own 20-second deadline instead of stalling the first visible frame. The stall watchdog is now graded: the first 10 seconds of playback get an 8-second stall window and are not charged to the slow-frame quota, then the unchanged 1500 ms limit and 45-frame quota apply, so a scene that stalls mid-song is still stopped. setup() is 5 seconds and prepare() 300 seconds in total (10 s per step, 512 steps). Existing scene APIs remain compatible; the graded deadlines also apply to scenes without warmup(). A frame keeps the deadline assigned when requested, including when it crosses the initial 10-second boundary.
0.9.6 heavy 3D preparation: optional function* prepare(info, gl) prewarms resources/shaders before playback, with progress, cancellation, a 10-second step deadline, 120-second total deadline and 512-step limit. Music waits for preparation. Frame limits and blocked network/font/storage APIs are unchanged. FrostNova's realtime 3D workshop adaptation uses this lifecycle; its AGPL source, original word/Chinese captions and OFL resources are published separately.
0.9.4 complete packs: only music is user-provided. Licensed lyrics, translations, cue/word timing, spectrum data and declared visual resources download together and load automatically. Update Three / Wallpaper to 1.1.0, Polytech Tree to 1.2.0. Song-text terms are separate from code MIT; the Mili fan packs are non-commercial under Mili's official guidelines. The npm plugin itself still includes no song or lyric data. Older timing-only packs remain supported.
0.9.5 dsh PV resource support: complete dsh PV pack 1.1.0 adds 98 captions, remade geometry, 1,658 raster samples and 14 atlas pages. Space Mono Bold / Anton Regular travel with their own OFL notices. The new dancer is an AI-assisted remake from the user-provided character reference, not a recovery of unpublished original-film or MMD frames. Consolas, Microsoft YaHei and Segoe UI Symbol use locally installed system fonts only; Windows font files and per-glyph bitmap fonts are not bundled. New assets require 0.9.5; legacy packs stay compatible.
Unofficial fan work. The plugin ships no audio, video, lyric text or fonts; you bring your own files and they never leave your computer. The song and lyrics belong to Mili. Since 0.9.0 the plugin itself contains no MV at all and is MIT licensed: the two world.execute(me) MVs are one-click installs from 创意工坊, each with its own licence and a link to its original — the ASCII scenes from yym8224961/world.execute-me-ascii (Bilibili: 野生大K, used with the author's permission) and the dsh PV from MisakaZentai/world-execute-me-dsh-pv (MIT data + CC BY-NC-SA 4.0 whale-girl art). See License and credits.
spectrum.json, keyboard control, fullscreen, per-file audio sync offsets.mv.json): play any song with the generic spectrum + lyrics renderer or your own sandboxed scene script; start from a template with prompts and examples.· · Skins A / B / C, light and dark · Library collapsed to the current song (0.8.3) · 0.9.0 empty library: 创意工坊 + one-click installs · The two packs in 创意工坊 with their 原作 links · world.execute(me); dsh PV workshop pack (chat scene) · Lyric calibration editor under the player · 创意工坊 browsing in three skins · · 0.9.1 pixel scene packs: Wallpaper MV and Polytech Tree · 0.9.1 install location: change, move or keep
Screenshots are captured from the standalone client UI preview in tools/ui-preview, which uses a mock Host plus placeholder demo packs and lyrics. They demonstrate rendered UI states and are not end-to-end verification against a live DSH Host.
Requires DeepSeek Harness Desktop with plugin support and Node ≥ 20 on the Host (bundled with Harness). No native dependencies.
From npm (recommended): run dsh plugin --profile web add @ljwei-stak/dsh-mv-cli@0.12.1 for a web profile, or in DeepSeek Harness Desktop → Plugins → Add plugin, enter @ljwei-stak/dsh-mv-cli@0.12.1, then install and enable it.
From a GitHub Release archive: download ljwei-stak-dsh-mv-cli-.tgz and its .sha256 from Releases. Check it in PowerShell with Get-FileHash -Algorithm SHA256 -LiteralPath and compare with the .sha256 file, then enter the archive's absolute path in Plugins → Add plugin.
After installing either way:
0.9.0 removes the built-in presets. If one was selected, the panel says it has moved to 创意工坊 and offers 从创意工坊安装; after installing, the audio, lyrics and spectrum you had chosen for it are reused automatically. Your other packs and settings are unchanged. (0.8.x clients cannot install the dsh PV workshop pack — it exceeds their 4 MB pack limit — but they still have the built-in preset.)
The panel reads top to bottom like a music player:
外观 picks one of three skins: Harness 原生 (default, follows the Harness theme; Fluent cards), 现代音乐应用 (left sidebar navigation, cover grid, blurred-cover hero, page-wide bottom player bar; dark by default) or 终端 / 黑客 (tmux-style tab bar and status line, monospace + CRT scanlines; dark by default, light = paper terminal). Switching never interrupts playback. Each skin remembers its own 跟随 / 浅色 / 深色 setting in local storage. Only the look changes; every feature works the same in all three.
An MV pack is a folder with an mv.json manifest. It names your audio, lyrics and optional spectrum files (paths relative to the folder), and says how to draw the song:
canvas.renderer: "dsh-pv"), which replays the dsh PV from data files named in canvas.assets (used by the dsh PV workshop pack; only meaningful for that song);canvas.renderer: "script", canvas.script: "scenes.js"): your own render(t, cols, rows, ctx) in plain JavaScript, run sandboxed in a Web Worker with a time limit per frame (falls back to generic on errors). The template README documents the API;"output": "pixels" or "output": "webgl" (optionally "size": [1920, 1080], 160×90 – 1920×1080, default 1280×720) to canvas and define paint(g|gl, t, w, h, ctx) instead of render:pixels: g is a 2D context of an OffscreenCanvas in the same sandbox (no WebGL, fonts, network or DOM), 100 ms per frame. Needs plugin 0.9.1+.webgl: setup(info, gl) and paint(gl, t, w, h, ctx) receive the sandbox-owned WebGL2 context. Bundled Three.js uses new THREE.WebGLRenderer({ canvas: info.canvas, context: gl }); info.canvas is a minimal canvas facade, not a DOM element. Network, storage, DOM, timers, nested workers and WASM remain blocked. Use absolute t for seeking, not an independent animation loop. Scene cap: 2 MiB (text/pixels: 256 KiB); bitmap frame budget: 100 ms. Needs plugin 0.9.2+ and Chromium with Worker OffscreenCanvas/WebGL2; otherwise playback falls back to generic with a reason.Files named in canvas.assets arrive in setup(info) as info.assets (JSON parsed, shards merged; PNG / WebP as ImageBitmap, usable by pixels or WebGL textures). Pixel scene packs need plugin 0.9.1; webgl packs need 0.9.2 (recorded as requires in the workshop index). Node/CI checks use a recording context, not a real GPU; validate shaders and images separately in a browser.
In the panel's 曲库 (library):
dsh-mv-pack-template there and never overwrites existing files. The folder contains mv.json, mv.schema.json (completion and validation in VS Code), README.md / README.zh.md, a placeholder lyrics.example.lrc, and examples/ (scenes.example.js, seven scene modules and a full example pack). 下载模板 zip in the import dialog gives the same files as a zip.mv.json.mv.json. Importing only reads the manifest.Minimal mv.json:
{
"$schema": "./mv.schema.json",
"format": "dsh-mv-pack",
"version": 1,
"title": "My Song",
"artist": "Someone",
"audio": { "file": "song.mp3", "offset": 0 },
"lyrics": { "file": "lyrics.lrc" },
"canvas": { "renderer": "generic" }
}Fields:
format, version, title are required. Optional fields: artist, album, credits[], notice, duration, audio {file, offset}, lyrics {file, offset} (LRC/SRT/VTT/lyrics.json), spectrum {file}, canvas {renderer: generic | script | dsh-pv, script, fontSize, bpm, beatOffset, assets}. canvas.assets maps names to relative .json / .webp / .png files (or lists of JSON shards merged in order) that a renderer reads through the Host. A legacy terminal section is ignored with a warning; renderer: "world-execute-me" (0.8.x) falls back to generic with a hint to install the workshop pack.x-… for your own data....曲库 → 用 AI 制作新 MV turns any song you have into an MV pack, with a Harness agent writing the lyric timing, mv.json and an ASCII scene script.
%LOCALAPPDATA%\dsh-mv\packs; a new sub-folder named after the song is created there and nothing is overwritten.spectrum.json (48 bands, 20 fps), and the Host creates the folder: a copy of your audio as audio., spectrum.json, your lyrics (lyrics.lrc / lyrics.txt), a working mv.json (generic renderer), scenes.js (an example scene), mv.schema.json, README and AGENT.md (the task description and the scene API for the agent). The pack immediately appears in the library and already plays with the generic renderer. Your original file is never modified and nothing is uploaded.MV: and queues the task (you can edit the prompt first). The agent reads AGENT.md, aligns the lyrics, writes scenes.js and the final mv.json, and checks its work with the plugin's agent tools `mv_pack_validate` (schema, files, lyric timing, scene script run in a sandbox) and `mv_pack_preview_frame` (renders one frame as text). Harness may ask you to approve file writes; the session uses your model quota.Safety: the plugin never runs external programs for this flow, scene scripts run sandboxed (Web Worker in the panel; node:vm with time limits and no require/process for the ag