DeepSeek Harness (DSH) Web provides a plugin-based interface, but native file handling typically requires saving screenshots or manually copying file paths. The dsh-file-upload plugin simplifies this process by providing an intuitive upload button and drag-and-drop support.

This plugin is maintained by 666emmm and aims to add file upload and clipboard path management capabilities to DSH Web.

Core Features

The plugin supports the following operations:

  • Upload method: Click the interface icon or directly drag files, images, or folders into the DSH window. Multi-file selection is supported.
  • Smart routing: Based on whether the current model supports images, it automatically decides whether to send the file to the official attachment rail or insert it as path text.
  • Image handling: Supported image formats (PNG/JPEG/WebP/GIF) are archived to the attachment directory and added to the official attachment rail. The system automatically generates a file_id and supports reusing the same image.
  • File management: In the “File Upload” section of the settings card, you can browse the attachment library (with tabs for images/files/folders), view the original name, size, and modification time, and use one-click copy for @path references or delete files.
  • Clipboard path reading (zero-copy): After copying a file or folder in the operating system’s file manager, click the clipboard button in the interface. The plugin directly reads the actual path from the system clipboard and inserts an @path reference. This avoids actual transfer of file content and disk usage.
  • Folder support: Support dragging folders. The plugin recursively reads the contents and reconstructs the folder structure in the attachment library.

Installation and Enablement

Use the official bundle installation command to complete installation. This command requires dsh web to be running.

dsh plugin --profile web add "github:666emmm/dsh-file-upload#main"

After installation, restart dsh web to load the plugin.

Typical Usage

  1. Upload files: Click the upload icon next to the input box and select multiple files or folders in the system file selector.
  2. Drag-and-drop: Directly drag files or folders to any location in the DSH window.
  3. Path reference: Copy the file path in the file manager, click the clipboard button, and insert an @path reference at the cursor position.

Notes and Limitations

  • File size limits:
    • Single-file upload is limited to 64 MB, which is a hard limit of the DeepSeek Files API.
    • Local attachment storage is limited to 20 MB by default. Images larger than 20 MB are sent as path text, and the model can still read them via read_image.
  • Storage location: Uploaded files are archived by default to ~/Documents/DSH/Attachments/images/<YYYY-MM-DD>/ (images) or .../files/<YYYY-MM-DD>/ (other files). This path can be configured in the settings.
  • Loader ID: The plugin’s loader registration ID is file-upup, not file-upload. The DSH built-in file-upload occupies the file-upload ID, so file-upup must be used to avoid a duplicate ID conflict at startup.
  • Public upload: By default, the plugin only allows same-origin access (CSRF-safe). If access via port forwarding or the public network is required, enable the “Allow public upload” option in the settings.

By providing zero-copy path reading and an intuitive upload interface, this plugin lowers the barrier to file interaction in DSH Web. For more details, see the plugin directory or source repository.