DSH Hub

l541402398/dsh-file-uploads

dsh-file-uploads

UIPlay3 GitHub stars· updated 2026-08-14

Upload arbitrary local files from the DeepSeek Harness Web composer and manage them in Settings.

Install

npx @deepseek-ai/dsh plugin --profile web add "github:l541402398/dsh-file-uploads#v1.0.0"

Restart `dsh web` after install. Bundle APIs can change during the developer preview.

README badge

dsh-file-uploads DSH Hub badge
[![DSH Hub](https://dshhub.dev/badge/dsh-file-uploads.svg)](https://dshhub.dev/plugins/dsh-file-uploads)

Paste this into your README. The star count updates with every catalog sync.

From the README

Excerpt from l541402398/dsh-file-uploads, cleaned of badges and images.

dsh-file-uploads

English | 简体中文

Upload arbitrary local files from the DeepSeek Harness Web composer, attach their container paths to prompts, and manage stored uploads from Settings.

Features

  • Adds a Files button beside the existing composer controls.
  • Accepts multiple arbitrary local files, not only images.
  • Shows pending files as image-like cards above the composer.
  • Keeps the text editor clean: no visible path or generated description is inserted into the draft.
  • Serializes each hidden file reference into a model-readable absolute path only when the message is submitted.
  • Clears pending cards after submission and restores them when submission fails.
  • Stores every upload in one fixed directory, $DSH_HOME/uploads by default.
  • Lists uploaded files in Settings → Uploaded files, with download and delete actions.
  • Prevents overwrites by publishing duplicates as name (1).ext, name (2).ext, and so on.
  • Enforces per-file and total-directory quotas.

Compatibility

  • DeepSeek Harness 0.1.0-rc.6
  • Web profile
  • Node.js 22 or newer

Harness currently transports native attachments as raster images only. This plugin intentionally uses the arbitrary-file path supported by the agent environment: it stores the file inside the Harness host/container and adds that path to the submitted text through the built-in input-reference serializer.

Install

Install the tagged GitHub release into the Web profile:

dsh plugin --profile web add "github:l541402398/dsh-file-uploads#v1.0.0"

Restart the running Web profile after installation, then refresh the browser page.

To install the latest development branch instead:

dsh plugin --profile web add "github:l541402398/dsh-file-uploads#main"

To remove it:

dsh plugin --profile web remove dsh-file-uploads

Use

  1. Open a conversation in the Harness Web GUI.

  2. Select Files in the composer toolbar.

  3. Choose one or more local files.

  4. Review or remove the pending cards above the composer.

  5. Add any normal prompt text you want, or leave the editor empty.

  6. Submit the message. The model receives a line such as:

    上传文件:`/path/to/.dsh/uploads/report.pdf`
    

The generated line is never shown in the editor before submission. The stored path refers to the filesystem visible to the Harness host; in a Docker deployment, this is the path inside the container.

Settings

The plugin adds an Uploaded files section to Settings. It displays:

  • the fixed storage directory;
  • per-file and total-directory limits;
  • current storage usage;
  • file name, size, modification time, and absolute path;
  • download and delete actions.

Files persist until they are deleted manually.

Configuration

The plugin works without configuration. These environment variables override its defaults:

VariableDefaultPurpose
DSH_UPLOAD_DIR$DSH_HOME/uploadsAbsolute upload directory.
DSH_UPLOAD_MAX_BYTES104857600Maximum bytes per file (100 MiB).
DSH_UPLOAD_TOTAL_MAX_BYTES1073741824Maximum total bytes in the directory (1 GiB).

Example Docker Compose fragment:

services:
  dsh:
    environment:
      DSH_UPLOAD_DIR: /data/dsh/uploads
      DSH_UPLOAD_MAX_BYTES: 104857600
      DSH_UPLOAD_TOTAL_MAX_BYTES: 1073741824
    volumes:
      - ./dsh-data:/data/dsh

Security model

Related plugins