Model-facing owner-scoped persistent PowerShell tool backed by the Harness PTY service
$ dsh plugin --profile web add npm:@deepseek-ai/dsh-tool-pwsh-persistentRun the command above in your terminal to install this plugin via the dsh CLI. You can switch Profile in the top-right corner. New to dsh? Read the beginner tutorial
English | 中文
Model-facing pwsh(command) backed by one owner-scoped ctx.terminals shell. The package owns the tool contract and shell reuse; deployments select the terminal backend (a terminal-bash instance configured with shellDialect: pwsh) and sandbox policy. It is the Windows counterpart of tool-bash-persistent: same persistent-state contract, PowerShell dialect.
| Key | Default | Meaning |
|---|---|---|
backendType | shell | Registered terminal backend used for each Agent shell. |
timeoutMs | 300000 | Wall-clock limit for one command; timeout closes the shell. |
maxOutputChars | 16000 | Maximum retained command-output characters; fixed diagnostics are added afterward. |
description | Persistent-shell description | Model-facing environment contract. |
The generated pwsh schema, including the configured description. The plugin contributes no standalone system-prompt section; the deployment owns persona and environment guidance.
Fixed schema cost while pwsh is visible.
Prefix-stable while the configured description and schema remain unchanged.
Commands share one shell per Agent, so cwd, $env: variables, functions, and background jobs persist across calls. Results exclude private completion markers, the shell prompt, and the echoed input line (PSReadLine renders submitted input back into the stream; the marker-anchored extraction and the wrapper-source strip remove it). A nonzero wrapped command appends [exit code: N] — the exact native exit code when the command ran a native program, 1 for a terminating PowerShell error. A shell that exits before reporting that status instead appends [shell exited: code N], [shell killed by signal: SIG], or [shell exited] when the backend supplies neither (Windows forced termination reports exit 1 without a signal), then resets and tells the model that the next call starts fresh. Long output keeps the earliest retained prefix plus a clipping notice; if the terminal has already dropped that prefix, the result says so explicitly. Timeout returns bounded partial output, closes the uncertain shell, and reports the reset.
Data-dependent. maxOutputChars bounds retained command output; fixed clipping, lost-prefix, status, timeout, and reset diagnostics can extend the result.
Append-only tool results follow the reusable request prefix.
stty -echo equivalent. The marker-anchored extraction excludes the echo in complete results; the wrapper-source strip covers fallback paths, but a wrapper that wraps across the terminal width may leave a partial echo in partial-output results, bounded by maxOutputChars.[char]27-built OSC markers, backtick escapes for the body).prompt function removes the readiness marker; the shell then settles on the silence tier instead of the marker fast path.[Console]:: encoding pin and prompt marker. Commands can still settle through the printable prompt and silence tier, but non-ASCII output may follow the host code page.