When using the DeepSeek Harness Web GUI, directly adding non-image files through browser interaction is relatively difficult, and limitations exist in obtaining file paths. The dsh-image-picker plugin adds a file selection entry to the left of the input box, standardizing the attachment injection flow through the system file picker.

Plugin Introduction

The plugin is maintained by liujia-io. It aims to solve the issue of being unable to obtain absolute file paths in a pure frontend environment and provide unified attachment handling capabilities. It adds a button to the left of the chat input box, allowing users to add image or text attachments via the system file picker.

Core Features

  1. Image Processing: Images are injected into the official attachment pipeline through synthesized drop events, with support for thumbnail display, quantity and size validation.
  2. Text Processing: Text files (.txt, .md, .docx) are read by the browser and POSTed to a local server for temporary storage. Only a receipt containing the path and preview is inserted into the message.
  3. File Parsing: Supports parsing .docx files by extracting body content through ZIP parsing in the browser.
  4. Safety Guardrails: Single-file size is limited to 25MB, and requests exceeding the limit return a 413 error. File names are automatically sanitized and prefixed with a timestamp.
  5. Fallback Mechanism: If the temporary storage API is unavailable, it automatically falls back to fully inline content, truncated to 30,000 characters per file.

Installation and Enablement

Use the official installation command to add the plugin:

dsh plugin --profile web add github:liujia-io/dsh-image-picker

After installation, restart the DSH Web process for changes to take effect.

Usage

  1. Click the button to the left of the input box to invoke the system file picker.
  2. After selecting a file, it is processed automatically:
    - Image: Automatically injected into the official ComposerAttachments interface and uploaded with the message.
    - Text: Persisted to the ~/.dsh/picker-attachments/ directory, with a receipt inserted into the input box, including the saved path, character count, and preview.
  3. The Agent can access locally staged text files on demand using read tools.

Notes

  • Browser security policies prevent direct access to absolute file paths, so text files are stored using server-side staging.
  • The single-file size limit is 25MB, and exceeding this limit returns a 413 error.
  • The body content of text attachments does not enter the chat context. The Agent must read it using tools.
  • The plugin depends on the official ComposerAttachments interface and the host shell environment.
  • The staging directory is fixed to ~/.dsh/picker-attachments/.

Conclusion

This plugin solves file input limitations in the DSH Web environment by leveraging local staging and reusing the official pipeline, improving the stability of attachment interactions. For more information, refer to the plugin catalog or the source repository.