Preface¶
DeepSeek Harness (dsh) is an open-source agent runtime developed by DeepSeek, designed with the principle of “everything is a plugin”: models, tools, sessions, sandboxes, and interfaces can all be replaced at the configuration layer without modifying the framework source code. The official repository is currently marked as developer preview, and the interfaces are subject to change. There is a separate third-party plugin directory deepseek-harness-plugin.com for retrieving third-party plugins; the about page of this site clearly states that it has no affiliation, endorsement, or sponsorship relationship with DeepSeek or High-Flyer, and is not an official app store.
When writing code using plain-text models like DeepSeek in the web interface, it is difficult to send screenshots and documents. Images will go through the model’s native attachment channel, but will be blocked by the host’s pre-check before sending, with a system prompt popping up in the input box: “The current model does not support images, please switch to a model that supports images”. The underlying error corresponds to attachment-error in dsh-host-apiproxy, with an example in the repository documentation being Model "deepseek-v4-flash" does not support image input.. PDFs, Office documents, compressed packages, and videos cannot be sent as attachments at all.
Vision toolkits (such as dsh-vision-toolkit) allow plain-text models to read files in the workspace, but the tool interface recognizes file paths. The common workflow then becomes: first save the file into the workspace, then manually enter the path into the message. dsh-drop-to-path maintained by loudMore simplifies the second step: the attachment bar remains in its native experience, and images and files are converted to workspace paths when sending.
What is this¶
dsh-drop-to-path is a tool and capability plugin for DeepSeek Harness, with the npm package name @dsh-external/dsh-drop-to-path. The current repository version is 0.1.0, licensed under MIT, primarily written in JavaScript. It is maintained by loudMore, and the source code is hosted at loudMore/dsh-drop-to-path. The community directory categorizes it under “Tools and Capabilities”; the dsh.client.platform field in package.json is declared as web, targeting the web interface rather than headless, non-graphical runtime environments.
The problem it solves can be summed up in one sentence: it converts dragged or pasted images, documents, compressed packages, audio and video files into workspace file paths when sending, allowing plain-text models to read them using visual or document tools, instead of going through the model’s native image attachment channel.
As of the check on August 18, 2026, GitHub shows 11 stars; the community directory page shows 7 stars at the same period. Star counts will change, please refer to the repository source code before installation.
Core Features¶
Convert to Path Only When Sending¶
When adding files, no path strings will appear in the input box immediately. Images continue to use native attachment cards (previewable and removable); PDFs, Office documents, zip files, videos, audio files, etc., are displayed as square tags in the attachment bar (with format icons, hover to see the full name, and can be removed by clicking the cross). When sending, the plugin uploads the files to the .drops/ directory in the session workspace, then combines the paths with the text you entered into a plain text message. The model side cannot see the image attachment block, so the image access pre-check will not be triggered.
Images, files, and a mix of both will be uploaded in sequence, and finally delivered as a single block of path text. If the upload fails, the message will not be silently dropped: a visible prompt will appear on the interface, and the system will revert to the native sending path.
Supported Types and Size Limits¶
The repository README and the host-side source code lib/index.js have consistent rules for extension whitelist and size limits:
| Type | Extensions | Limit | Interface |
|---|---|---|---|
| Images | png jpg jpeg webp gif |
30MB | Native attachment card, converted to path when sending |
| Documents | pdf doc docx xls xlsx ppt pptx txt md csv json |
100MB | Square tags in the attachment bar, paths attached when sending |
| Compressed | zip |
100MB | Same as above |
| Videos | mp4 mov webm mkv avi |
100MB | Same as above |
| Audio | mp3 wav flac m4a |
100MB | Same as above |
Extensions not on the whitelist will be rejected. File names will be sanitized (path separators and control characters removed, illegal Windows characters replaced) before being written to .drops/ to prevent path traversal attacks.
Relationship with Workspace and Host Routing¶
The host side registers the POST /_dsh/drop-to-path/import endpoint, which receives { name, dataBase64 }, verifies the data, and writes it to the workspace. The workspace defaults to the one with the latest updatedAt field from $DSH_HOME/storages/workspace.json (falls back to ~/.dsh if DSH_HOME is not set); the client can also carry the absolute path of the current session with the request, and non-absolute paths will not be trusted. The browser side wraps conversation.sendSession, completing the upload and path splicing before the actual submission.
Division of Labor with Similar Plugins¶
The README describes it as complementary to dsh-drag-and-drop, and the latter repository does exist:
- dsh-drag-and-drop: Inserts the original path into the input box after dragging and dropping, does not copy files, suitable for referencing existing files in the workspace; does not support pasting, images may still be sent as attachments and rejected in plain-text model scenarios.
- dsh-drop-to-path: Copies files to the workspace and converts them to paths when sending, supports dragging and pasting, and adds square attachment bar tags for non-image files.
Capabilities such as image viewing, OCR, and pixel comparison are not included in this plugin. The author recommends pairing it with dsh-vision-toolkit: this plugin is responsible for “converting files to paths”, and the vision toolkit is responsible for “converting paths to readable results”. Both are community plugins and need to be installed separately.
Installation and Activation¶
The installation command provided on the community directory page is as follows, run it in the DeepSeek Harness terminal:
dsh plugin add github:loudMore/dsh-drop-to-path
For reproducible installations, fix the commit hash according to the directory page instructions:
dsh plugin add github:loudMore/dsh-drop-to-path#commit
Replace #commit with the actual commit hash from the repository. The directory page also reminds users that the plugin runs with the permissions of the current dsh process, and may execute code during installation; you should check the source code repository and license before installing.
The repository README adds two additional points, consistent with the Web profile declaration in package.json. First, it is recommended to explicitly specify the Web profile when installing locally:
dsh plugin --profile web add /path/to/dsh-drop-to-path
Second, after installation, you need to restart the Web profile (reopen the launcher or restart dsh web) for the plugin to take effect. The plugin itself has no configuration options.
The prerequisites, according to the README, are: DeepSeek Harness (Web profile) installed, Node.js and the dsh CLI installed. The official way to launch the Web UI can be found in deepseek-ai/deepseek-harness, for example npx @deepseek-ai/dsh web.
Typical Usage¶
The operation sequence given in the repository is as follows.
1. Paste or drag images as usual, the attachment cards will display normally and can be previewed or removed.
2. Drag or paste PDFs, Office documents, zip files, videos, audio files, etc., and square tags with format icons will appear in the attachment bar, alongside the image thumbnails.
3. Write a description if needed (such as “Compare these two images” or “Extract the header of this xlsx”), then send. At this point, no image attachments will be submitted; the files will be uploaded, and the workspace paths will be automatically appended to the end of the message.
4. If dsh-vision-toolkit is installed, the Agent can use tools such as vision_glance and vision_pixel_diff to read images, and use PDF/table tools to process documents.
The scenario comparisons in the README are limited to the author’s descriptions and are not third-party reviews: image question answering changes from “screenshot → save to workspace → manually enter path” to “screenshot → Ctrl+V → Enter”; analyzing PDFs/xlsx/videos can be done by directly dragging and dropping then sending.
Files will remain in the .drops/ directory of the workspace, and you can clean them up manually when needed.
Applicable Scenarios and Notes¶
This tool is particularly suitable for users who use plain-text models in the DSH web interface and often need to hand over screenshots, PDFs, tables, or compressed packages to the Agent for processing. It does not replace vision models, nor does it parse file contents; without supporting document/vision tools, the model will only receive the path string.
Before using, you need to accept several boundaries, all of which are documented in the repository and not inferred:
- Platform: Only declared for Web. Do not expect the same interface behavior for headless or other profiles.
- Compatibility: The author has verified DSH 0.1.0-rc.6 in the repository environment. The plugin relies on several undocumented internal interfaces (service names, method signatures, storage formats, DOM structures), which may break after DSH upgrades. The official Harness also notes that developer preview versions will have breaking changes. Before upgrading, read ADAPTING.md in the repository, which contains failure symptoms and troubleshooting steps.
- Permissions and Security: The plugin runs with the permissions of the current dsh process and will write dragged files into the workspace. Check the source code and MIT license before installing; do not execute dsh plugin add from untrusted sources. The directory page recommends fixing the commit hash to avoid following unknown new commits on each installation.
- Size and Type: Uploads will be rejected if they exceed 30MB/100MB or have extensions not on the whitelist.
- Workspace Location: By default, it takes the most recently updated workspace from the registry. If the Agent reports that the file cannot be found, first check whether the returned path is the current session workspace, not the current process directory.
Summary¶
dsh-drop-to-path does one narrow thing: preserves the attachment experience in the DSH web input area, converts images and files into workspace paths when sending, allowing plain-text models to bypass the “does not support images” pre-check, and enables files that could not be sent as attachments originally such as PDFs to be handed over to subsequent tools. It is maintained by loudMore, licensed under MIT, requires the Web profile, and is recommended to be used together with dsh-vision-toolkit.
Directory page and source code:
- Community directory: https://deepseek-harness-plugin.com/en-US/plugins/dsh-drop-to-path/
- GitHub: https://github.com/loudMore/dsh-drop-to-path