READMESource: main@70709db5
dsh-drop-in
馃寪 涓枃鐗堬細README.zh.md
Drag files from your system file manager straight into the DeepSeek Harness web GUI. Files appear as a chip bar above the input box, or 鈥?with the composer focused 鈥?as a native reference bubble (file pill) embedded inline in the text you are typing; they are sent along with your message (including their absolute paths), and render as file cards inside the user bubble.

Features
- 馃搸 Drag in any file/folder (images are treated as files 鈥?the official image-drop overlay no longer steals the drag)
- 馃 Inline file bubble: with the composer focused, dropped/pasted files are inserted at the caret as a native reference pill (works mid-text, e.g.
浣犲ソ銆屾姤鍛?zip銆嶇湅涓€涓嬭繖涓枃浠禶); on send the pill expands to a reference carrying the **absolute path** (@filename`) and the bubble renders it as a file card 鈥?the agent can read the file straight from the path - 馃柤锔?Clipboard paste: pasting an image/file into the composer goes through the same pipeline instead of the native image-attachment rail
- 馃殌 Chip bar above the input: icon + name + size + path status, removable (脳), deduplicated by path
- 鉁旓笍 Messages automatically carry a
馃搸 鎷栧叆鏂囦欢block (name, size, absolute path), rendered as file cards (hover for the full path) - 馃攳 A
dropped_filestool lets the agent list still-unsent dropped files - 馃枼锔?Under DSH Desktop (Electron) absolute paths come from the preload bridge (
webUtils.getPathForFile鈥?the only path source in modern Electron) - 馃寪 Fallback: in a plain browser (no preload bridge) text files are copied to the workspace
.dsh-drops/, and pasted binaries are persisted there via base64, so the agent can still read them
Install
dsh plugin --profile web add https://github.com/lbl61/dsh-drop-in/archive/refs/tags/v1.3.0.tar.gz
Manual (bundle) install:
- Extract
dsh-drop-ininto~/.dsh/profiles/web/node_modules/dsh-drop-in/ - Add
"dsh-drop-in"to thedsh.profile.bundlesarray in~/.dsh/profiles/web/package.json - Restart
dsh web(DSH Desktop: quit fully and reopen, or runwindow.dshDesktop.restartService()in DevTools)
Usage
- Drag files from Explorer into the chat page (or paste an image/file into the composer)
- Composer focused 鈫?files are inserted at the caret as native reference bubbles (file pills), mid-text allowed; otherwise they appear in the chip bar above the input
- Type your message and send (Enter / Ctrl+Enter / the send button all work)
- The bubble shows file cards 鈥?the agent receives the absolute path (
@[name](path)or the馃搸 鎷栧叆鏂囦欢block) and can read the files
How it works
- The client half intercepts file drags in the capture phase (the official image-upload flow never steals the events), keeps a per-session chip bar (
conversation.input.dock), renders user bubbles with file cards (conversation.chat.nodeuserkey), and stitches the馃搸 鎷栧叆鏂囦欢block into the draft before submit (Enter, Ctrl+Enter, and the send button are all covered); with the composer focused it inserts native reference bubbles via theslash/input-insert-referencescoped event (U+FFFC occurrences rendered by the composer backdrop) and the registeredinputTriggerscodec serializes them to@[filename](absolute-path)on submit - The host half keeps the per-session file registry behind the
dropped_filestool, writes fallback text copies to.dsh-drops/<sessionId>/, and persists pasted binaries via thefile-copyroute (base64) - Absolute paths under DSH Desktop rely on the preload bridge (see preload-bridge.md): Electron 鈮?32 removed
File.path
Configuration
| Setting | Description |
|---|---|
enabled |
Master switch (Settings 鈫?鏂囦欢鎷栧叆). When off, drag/paste falls back to built-in behavior. |
Uninstall
- Remove
dsh-drop-infrom thedsh.profile.bundlesarray in~/.dsh/profiles/web/package.json - Delete
~/.dsh/profiles/web/node_modules/dsh-drop-in/ - Restart
dsh web
License
MIT
No comments yet. Be the first to write one.