Introduction¶
DSH (DeepSeek Harness) adopts a plugin-based architecture. The Web client can mount plugins to extend its capabilities. dsh-reel is a client plugin dedicated to dsh Web. It does not require starting an independent streaming service or occupying an additional port; instead, it runs directly within the dsh Web process. This plugin aims to solve the challenges of aggregating, high-resolution previewing, and immersively playing local media resources (videos and images) in the browser.
Core Features¶
The plugin primarily provides the following capabilities:
-
Lightweight and Secure
- Zero additional processes: It runs as a plugin, does not start new daemon processes, and shares the port with dsh Web.
- Strict security sandbox: It imposes read-only restrictions on local media directories. All file enumeration and read operations are confined to whitelisted root paths to prevent path traversal risks.
-
Media Aggregation and Browsing
- Multi-directory aggregation: Supports mounting multiple local disk directories and generating a unified “library” view at the top.
- Multiple views: Provides three browsing modes—“Current,” “All” (recursive flattening), and “Grouped” (collapsed by directory)—as well as grid and list view switching.
-
High-Performance Streaming Playback
- HTTP Range streaming for instant start: Videos support HTTP Range requests, allowing playback to start immediately when dragging the progress bar.
- Server-side on-the-fly remuxing: Leverages FFmpeg to remux legacy formats (such as AVI and WMV) in real time, avoiding the limitations of native browser decoding.
- Hover preview and precise frame capture: Hovering over the progress bar displays thumbnails and timestamps, and supports extracting high-quality cover posters.
-
Interaction and Experience
- Immersive fullscreen dynamic wallpaper: Supports setting any image or video as the site-wide background. Video wallpapers loop muted and automatically pause when the page loses focus.
- Touch-gesture continuous playback: Optimized for mobile devices, supports swiping up or down to switch to the previous or next video, with an interaction similar to short-video apps.
- Native integration: Settings are integrated directly into dsh’s native settings panel. Adding or removing directories, or changing the wallpaper, takes effect immediately.
Installation and Enablement¶
Before installation, ensure your environment meets the following conditions:
- dsh version:
>= v0.2.0-rc.1 - Node.js version:
>= 20
Run the following command to install:
dsh plugin --profile web add dsh-reel
After installation, restart dsh web. Then visit the following address in your browser to use it:
http://127.0.0.1:3080/reel
If you need to install the development version or debug from source, you can use a GitHub reference:
dsh plugin --profile web add "github:lsjspl/dsh-reel"
To uninstall, run:
dsh plugin --profile web remove dsh-reel
Configuration¶
The plugin configuration is stored in the cordis.patch.yml file of the profile, specifically under the reel configuration section.
Basic Configuration Items¶
Add the following configuration to cordis.patch.yml:
- id: reel
config:
roots:
- /path/to/media1
- /path/to/media2
# cacheDir: 'D:/dsh-cache' # Thumbnail cache directory. Leave empty to use the system temporary directory
# wallpaper: 'D:/wallpaper.jpg' # Global wallpaper path
Directory Fallback Mechanism¶
If roots is empty, the system automatically searches for media directories in the following order:
1. The environment variable REEL_ROOTS (use the system path separator for multiple paths).
2. $DSH_HOME/media.
FFmpeg Dependency¶
The plugin ships with FFmpeg and FFprobe as built-in fallback dependencies by default. No external dependencies need to be installed manually to use cover capture and video remuxing.
Use Cases¶
- Quickly browsing a large number of local image and video files in the dsh Web environment.
- Using a lightweight media center that does not occupy additional services.
- Performing continuous video playback via gestures on mobile devices or touchscreen devices.
The plugin is maintained by community developer lsjspl and is released under the MIT license. For more details, visit the plugin directory or the GitHub repository.