Windows-only Computer Use plugin for DeepSeek Harness with UIA, cua-driver, and optional GLM vision.
Install
# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)
dsh plugin --profile web add github:qphotoai/dsh-computer-use-windows
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 Windows-only Computer Use plugin for DeepSeek Harness. It is based on 988hj7tczd-oss/dsh-computer-use and uses cua-driver for Windows UI Automation, an isolated agent cursor, and window-scoped actions. Optional screenshot understanding is provided by Zhipu GLM.
Requirements
- Windows 11 (currently tested on 10.0.22000.2538, x86_64)
- DeepSeek Harness Web profile
- Node.js 24.14.0 (tested version)
- cua-driver 0.21.0 (tested version)
This repository is intended for Windows only.
Tools
| Tool | Purpose |
|---|---|
screen_observe |
Read the Windows UIA control tree and coordinates; optionally analyze a screenshot |
computer_click |
Click an observed element or window-local coordinates |
computer_double_click |
Double-click |
computer_right_click |
Right-click |
computer_type |
Type into the most recently observed window |
computer_key |
Send a key or shortcut |
computer_scroll |
Scroll |
computer_drag |
Drag |
computer_wait |
Wait for UI changes |
app_list |
List running applications |
app_launch |
Launch an application |
Installation
1. Install and start cua-driver
Follow the official cua-driver instructions, then verify the installation:
cua-driver --version
cua-driver doctor --json
If the executable is not in PATH, set:
$env:CUA_DRIVER_BIN = "C:\path\to\cua-driver.exe"
The plugin also probes this common Windows installer location:
%LOCALAPPDATA%\Programs\Cua\cua-driver\bin\cua-driver.exe
Start the daemon:
cua-driver serve --socket "\.\pipe\cua-driver"
2. Add the plugin to the DSH Web profile
Use the included native Windows installer (recommended):
.\tools\install-windows.ps1
It links the plugin into the Web profile, updates the profile package.json, and verifies that dsh-tools resolves to one host-owned instance. Restart the existing dsh web host afterward.
Manual setup is also available. Clone the repository:
git clone https://github.com/qphotoai/dsh-computer-use-windows.git
cd dsh-computer-use-windows
Link the checkout from the Web profile and add it to that profile's package.json:
{
"dependencies": {
"dsh-computer-use": "link:C:/path/to/dsh-computer-use-windows"
},
"dsh": {
"profile": {
"bundles": ["dsh-computer-use"]
}
}
}
Do not install another profile-local copy of @deepseek-ai/dsh-tools. The plugin must resolve the exact host-owned module instance; otherwise scheduler identity mismatches can cause undefined.prepare.
Verify the module identity:
$env:DSH_PROFILE_ROOT = "$HOME/.dsh/profiles/web"
node tools/verify-host-modules.mjs
pluginPath and hostPath must be identical. Restart the existing dsh web host afterward.
Uninstall:
.\tools\uninstall-windows.ps1
Usage
Observe before acting:
screen_observe(window="Calculator", mode="ax")
computer_click(element=26)
windowaccepts a title substring or PID.- Element numbers belong to the latest observation.
- A snapshot is valid for about 15 seconds by default; observe again after expiry.
- Prefer
mode="ax"for native Windows applications. - Use
mode="vision"for Canvas, images, or incomplete UIA data.
Optional Zhipu Vision
Set a Zhipu API key through the environment:
$env:ZHIPU_API_KEY = "your key"
Alternatively, store a single-line key in:
%USERPROFILE%\.zhipu-key
Restrict the file to the current Windows user and never commit it.
Call vision mode with:
screen_observe(window="target window", mode="vision")
The current implementation calls Zhipu GLM; it does not automatically use the chat model's native vision capability. Vision may misread labels or coordinates, so observe again after an action.
Configuration
The default cordis.patch.yml registers:
- insert:
- id: dsh-computer-use
name: dsh-computer-use
config:
ttlMs: 15000
maxElements: 500
Optional settings:
config:
ttlMs: 15000
maxElements: 500
allowedApps: []
cursorTheme: com.dsh.computeruse.rainbow
allowedApps: application allowlist; an empty array disables the restriction.cursorTheme: ID of a cursor theme already installed in cua-driver; the driver default is used when unavailable.
The upstream theme.lottie and tools/make_theme.py are retained. Follow cua-driver documentation to compile and install cursor themes.
Development
node --check index.js
Get-ChildItem lib -Filter *.js | ForEach-Object { node --check $_.FullName }
node --test test/*.test.js
$env:DSH_PROFILE_ROOT = "$HOME/.dsh/profiles/web"
node tools/verify-host-modules.mjs
Attribution and License
- Upstream: 988hj7tczd-oss/dsh-computer-use
- Windows fork: qphotoai/dsh-computer-use-windows
- License: MIT
Links
More in this category
Tencent/WeKnora#dsh-weknora★ 32683
Four read-only tools over a WeKnora knowledge base: list knowledge bases, hybrid passage search, reassemble one document's chunks in order, and WeKnora's own cited RAG or ReAct-agent answer with a resumable session id.
superdesigndev/treg★ 4865
Tool catalog for agents: search ~2,600 external endpoints (SEO and SERP, backlinks, social, people and company enrichment, ad libraries, scraping) by the task you want done, read each one's parameters and per-call price, then call it with the credential injected server-side. Ships the skill plus an MCP row that stays disabled until TREG_TOKEN is set.
TencentCloudBase/CloudBase-AI-Toolkit#dsh-plugin★ 1134
Tencent CloudBase backend for DeepSeek Harness — scaffold and deploy full-stack apps from chat, render query results as table cards with paging, sorting and CSV export, preview a deployment on its domain, and call the CloudBase MCP toolset (`mcp__cloudbase__*`) with device-code login.
gitroomhq/postiz-agent#dsh-postiz★ 508
Connects DeepSeek Harness to Postiz over MCP: list connected social media channels, fetch per-platform posting rules, and schedule, draft, or publish posts to X, LinkedIn, Instagram, Facebook, Threads, TikTok, YouTube, Reddit, Bluesky, Mastodon, Discord, Slack, Telegram and more; adds a postiz workflow skill.
EthanYoQ/Invoice-Downloader#dsh-invoice-downloader★ 502
Local IMAP invoice download, OCR, archive, and Excel reimbursement summaries for DeepSeek Harness.
anysearch-team/anysearch-dsh★ 452
AnySearch-powered real-time web and vertical search provider for DeepSeek Harness.
Community comments
Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.