Read-only Windows device information tools: one agent tool per Win32 device category (time, system, cpu, memory, disk, gpu, network, battery, processes, usb, audio, printers) via WMI/CIM and Node os collectors.
Install
# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)
dsh plugin --profile web add github:lsz-asd/dsh-plugin-device-info
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
Read-only Windows device info for DeepSeek Harness agents �?12 win_* tools, one per Win32 device category.
@huanlin/dsh-plugin-device-info gives the model structured, read-only access to the host machine: time, system, CPU, memory, disk, GPU, network/WiFi, battery, processes, USB, audio, printers. No writes, no installs, no network.
Why this plugin
Ad-hoc PowerShell probing costs tokens every query �?the model re-generates a command each time (~40�?00+ tokens, more with retries after a typo or a permission prompt). A plugin call is ~6 tokens against pre-tested, versioned queries. Install once, call any tool; no command-writing, no trial-and-error. (Estimates: scripts/token-estimate.mjs; real benchmark planned, see Roadmap.)
Install
dsh plugin --profile <profile> add github:lsz-asd/dsh-plugin-device-info # after publishing
dsh plugin --profile <profile> add link:C:/path/to/dsh-device-info # local checkout
Restart the profile. lib/ ships pre-built (no prepare script).
Tools
| Tool | Reports | Source |
|---|---|---|
win_time |
ISO/epoch time, IANA timezone, UTC offset, uptime, boot time | Node os �?any platform |
win_system |
OS, hostname, user, vendor, model, BIOS, serial (config) | Win32_ComputerSystem / Win32_OperatingSystem / Win32_BIOS |
win_cpu |
Model, cores, max clock, load % | Win32_Processor |
win_memory |
Used/free/total, used %, modules | Node os + Win32_PhysicalMemory |
win_disk |
Drives + volumes (capacity, free) | Win32_DiskDrive / Win32_LogicalDisk |
win_gpu |
Name, VRAM, driver, resolution | Win32_VideoController |
win_network |
Adapters, IPs, live WiFi (SSID/signal/rates/auth) | Get-NetAdapter + netsh wlan + Node os |
win_battery |
Charge %, AC/DC, runtime, power scheme | Win32_Battery + powercfg |
win_processes |
Count + top-N by memory/CPU (top_n, sort_by) |
Get-Process |
win_usb |
USB devices | Win32_PnPEntity |
win_audio |
Audio devices | Win32_SoundDevice |
win_printers |
Printers (driver/port/default/offline) | Win32_Printer |
Config
| Field | Default | Description |
|---|---|---|
pwshEnabled |
true |
Master switch; false disables all but win_time. |
pwshTimeoutMs |
8000 |
Per-query timeout (1000�?0000). |
topProcesses |
10 |
Default top-N for win_processes (1�?00). |
includeSerialNumber |
true |
Report BIOS serial in win_system. |
pwshPath |
powershell.exe |
PowerShell executable (powershell.exe/pwsh.exe). |
Example
User: 这台电脑还剩多少内存?电池呢�?Model: [win_memory] �?72.8% used, 2× Samsung 8 GB DDR5-4800
[win_battery] �?100%, AC online, scheme 381b4222�?(平衡)
All tools return canonical JSON; nullable fields stay null (schema oneOf: [type, null]) for a stable shape:
{ "supported": true, "platform": "win32",
"name": "13th Gen Intel(R) Core(TM) i7-13700HX",
"cores": 16, "logical_processors": 24,
"max_clock_mhz": 2100, "current_load_percent": 3 }
Architecture
model ──tools──�?win_* tools ──�?execute �?canonical JSON value
�? render �?pure text projection
�? CollectContext {run, signal, platform, config}
�? Node os (no subprocess) PowerShell child (WMI/CIM · netsh · powercfg)
win_time, totals, addresses killed on exec.signal · hard timeout
src/index.ts entry · src/tools.ts 12 tools + renders · src/collect.ts collectors · src/pwsh.ts runner + parsers · src/types.d.ts ambient peer types
Highlights
- Value/render split �?execute returns plain bytes/ms/percents; render is a pure projection, replay-safe
- Locale-independent parsing �?
netsh wlanfields stay English on localized Windows;powercfgGUID regex language-independent; CIM/Date(ms)/�?ISO-8601 - Sentinel handling �?battery runtime is junk on AC (
0x04444444) �?null;AdapterRAMuint32 wraparound documented - Cancellation/timeouts �?
exec.signalkills the child; hard per-query timeout; no orphans, no hangs - Domain vs infra failures �?missing battery/WiFi/non-Windows �?
supported: falsevalues; spawn/timeout/abort �?thrown (isError)
Quality
59 unit tests (real-machine fixtures) · real powershell.exe smoke · real-composition smoke through production @deepseek-ai/dsh-tools (scripts/di-smoke.mjs) · strict TS, tsc + tsdown �?lib/.
Development
pnpm install && pnpm run typecheck && pnpm test && pnpm run build
@deepseek-ai/dsh-tools is host-provided and not in devDependencies (its peer chain references an unpublished package); typecheck uses src/types.d.ts ambient declarations, tests mock the module, the real module runs in the smoke script/Loader.
Model Experience
The 12 fixed schemas join the generated tool catalog �?no dynamic prompt injection. Token effect: fixed (constant schemas; one result message per call). KV cache: prefix-stable (schemas never change at runtime).
Roadmap
- Token-efficiency benchmark �?real per-task usage: plugin call vs ad-hoc commands (incl. retries/prompts); results published here
- More platforms �?Linux/macOS (
/proc,sysctl,system_profiler) - More categories �?Bluetooth, displays, traffic stats, temperature (LibreHardwareMonitor), installed software
Known limitations
Sensors need a third-party daemon · Bluetooth/display/traffic stats deferred · process CPU is cumulative seconds, not live rate · only win_time on non-Windows.
License
Links
More in this category
Tencent/WeKnora#dsh-weknora★ 30675
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★ 3596
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★ 1126
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★ 496
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★ 446
Local IMAP invoice download, OCR, archive, and Excel reimbursement summaries for DeepSeek Harness.
anysearch-team/anysearch-dsh★ 430
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.