Tools & Capabilities

dsh-plugin-device-info

lsz-asd/dsh-plugin-device-info · ★ 1

lsz-asdCurated

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.

License
NOASSERTION
Added
2026-08-14
Maintenance
active
Install kind
github
Manifest details
Manifest status
Declared
Manifest path
package.json#dsh
Manifest checked
2026-08-19
Lifecycle scripts
None found

Static manifest checks report declarations only; they are not compatibility or security review.

安装

dsh plugin --profile web add github:lsz-asd/dsh-plugin-device-info

GitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试

For install and environment setup, plus plugin development tutorials, see DSH community docs ↗

README

Source README · body: en · Read Chinese README

Table of contents
  1. Why this plugin
  2. Install
  3. Tools
  4. Config
  5. Example
  6. Architecture
  7. Highlights
  8. Quality
  9. Development
  10. Model Experience
  11. Roadmap
  12. Known limitations
  13. License

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 wlan fields stay English on localized Windows; powercfg GUID regex language-independent; CIM /Date(ms)/ â†?ISO-8601
  • Sentinel handling â€?battery runtime is junk on AC (0x04444444) â†?null; AdapterRAM uint32 wraparound documented
  • Cancellation/timeouts â€?exec.signal kills the child; hard per-query timeout; no orphans, no hangs
  • Domain vs infra failures â€?missing battery/WiFi/non-Windows â†?supported: false values; 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

AGPL-3.0