dsh-web-ui
zhu1090093659
Plugin and skin collection for DeepSeek Harness (DSH) Web UI - task board, git graph, right-side panel, remote mobile UI, pet, live token stats, and skin center.
PROJECT TOPICS
INSTALL REFERENCE
dsh plugin --profile web add github:dimitririchko-ops/dsh-computer-use-windows
该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。
PROJECT README
Windows computer use for DeepSeek Harness — the plugin reads the Windows UI Automation accessibility tree to see and drive the desktop, with optional VLM grounding for surfaces UIA cannot describe. Approval-gated and allowlisted.
dsh plugin --profile web add "github:dimitririchko-ops/dsh-computer-use-windows"

Restart dsh --profile web after installing.
Ten tools over one long-lived powershell.exe (Windows PowerShell 5.1) bridge
that speaks JSON lines over stdio:
| Tool | Kind | What it does |
|---|---|---|
window_list |
observe | Visible top-level windows (hwnd, title, process, bounds) |
screen_observe |
observe | Filtered UIA element tree with refs, bounds, patterns |
screen_capture |
observe | Save a window to a PNG file; returns the path, never the image |
ui_locate |
observe | Vision grounding: find a described element, return coordinates |
ui_click |
action | UIA InvokePattern when possible, synthetic click otherwise |
ui_set_value |
action | Set an edit's text via ValuePattern (preferred over typing) |
ui_type |
action | Type into whatever has focus (fallback only) |
ui_key |
action | Key combo, e.g. ctrl+s, alt+f4 |
ui_scroll |
action | Wheel-scroll under a ref or coordinate |
window_focus |
action | Bring a window to the foreground |
app_launch |
action | Launch an application |
# in your profile's cordis.patch.yml, targeting the plugin row by id
- id: computer-use-windows
config:
# Window title or process patterns the plugin may touch.
# EMPTY BY DEFAULT — every action tool refuses until you name windows.
allowlist:
- Calculator
- Notepad
- '*Google Chrome'
# ask (default) prompts for each action; allow skips prompts; deny blocks all.
approvalMode: ask
# Vision grounding (optional): any OpenAI-compatible endpoint.
vision:
baseUrl: https://openrouter.ai/api/v1
model: bytedance/ui-tars-1.5-7b
apiKey: !!js process.env.OPENROUTER_API_KEY
The vision API key comes from config with an environment fallback
(OPENROUTER_API_KEY); no ad-hoc key files are ever read.
Three independent layers:
tools/pre-execute:
ask (default) prompts you, allow and deny are policy overrides.
Observation tools never prompt. A hard denylist (credential dialogs, UAC,
password managers — extendable via denyPatterns) is enforced monotonically
and can never be overridden by approval or allowlist.Every action is audited through the plugin logger with timestamp, tool, target window, and outcome.
The harness model is text-only, so the plugin never sends it an image. When
screen_observe finds nothing usable (canvas-drawn UIs, games, RDP sessions,
custom controls), ui_locate captures the window, downscales it, and posts it
to the configured vision model — which returns coordinates the plugin rescales
to physical screen pixels. The model sees only the coordinates.
UIAutomationClient is a .NET Framework assembly; the bridge refuses to run
under pwsh).dsh-browser-runtime's job; the
plugin returns NO_UIA_TREE and stops.ELEVATION_REQUIRED instead of failing
silently.Every row below is from a real run of the driver/bridge against a live window
on this machine (Windows 11, 100% display scaling) — no assumptions. The same
battery runs for every app: windows → observe → invoke → setValue →
capture.
| App | observe | invoke | setValue | capture | Verdict |
|---|---|---|---|---|---|
| Notepad | 26 elements (document, menu, toolbar, status bar) | ✅ InvokePattern on menu items, click fallback on toggles | ✅ Document ValuePattern, value verified | ✅ | full |
| Calculator | 39 elements, every key exposes InvokePattern | ✅ InvokePattern — invoking Five made the display read "Display is 5" |
❌ read-only display (PATTERN_UNSUPPORTED) — no editable field exists |
✅ | full |
| File Explorer | 158 elements (nav, toolbar, file list) | ✅ InvokePattern (Back) | ✅ Search box, value verified | ✅ | full — note: WinUI 3 chrome element bounds can be misreported (address bar); file list is reliable |
| Windows Settings | 74 elements (nav list, search) | ✅ click fallback (System nav item) | ✅ Search box, value verified | ✅ | full |
| Task Manager | ❌ ELEVATION_REQUIRED — the window belongs to an elevated process (UIPI) |
❌ blocked | ❌ blocked | ✅ composited capture still works | not supported from a non-elevated session (would work from an elevated harness) |
| VS Code | 38 elements; Electron AX is lazy (first observe returned 3) and the tree is deep (truncated) |
✅ click fallback (Accounts) | ❌ editor exposes ValuePattern but it is read-only; typing (ui_type) works |
✅ | partial |
| VLC | ❌ NO_UIA_TREE — raw view is a single node; the Qt accessibility bridge is not active |
❌ | ❌ | ✅ | vision-only |
| MS Paint | 105 elements (ribbon: 50 buttons, radios, sliders) | ✅ InvokePattern (Select) | ❌ no editable field | ✅ | partial — ribbon is fully drivable, but the canvas itself is not UIA-interactive (vision-only surface) |
| Chrome | 62 elements (browser chrome, omnibox, page shell) | ✅ InvokePattern (Reload) | ✅ omnibox, value verified | ✅ | partial — chrome is drivable; page automation belongs to dsh-browser |
| Discord | — not installed on this machine — | — | — | — | not tested |
Legend
screen_capture + ui_locate
(vision grounding) is the only path.ELEVATION_REQUIRED error).Two patterns to expect elsewhere: Chromium/Electron apps (VS Code, Chrome, Discord) expose a lazy, deep accessibility tree — warm it with one observe and expect the depth cap to bite; Qt apps (VLC) often expose nothing at all until their accessibility bridge is enabled, so plan on vision.
ui_locatepnpm install
pnpm run build # tsc -> lib/
pnpm test # node --test (unit + bridge integration)
node scripts/verify-phase3.mjs # Phase 3 quality gates by hand
The repo uses a commit-msg hook (.githooks/commit-msg) that enforces the
project's commit message conventions; enable it with
git config core.hooksPath .githooks.
MIT © Dimitri Richko
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: ui-automation。