PerryLink/dsh-click
dsh-click
Cross-platform native desktop control for DeepSeek Harness (Windows first): screen_shot, screen_read, click/type/scroll/key, app_list/app_launch - approval-gated, never stealing foreground focus
Install
npx @deepseek-ai/dsh plugin --profile web add "github:PerryLink/dsh-click#main"Restart `dsh web` after install. Bundle APIs can change during the developer preview.
README badge
[](https://dshhub.dev/plugins/dsh-click)Paste this into your README. The star count updates with every catalog sync.
From the README
Excerpt from PerryLink/dsh-click, cleaned of badges and images.
🖱️ dsh-click
- 1024 store channel:
npm i -g dsh1024once, thendsh1024 plugin --profile web add dsh-click(counts toward the deepseek1024.com install ranking).
Cross-platform native desktop control for DeepSeek Harness — Windows first.
Look at the screen, then act — every click gated, every action audited.
English · 简体中文 · Español · Português · हिन्दी
⭐ 如果它帮到了你
这个插件是 DSH 插件家族的一员(40+ 个,全部 Apache-2.0)。如果你在用,给个 star —— 它不会解锁任何功能,但会让下一个人在搜索里更容易找到它。
English: part of a 40+ plugin family for DeepSeek Harness. If it is useful, a star helps the next person find it — nothing is gated behind it.
Compatibility
| Surface | Status |
|---|---|
| Harness | DeepSeek Harness dsh-v0.1.7-rc.2 (GitHub tag, verified 2026-09-25). Verified 2026-09-11 against the dsh-v0.1.7-alpha.1 master checkout (full gate chain + profile install smoke). |
| Node | ^22.19.0 || >=24.0.0 |
| Platforms | Windows first (UIAutomation + Win32 input, via a bundled PowerShell helper); macOS/Linux backends are reserved and fail closed with a clear reason |
| Model | Text-only models fully supported (screen_read returns structured text); vision models additionally get screen_shot images |
What you get
dsh-click gives the harness a complete observe → act loop over native desktop applications:
screen_shot— screenshot of a window (or the primary screen), downscaled to a configurable bound. With a vision-capable model the result carries the image; otherwise a text description keeps text-only models working.screen_read— the structured observation: the window's accessibility tree (element ids, types, names, rectangles, supported patterns) plus pixel-location hints with colors — plain text, no image model required.click/type/scroll/key— window-scoped actions addressed by element id or coordinates. Delivery prefers UIA invoke, falls back to posted window messages — and never steals foreground focus.app_list/app_launch— enumerate running applications and their windows; launch one by name or path.
Every mutating action crosses one safety boundary:
- Freshness — the action must cite a
basedOnobservation; the window is re-captured right before acting and the action is refused if the screen changed (pixel-hash check + max-age bound). - Approval —
ctx.approvalgates every action by default; window-title/executable regexes can allowlist specific windows (still audited). - Process identity — the owning process's pid and executable path are verified before and after the act; a change refuses the outcome loudly.
- Audit — observations and actions land in the session log as
dsh-click/observed/dsh-click/actionevents (sanitized, log-only).
model harness
│ screen_read ──▶ observationId (+ elements, pixels) ← structured text
│ click {basedOn, target} ──▶ freshness check ──▶ approval ──▶ helper (UIA)
│ pixel hash changed? ── refuse + re-observe
│ pid/exe changed after act? ── PROCESS_CHANGED
│ ◀── canonical JSON + audit events (dsh-click/action)
Quick start
# 1. install the bundle into your profile
dsh plugin --profile web add "github:PerryLink/dsh-click#main"
…
