The chat editor in DeepSeek Harness (DSH) does not natively support attachments. Without using a plugin, a common workaround is to include file paths in messages and let the model read them. This approach has three problems: it is prone to failing, it pollutes your original text, and the model may not actually be able to read the file. The dsh-upload-plugin plugin directly adds an attachment capability to the editor, allowing the model to see images directly or read file contents while keeping your text unchanged.

This is a DeepSeek Harness plugin maintained by developer danhcng3822f under the MIT license. It addresses the lack of attachment interaction in the native DSH editor and passes content to the model in two ways: images as native draft images, and files via context injection blocks.

Core Features

Image and File Handling

The plugin provides two main attachment methods:
* Add images: You can use the /photos command or the [📷] button in the toolbar. Images are passed to the model as native draft images, so the model can directly see the image contents without generating extra instructions in the text box.
* Add files: You can use the /files command or the [📄] button in the toolbar. Files are uploaded to the workspace, and a reference chip is generated in your draft. The model reads the file contents through a context injection block.

Conversation History and Toolbar

  • Browse history: Use /uploads to view the list of files uploaded in the current conversation, and click a file to reference it again.
  • Quick toolbar: The [📷] and [📄] buttons appear directly on the editor toolbar, to the left of the send button, for quick access.

Model Configuration Support

  • Vision settings: On the Vision page in Settings, you can enable or disable image input for each model. This modifies the input field in the model configuration.
  • Reasoning effort levels: The plugin supports selecting the reasoning intensity of a model and allows extending the list of reasoning levels via custom options.

Installation and Activation

Installation

This plugin must run in a DeepSeek Harness environment with the web profile.

dsh plugin --profile web add github:danhcng3822f/dsh-upload-plugin

After installation, restart DSH or reload http://127.0.0.1:3080 to apply the changes.

Usage

1. Attach an Image

Click [📷] in the toolbar or type /photos, then select a local image file (supported: .png, .jpg, .jpeg, .webp, .gif). The image is added directly to the draft area, and when generating a reply, the model treats the image as part of the content.

2. Attach a File

Click [📄] in the toolbar or type /files, then select a document file (supported: .txt, .pdf, .json, .csv, etc.). The file is passed to the model through a context injection block, and the model reads the file contents according to the instructions.

3. View History

Type /uploads to list the files uploaded in the current conversation. Click a file name to insert it back into the current chat.

4. Configure Vision

Go to Settings -> Vision. For models that need to read images, select the Vision option. This updates the model configuration and allows the model to handle image input.

Notes

  • Content injection mechanism: Files are transmitted through context injection blocks. Your original text remains unchanged and is not pasted in. Images are native DSH draft images.
  • Single-shot sending: Attachments are injected only once per message send; there is no pending queue. After sending, the next message will not carry the previous instructions unless you attach them again.
  • Environment requirements: The plugin depends on the DSH web profile and requires Node.js and pnpm (for installation from source).

Summary

By combining native image processing and context injection, this plugin fills the gap in DSH for file attachments. Installation and configuration follow the standard DSH plugin workflow, making it suitable for scenarios that frequently require interacting with documents or images in a conversation. For more details, see the GitHub repository or the community directory.