DeepSeek Harness Plugin

deepseekbluefish/dsh-screenshot-plugin

Stars ★ 0 Category UI Enhancements Added 2026-08-24

WeChat-style in-app screenshot button: drag a region, fine-tune with 8 resize handles, Enter to capture and Esc to cancel; auto-numbered PNGs plus a \[Shot N HH:mm] marker written into the composer. Windows-only, tested on DeepSeek Harness Desktop.

Install

# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)

dsh plugin --profile web add github:deepseekbluefish/dsh-screenshot-plugin

Any plugin you install runs third-party code with your own permissions — it can read your files, use your credentials, and reach the network, and tool approvals don’t sandbox it. GitHub-sourced plugins also run build scripts at install time — pnpm blocks those until you allow them, so an install can stop with ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED or ERR_PNPM_IGNORED_BUILDS; dsh prints the exact key to add under allowBuilds in your profile’s pnpm-workspace.yaml, and the install works on the next run. Allowing a build is a trust decision: only install sources you trust, and pin a commit (github:owner/repo#sha).

README

A WeChat-style in-app screenshot button for DeepSeek Harness: a small ✂ button next to the composer input. Click it, drag a region on the dimmed screen, release — captured.

  • PNGs auto-numbered (JiePingN_HHmm.png) into a configurable folder
  • A [Shot N HH:mm] marker is written into the composer input (send it and your agent can locate and read the file)
  • Pure-ASCII marker, no encoding pitfalls

Install

dsh plugin --profile web add github:<owner>/dsh-screenshot-plugin

Restart DSH (or your client) and the ✂ button appears next to the composer input.

Usage

  1. Click — the screen dims
  2. Drag to draw a selection; the frame stays after release — drag inside to move it, drag the 8 edge/corner handles to resize
  3. Double-click the selection (or press Enter) to capture, Esc cancels
  4. [Shot N HH:mm] appears in the input box
  5. Send it — with a vision plugin such as ModLens your agent can read the screenshot

Configuration

Shots save to ~/Pictures/DSH-Screenshots by default. Override per profile:

# ~/.dsh/profiles/<name>/cordis.patch.yml
- id: screenshot
  config:
    folder: 'D:\MyScreenshots'

How it works

  • Client (client/index.js): a ✂ button registered in the conversation.input.left slot; clicking it POSTs to /api/screenshot/capture
  • Host (lib/index.js): registers a webServer route, spawns a PowerShell full-screen region-select overlay, returns { ok, file, marker }
  • Capture script (lib/capture.ps1): WinForms overlay + CopyFromScreen region capture; strictly ASCII source (Windows PowerShell 5.1 encoding safety); the JSON result is emitted from the main flow, not from event handlers
  • Composer fill: tries props.inputActions, then sessions.provideInfo(...).props.inputActions, falling back to session.prompt(..., 'queue'); failures surface as a toast and never break the app

Limitations

  • Windows only (depends on Windows PowerShell / System.Drawing)
  • Multi-monitor supported via the virtual-screen coordinate space

License

MIT

Content from the project README on GitHub ↗

Links

More in this category

View the whole category →

Community comments

Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.