Introduction¶
The native drag-and-drop capabilities of DeepSeek Harness (DSH) Desktop are limited: dragged images are sent through the native vision channel, and dragged folders are adopted into the workspace. Dragging arbitrary single files (PDF, ZIP, code, etc.) has no official channel. In addition, the Web side is restricted by browser security from accessing local absolute paths, so the Agent cannot “know” the exact location referenced by a file.
The dsh-drop-in plugin captures drag-and-drop events, uploads local files to the session directory, downloads web resources on the host, and finally injects Markdown-formatted absolute path references into the input box. The Agent can directly read these references through the fs tool, enabling file-level access to arbitrary content.
Core Features¶
- Local file upload: Dragging a local file (PDF, ZIP, code, etc.) streams it to
<workspace>/.dropped/<sessionId>/and generates[Attachment: file name](absolute path)in the input box. - Web resource download: Dragging a web image or link triggers a streaming download on the host.
- Pure image passthrough: Pure local images are passed directly through the native vision channel and are not written to disk.
- Folder reference: Dragging a folder resolves the absolute path through the desktop bridge and generates a reference.
- Text processing: Dragged text is inserted directly or saved as a
.mdfile. - Host API: Provides interfaces such as
/upload,/fetch-url,/save-text, and/file.
Installation¶
Prerequisites:
- DSH Desktop for Windows
- Node.js >= 22.13
Installation command:
dsh plugin add github:zhanghuqqqq/dsh-drop-in --profile <你的profile>
After installation, restart DSH Desktop.
Usage Examples¶
- Drag a local file (PDF/ZIP, etc.): generates
[Attachment: file name](absolute path). - Drag a web image or link: triggers a streaming download on the host and generates
[Web Image: name](absolute path). - Drag a pure local image: used directly as a chat image attachment.
- Drag a folder: resolves the absolute disk path and generates
[Folder: name](absolute path). - Drag text: inserted directly or saved as a file.
How It Works¶
The plugin intercepts drag-and-drop events through document.capture and dispatches them to different handling logic based on content type:
1. Files: Calls the Host API PUT /upload to upload to the session directory. Paths are isolated by sessionId, and duplicate names are automatically suffixed.
2. URLs: Calls the Host API POST /fetch-url. The host uses Node fetch to stream the download, supporting redirects, retries, and a 2 GiB limit.
3. Pure images: If dt.files are all images and no folder is present, it passes them to the native vision attachment channel.
4. Folders: Resolves the absolute path through the desktop bridge __DSH_DESKTOP_FILE_PATH__ and generates a reference.
5. Text: Inserts into the input box if under 5000 characters; otherwise saves it as a .md file.
Limitations and Notes¶
- Single drag-and-drop limit: Up to 20 files.
- Size limits: URL downloads are limited to 2 GiB; upload/download are limited to 8 GiB.
- Native behavior: Pure image drag-and-drop uses the native vision attachment channel and does not create a disk-based reference.
- Dependency contract: Requires the DSH Desktop
slots/webServer/systemPromptplugin contract (@deepseek-ai/*0.1.0-rc series).
Ecosystem and Links¶
- Repository: https://github.com/zhanghuqqqq/dsh-drop-in
- Directory page: https://www.skillhub.cn/plugins/zhanghuqqqq/dsh-drop-in
- License: MIT