Introduction

In DSH web sessions, when submitting local images, documents, or directories to the model, the common practice is to copy the path first and manually paste it into the input box. dsh-file-upload simplifies this operation: it adds an upload button to the DSH web client and supports dragging files or folders into the window.

Through this method, files are archived into the DSH attachment library; eligible images can also go through the official attachment rail, while other files and image paths are inserted as draft text. It is part of the DSH plugin ecosystem, and its README clearly states that this is an unofficial project independently developed and maintained by a community member, not a DeepSeek official product.

What This Is

dsh-file-upload is a DSH web client plugin, primarily designed to provide an “upload button + drag-and-drop file” entry point in DSH sessions and convert files into model-readable local paths or official attachments.

Verified repository information is as follows:

  • Name: dsh-file-upload
  • License: MIT
  • Repository owner: a903067276-rgb
  • GitHub: https://github.com/a903067276-rgb/dsh-file-upload

Core Features

Below are the verified feature highlights.

  • Adds an upload button to DSH web sessions with support for file drag-and-drop.
  • Clicking the upload icon opens the system file selector, supports multiple selections, and routes files to the official attachment rail and/or path text according to rules.
  • When files are dragged in, both images and any file type are handled without showing an “unsupported” prompt.
  • When a folder is dragged in, the plugin recursively reads it and reconstructs the original directory structure under the attachment library.
  • Supports PNG/JPEG/WebP/GIF images: can be archived into date-partitioned attachment directories and added to the official draft attachment rail.
  • Images sent reuse the DeepSeek Files API’s file_id; they are automatically re-uploaded after 7 days.
  • Other files are archived under files/, and prefixed path text is inserted into the draft.
  • When the current model does not support images, images fall back to archived path text instead of being sent as image blocks.
  • Provides a settings card, including options for attachment directory, path prefix, official attachment routing, image archiving, public upload, clipboard listening, etc.

Installation and Enabling

Before installation, ensure the environment meets: DSH web >= 0.1.0-rc.7, and pnpm is available in PATH. The dsh plugin command requires pnpm for installation.

Use the one-line installation command:

dsh plugin --profile web add "github:a903067276-rgb/dsh-file-upload#main"

This command installs the plugin to the web profile. After installation, restart DSH web:

dsh web

Following these steps, the plugin will take effect after DSH web restarts.

If the DSH version is older, the verified version choices are:

  • 0.1.1-rc.1 and newer: Use main (v0.1.5+).
  • 0.1.0-rc.7 to 0.1.0-rc.8: You can use main (v0.1.5+), or use v0.1.4 as a conservative fallback.
  • 0.1.0-rc.6 and earlier: Use v0.1.2.

If using manual mounting, you need to keep a single entry in ~/.dsh/cordis.patch.yml to avoid crashes from duplicate route registration; after that, restart dsh web.

Typical Usage

  1. Click the upload icon and select multiple files; or drag files or folders into any position in the window.

  2. If the current model supports images, the plugin archives supported images to the attachment directory and displays them in the official attachment rail; after sending, the model can see the images.

  3. If the current model does not support images, or if the official attachment path is disabled, the plugin archives images to images/ and inserts a prefixed absolute path line in the draft.

  4. For other files, the plugin archives them to files/ and inserts path text in the draft; after sending, the model can read the files via the path.

  5. For folders, after dragging, the plugin reconstructs them under the attachment library with the original structure; only a folder path line is added to the draft.

Settings and Limitations

The settings card provides the following controls:

  • Attachment directory: Used for image archiving.
  • Path prefix: Prepended to path text inserted into the draft.
  • Official attachment routing: When enabled, images use the official attachment rail; when disabled, images use path text logic.
  • Image archiving: Controls whether images are archived to the attachment directory.
  • Public upload: Disabled by default; when disabled, same-origin checks still allow localhost; when enabled, any origin can upload.
  • Clipboard listening: Disabled by default; options are off, images only, or all files.

Regarding file limits, the DeepSeek Files API has a hard limit of 64 MB per file; DSH local attachment storage defaults to 20 MB. Images over 20 MB but not exceeding 64 MB are archived by default and referenced via path text; to use the official attachment path, adjust maxImageBytes in ~/.dsh/profiles/web/cordis.patch.yml and restart dsh web.

Use Cases and Notes

This plugin is suitable for users who want to quickly bring local images, documents, or directories into DSH web sessions. It consolidates file operations into an upload button, drag-and-drop, path text, and official attachment rail, reducing the steps for manually pasting paths.

Note: DSH plugins execute within the current dsh runtime environment and may read/write the DSH attachment library, call the DeepSeek Files API, or affect draft input. Before installation, you should check the source code, dependencies, and license. This plugin’s license is MIT and is clearly an unofficial community project.

Platform support: macOS has been fully tested; Linux and Windows are expected to work but have not been tested yet.

Links

  • GitHub repository: https://github.com/a903067276-rgb/dsh-file-upload
  • Directory page: Please search for dsh-file-upload in the DSH plugin directory; this article’s verified materials do not provide a directly referenceable directory page URL.