Introduction¶
In DeepSeek Harness (DSH), when you paste an image directly into the input box, the core usually only treats it as an object URL in memory and does not immediately write it to disk. This causes two problems: first, the image cannot be found in the official @ menu; second, because it has no fixed number, it cannot be referenced precisely in long conversations. dsh-picflow fills this gap: it turns the paste action into a library ingest, gives the image a fixed number (such as image506), and provides a panel next to the input box for managing and inserting it.
How It Works¶
The plugin reads the real-time draft attachments in the input box every 350 milliseconds and POSTs the image bytes to the host route. The host then calls the official attachments.saveImage API. This flow ensures that images are ingested under the same convention, with the same SHA256 and object. Numbers are assigned in ascending order by the modification time (mtime) of files across the entire library; the earliest image is fixed as image1, and newly added images always receive larger numbers.
Core Features¶
Paste-to-Ingest and Fixed Numbers¶
Pasted images are automatically added to the attachment library and assigned numbers. Numbers are unique and fixed across the entire library. Even if you do not send the image, it is still ingested, making it easier to reference later.
Panel and Search Next to the Input Box¶
A “Referenced Materials” panel expands next to the input box and shows the latest images. The panel includes thumbnails, numbers, timestamps, sizes, and action buttons:
* Insert at Cursor: Inserts a reference chip at the cursor position.
* Attach: Saves the image as an attachment for the current message, allowing the model to view it directly.
* Path: Copies the Markdown reference.
* Fullscreen View: Click a thumbnail to view the enlarged image.
The panel supports search and filtering. You can search by number, date (e.g., 10-04), filename, SHA prefix, or size (e.g., 128kb). Sorting supports Latest / Oldest / Largest, and pagination loads 120 images per page.
Time Buckets and Status Buckets¶
- Time Buckets: The fixed top filter bar provides “All”, “Last 3 Days”, “Last 7 Days”, “Last 30 Days”, and “Earlier”. Specific dates can be expanded via the “Date” toggle.
- Status Buckets: The second row provides filters such as “Used”, “Unused”, “Pinned”, “Large Files”, “Small Noise”, and “Cleanable”, and displays real-time counts for each status.
Usage Ledger and Cleanup Wizard¶
The plugin records usage locally (<DSH_HOME>/dsh-picflow/usage.json). Every insertion or attachment updates the record.
* Cleanup Wizard: Provides cleanup options for images that have been ingested for N days (default: 14), have never been referenced, are not pinned, and do not belong to the current session. Clicking “Move to Trash” moves the image to <DSH_HOME>/trash/dsh-picflow/; it can be undone within 7 days and is truly deleted only after the period expires.
Other Capabilities¶
- Pinning: Images can be manually pinned. Pinned items are excluded from cleanup candidates.
@imageSource: An “Image” group appears in the@menu. The reference chip inserted by selecting it belongs to this type.- Auto-Insert: Enabled by default. After a pasted image is ingested, the reference chip is automatically placed at the cursor. If disabled, click the panel button to insert it manually.
Installation and Activation¶
Install using any of the following methods:
curl -fsSL https://raw.githubusercontent.com/XWIDE/dsh-picflow/main/install.sh | sh
Desktop (Windows):
iwr https://raw.githubusercontent.com/XWIDE/dsh-picflow/main/install.ps1 -useb | iex
Manual Installation:
dsh plugin --profile web add git+https://github.com/XWIDE/dsh-picflow.git
After installation, you must restart the application hosting the plugin (such as DSH NEXT or the dsh web process) so that the host can register the HTTP routes.
Typical Usage¶
- Paste-to-Ingest: Paste a screenshot into the input box; the image is automatically numbered and ingested.
- Insert Reference: Click “Insert at Cursor” in the panel, or enable auto-insert.
- Precise Reference: Type
image506in the conversation, or find the image through panel search. - Manage History: Use the cleanup wizard to filter “Cleanable” images and move them to the trash.
Notes¶
- Local-Only: The plugin does not access the network. All operations are completed locally, with no external dependencies.
- Mandatory Ingestion: Even if a pasted image is not sent, it is still added to the attachment library. This is a design trade-off, and the cleanup wizard is a remediation mechanism prepared for this behavior.
- Formats and Sizes: Supports PNG, JPEG, WebP, and GIF. A single image can be up to 20MB (official library limit), and the request body limit is 24MB.
- Environment Requirements: Requires Node.js 22.19+ or 24+.
- Compatibility: Verified with DSH 0.2.0-rc.2.
Conclusion¶
dsh-picflow intercepts paste operations and converts scattered in-memory attachments into manageable local resources, solving the pain point of referencing screenshots in long conversations. It provides a complete closed loop from pasting, numbering, and panel management to cleanup, making it suitable for agent developers who frequently handle screenshots.