Skip to content
dsh.fish
Bundle

my-image-drop

DeepSeek Harness plugin: drag images into the composer and get a file path back, so text-only models can read them via the read tool.

Source
yangpeng-space
License
MIT
Updated
Updated 4 days ago

Readme

# my-image-drop

A [DeepSeek Harness](https://github.com/deepseek-ai/dsh) plugin that turns **drag-and-drop of images** into **file paths** in the composer, so text-only models can read them with the `read` tool (or a vision skill) instead of failing image admission.

## How it works

- **Host half** (`dsh/index.js`): registers a loopback route `POST /my-image-drop`. It accepts an image, magic-byte checks and size-caps it (25 MB), writes it as a private (`0600`) temp file under `<tmpdir>/my-image-drop`, and returns `{ "path": "..." }`.
- **Browser half** (`dsh/client.js`): a capture-phase `drop` listener (plus `dragenter`/`dragover` to enable dropping). On a drop that carries image files, it uploads each to `/my-image-drop` and inserts the returned path into the focused composer as plain text. It also dispatches a synthetic `dragend` so the composer's drop overlay dismisses.

The composer shows a file path in the input box. Send it and the model gets a path — the primary trigger for the `read` tool and vision skills.

## Install

From the GitHub source (git install runs `prepare`; no build needed, the entry is committed):

```bash
dsh plugin add github:<owner>/my-image-drop
```

Or add the bundle to your profile:

```json
{
  "dsh": { "profile": { "bundles": ["my-image-drop"] } }
}
```

## Scope

This plugin handles **drag-and-drop only**. Paste is intentionally left to whatever else is installed (e.g. `@liustack/modlens`) so the two never double-handle the same event. If you run modlens' own drop patch *and* this plugin at the same time, both would insert a path — pick one.

## Files

- `package.json` — manifest; declares `dsh.bundle.patch` and the browser bundle (`dsh.client`).
- `cordis.patch.yml` — host mount layer.
- `dsh/index.js` — host half (route).
- `dsh/client.js` — browser half (drag/drop listeners).

## Testing (author)

- `node --check dsh/index.js` — syntax check the host half.
- `node --check dsh/client.js` — syntax check the browser half.
- Install into a web profile, restart the desktop app, drag an image into the composer, and confirm a file path is inserted and the `read` tool can open it.

Install

dsh plugin --profile web add github:yangpeng-space/my-image-drop#7019a261b120b3745f96f1094028b26afbe8bf8b

Profile: web

Source