athif23/dsh-shell-select ↗★ 0

dsh-shell-select

DeepSeek Harness plugin: one model-facing `shell` tool whose shell is a user setting. Resolves and validates through the harness's own seams, and refuses to run when the selected shell cannot be confined. 适合需要让智能体在指定且安全的Shell环境中执行系统命令的用户。

Package
dsh-shell-select
Compatibility
Unverified
Harness peer range
^0.1.6-alpha.1
Cordis peer range
^4.0.2
Version
0.1.0
License
MIT
Last updated
Sep 18, 2026

Install

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:athif23/dsh-shell-select

Configuration

Settings live in ~/.dsh/settings.yaml under the shell-select namespace:

shell-select:
  shell: gitbash
  loginShell: false
SettingDefaultMeaning
shellautoA catalog id, or auto.
executableemptyExplicit path for the selected shell. Wins over discovery. A path that cannot be resolved, or that names a different shell, is an error rather than a cue to search.
loginShellfalseRun a bash-family shell with -l, which sources your profile scripts on every command.
wslDistroemptyWSL distribution name; empty uses the distribution's default.
wslMountRoot/mntWhere the distribution mounts Windows drives.
enableRunInBackgroundtrueOffer run_in_background on the shell tool.

The remaining fields are the inherited local executor's budgets, carried through so one composition row configures the whole executor: cwd, timeoutMs (120000), maxTimeoutMs (600000), maxOutputBytes (64000), maxSpillBytes (67108864), and graceMs (3000). pwshPath is the harness's own PowerShell path setting, still honored for the PowerShell entries so an existing value keeps working.

Automatic is the default because it reproduces what the deployment already does: the first catalog entry that resolves, which on Windows is PowerShell (what the harness's own executor runs) and on Linux follows a $SHELL that names a catalog entry. An explicit executable override changes the answer, because an override naming a shell claims that shell: setting executable to a bash.exe path while shell is auto runs that bash, with bash's arguments.

A settings change applies to subsequent calls. It never alters a call that is already being prepared, a running process, or the facts a finished call recorded.