The design philosophy of DeepSeek Harness (DSH) is “everything is a plugin.” In versions prior to 0.1.7, the built-in read_image tool only injected images into the model context, refused to process them in plain-text mode, and displayed only a single line of text in older Web clients. The dsh-viewer plugin inverts this logic: its responsibility is to present files on screen, not merely place them into the context. Any media that a browser can play falls within its scope.
Plugin Overview¶
This plugin is maintained by Crosery and is MIT licensed. Through the display_file tool, it directly renders images, videos, audio, PDFs, Office documents, and local web pages inline in the DeepSeek Harness Web UI and desktop app, providing real players rather than just filenames and byte sizes.
Core Features¶
- Multi-format rendering: Supports 36 file extensions across 6 rendering types: images, video, audio, PDF, documents, and web pages.
- Media capabilities: Video and audio support range requests (seekable) and include real progress bars.
- Web sandbox: Local web pages are rendered through a sandboxed iframe.
- Document cache: Converted PDFs are stored in a local cache to avoid repeated conversion.
Installation and Activation¶
Web UI Installation¶
dsh plugin --profile web add github:crosery/dsh-viewer
Configuration and Restart¶
Add the package name to dsh.profile.bundles in the profile’s package.json, then restart the configuration file. The plugin ships with prebuilt files in the release, so no additional build step is required.
Desktop App Installation¶
In the desktop app, open Plugins -> Add plugin, and paste the release tarball URL (for example, https://github.com/Crosery/dsh-viewer/releases/latest/download/dsh-viewer.tgz). Because the desktop profile is managed by the Electron app, direct installation via CLI is not supported.
Dependency Requirements¶
Rendering RTF and OpenDocument documents requires LibreOffice to be installed. Once installed, the plugin automatically invokes LibreOffice for conversion.
Security and Notes¶
Security Mechanisms¶
- Paths are verified through HMAC signatures. Paths passed directly by browsers are not accepted, and access must be made via signed URLs.
- The signing key is located at
$DSH_HOME/.dsh-viewer-asset-keywith permissions0600. text/htmlandimage/svg+xmlinclude Content-Security-Policy to prevent cross-site scripting attacks.
Caching Strategy¶
- Cache path:
$DSH_HOME/.dsh-viewer-cache/. - Expiration rule: Entries expire after 30 days of inactivity.
- Size limit: Up to 256 documents or 512MB, using a least recently used (LRU) eviction policy.
Version Compatibility¶
- Harness 0.1.7 requires version 0.2.0 or higher.
- Harness 0.1.0-rc.2 through 0.1.7 requires version 0.2.1 or higher.
Summary¶
dsh-viewer addresses the lack of file presentation in the DSH plugin ecosystem. Through a unified display_file tool, it separates file handling from the model context and moves it to the user interface layer. For more details, refer to the plugin directory or the GitHub repository.