# dsh-inbox-paste [中文文档](README.zh.md) DSH **web bundle**: paste or pick files in the composer, store under `{session.cwd}/inbox/`, show thumbnails before/after send. Agents use `list_inbox` / `read_inbox` for **text**; **image understanding requires your own vision skill or model** (see below). ![Example: pasted screenshot analyzed via image-reader skill](docs/images/example-chat.png) ## Requirements - [DeepSeek Harness](https://github.com/deepseek-ai/DeepSeek-Harness) with the **web** profile - Node.js ≥ 22, `dsh` CLI ## Install ```sh dsh plugin --profile web add github:JarszmLovesAI/dsh_upload_file dsh web ``` Remove: `dsh plugin --profile web remove dsh-inbox-paste` ## Usage 1. **Paste** (Ctrl+V / Cmd+V) or use the **paperclip** in the composer. 2. Pending thumbnails appear above the input; remove with × before send (no disk write yet). 3. On send, files land in `inbox/`; the bubble can show thumbnails (see config). 4. Agent: `list_inbox` → `read_inbox` for text; for **images**, use the bundled [image-reader](skills/image-reader/README.md) skill or your own vision tooling. ### Upload ≠ multimodal understanding This plugin does **not** use Harness native image attachments. The main model only gets path markers unless you add vision: - Install the optional **image-reader** skill and set `ARK_API_KEY` in `~/.dsh/.env`, or - Bring your own vision MCP / skill / multimodal model. ## Configuration `~/.dsh/profiles/web/cordis.patch.yml` (adjust profile name): ```yaml - id: inbox-paste config: uploadMaxBytes: 26214400 inboxDirName: inbox allowedExtensions: [] customizeUserBubble: true # false = built-in user bubble (may show raw paths) ``` Restart `dsh web` after changes. ## vs `dsh-file-upload` | | dsh-inbox-paste | dsh-file-upload | |--|-----------------|-----------------| | Paste | ✅ | ❌ | | Storage | `{cwd}/inbox/` | `{cwd}/.dsh-uploads/` | | Built-in PDF | ❌ | ✅ | ## Tests ```sh npm test ``` ## License MIT