lsz-asd/dsh-plugin-device-info
供 DeepSeek Harness 使用的只读 Windows 设备信息工具:通过 Node os 和 WMI/CIM 提供12个 win_* 工具(时间、系统、CPU、内存、磁盘、GPU、网络/WiFi、电池、进程、USB、音频、打印机)。作为 dsh 插件的打包形式提供。
项目介绍Project Overview
这是 DSH 插件,提供 12 个只读 Windows 设备信息工具,覆盖时间、系统、CPU、内存、磁盘、GPU、网络、电池、进程、USB、音频和打印机,返回规范 JSON。适合让代理快速查询主机硬件与运行状态,避免反复生成 PowerShell。注意:主要面向 Windows,非 Windows 仅 win_time 可用,且不提供传感器、蓝牙等数据。
This DSH plugin provides 12 read-only Windows device-info tools covering time, system, CPU, memory, disk, GPU, network, battery, processes, USB, audio, and printers, returning canonical JSON. Use it when an agent needs structured host hardware or runtime status without writing PowerShell. Caveat: it is Windows-focused; non-Windows supports only win_time, and sensors, Bluetooth, and some categories are unavailable.
请帮我了解并安装插件:【dsh-plugin-device-info】【https://github.com/lsz-asd/dsh-plugin-device-info】
把上面这条消息直接发给当前会话里的 DSH,让它帮你了解并安装。安装命令不一定准确,发给 DSH 更稳。Send this message to DSH in your current session. CLI install commands may not be accurate across systems — DSH will figure it out for you.
或使用命令行安装(适合开发者)Or use CLI install (for developers)
命令行安装CLI Install
dsh plugin --profile web add github:lsz-asd/dsh-plugin-device-info
把 lsz-asd/dsh-plugin-device-info 加入你的 DSH 配置(web profile)即可启用。
READMEREADME
dsh-device-info
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.
nexu-io/open-design
freestylefly/awesome-gpt-image-2
anywhere-labs/dsh-desktop
walkinglabs/learn-harness-engineering
awesome-dsh-plugin/awesome-dsh-plugin
MemTensor/MemOS