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:

  1. 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.
  2. 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.
  3. 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.
  4. 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.