In use cases of DeepSeek Harness, the Web UI typically has limited support for file interaction. When an agent needs to read the contents of a specific file, directly referencing the path is often not intuitive, or users may need to manually upload and download it. The dsh-any-attachment plugin extends the Web UI interaction and solves the problem of file attachment and referencing.

Plugin Overview

This is a DeepSeek Harness plugin package maintained by Zenjibad. It allows Web UI users to attach files of any type and insert them into the message draft as path-less @-mentions. After receiving the message, the agent can directly read the file using its own tools, without requiring the user to manually download or extract it. Files are stored in a private directory and do not pollute the workspace environment.

Core Features

  • Path-less @-mentions: Supports files of any type as path-less @-mentions.
  • File browsing: Enter @ in the editor and browse workspace files via @-list.
  • Upload methods: Supports uploading by dragging and dropping local files or clicking the + button.
  • Image processing: Retains the built-in image pipeline for processing images, so vision models can read them directly.
  • Storage location: Files are stored in a private directory ($DSH_HOME/attachments-any/), not in the workspace.
  • Direct reading: The agent reads files directly using tools, without a special sending flow.

Installation and Enablement

Install the plugin using the official command:

dsh plugin --profile web add https://github.com/Zenjibad/dsh-any-attachment

After installation, restart the dsh web service and refresh the page to apply it.

Typical Usage

  1. Browse workspace files: Enter @ in the message input box. The interface lists files in the current session workspace (recursive depth limited to 4 levels). You can filter by entering more characters. After selecting a file, a path-less @name tag is inserted into the draft.
  2. Upload local files: Drag a local file into the input box, or click the + button in the input box. The file is stored in the private directory, and an @<stored-name> tag appears in the message draft.
  3. Send and read: After sending the message, the agent parses the exact file path from the tag (including the absolute path) and uses tools to directly read the file contents.

Applicable Scenarios and Notes

  • Applicable scenarios: Users who need the agent to directly access local files or workspace files and want to avoid path exposure or manual downloading.
  • Limitations:
    • Maximum file size is 25 MB per file.
    • @-list displays up to 500 entries, sorted by relative paths separated by /.
    • Hidden files (starting with .) and node_modules are excluded.
    • File names are limited to the basename only; separators or drive letters are not allowed.
    • No download UI and no special sending flow.

Summary

By providing file attachment capabilities at the Web UI level, this plugin enables the agent to directly obtain file context. It does not rely on complex external upload flows, nor does it write files to the workspace, keeping the environment clean.