dsh-env-probe
Zero-dependency DeepSeek Harness plugin: probes the local machine environment and injects it into every session's system prompt
- Stars
- 0
- Language
- JavaScript
- Created
- Aug 18, 2026
- Updated
- Aug 18, 2026
Introduction
dsh-env-probe
English | 中文
Zero-dependency DeepSeek Harness (dsh) plugin: probes the local machine environment (OS / shells / runtimes / tools / disks / proxy) once at startup, caches the report on disk, and injects it as an ordered section into every session's system prompt — so the agent starts every conversation already knowing what this computer offers instead of guessing commands.
v1.0.1: slash commands
Registered only when a command adapter is composed (e.g. the Web UI); headless profiles skip them automatically — injection keeps working.
| Command | What it does |
|---|---|
/env-refresh | Forces an immediate re-probe, rewrites the cached profile, replies with a summary plus a diff against the previous probe (+added / -lost / ~version changed) |
/env-suggest | Refreshes the profile first, then steers the current session so the agent produces optimization suggestions based on the freshly injected profile: purpose & recommended install method for missing runtimes/tools, upgrades for outdated versions, priority-sorted — propose first, never installs anything |
/env-suggestuses the sameagent.steer()pattern as the official/plancommand: the command itself costs no model tokens; suggestions arrive as a normal assistant reply.
Features
- Generic by design: no machine-specific endpoints, no local-service checks, every probe item configurable — ready for a public plugin registry
- Cross-platform: Windows / Linux / macOS
- Read-only & safe: only
where/which,--version,df,Get-CimInstancestyle read-only commands; executable names validated against a strict whitelist regex - Disk cache + TTL: default 7-day cache, zero-latency injection; expired cache triggers a silent background re-probe while stale values stay served (marked as such)
- Graceful degradation: a failed item is reported as "unavailable", never aborts the run;
.cmd/.batshims are executed viacmd /c; tunable total budget and concurrency; concurrent refreshes share one probe via single-flight - Bilingual: injected text and command copy support
language: 'en' | 'zh'
Install
Add to your profile's cordis.patch.yml:
- insert:
- id: env-probe
name: 'file:///absolute/path/dsh-env-probe/index.js'
config:
language: en
order: 30
cacheTtlHours: 168
Configuration
| Key | Default | Meaning |
|---|---|---|
cacheTtlHours | 168 | Cache lifetime; re-probes in background on next assembly after expiry |
order | 30 | System-prompt section order (-100 identity / 0 persona / 100-199 tool guidance) |
language | 'en' | Injected text language: 'en' / 'zh' |
cacheDir | '~/.dsh-env-probe' | Cache directory (env-profile.json + env-profile.md) |
runtimes | git, node, npm, python, python3, pip, docker, java, go, rustc | Runtimes to probe |
tools | curl, wget, ffmpeg, 7z, pandoc, tar, unzip, make, gcc, pwsh | Tools to probe |
perProbeTimeoutMs | 5000 | Per-probe timeout |
totalTimeoutMs | 30000 | Total probe budget |
concurrency | 4 | Probe concurrency |
marker | 'ENV-PROBE' | Section marker text |
Plugin contract
Follows the official dsh plugin standard (docs/user/develop/basic): ESM exporting apply(ctx, config); inject: ['systemPrompt']; dependency-free Config["~standard"].validate implementing the standard schema interface; contributes an ordered section via ctx.systemPrompt.section() whose text provider is evaluated at every assembly, keeping the injection fresh as the cache refreshes.