前言¶
在 DSH 的 Windows 使用場景裏,shell 工具面經常是一個具體問題:agent 可能需要執行 bash 風格命令,但當前生效 shell 可能是 pwsh;如果工具面中同時暴露 bash 和 pwsh,提示詞與工具選擇都會變得更復雜。
dsh-windows-shell-policy 針對這個點做收斂:它探測本機可用的 git-bash/MSYS2/Cygwin,在「設置 → 插件 → 插件配置」提供「默認 Shell」摺疊卡片,支持自動 / bash / pwsh 三選一;在策略爲 bash 時動態註冊 bash 工具,並裁剪提示詞工具面,使 agent 只面對一個 shell 工具。
這是什麼¶
- 插件名:
dsh-windows-shell-policy - 維護者:
LAN-TINA-WS - 版本:
0.0.5(package.json) - License:MIT
- GitHub:https://github.com/LAN-TINA-WS/dsh-windows-shell-policy
一句話定位:它是 DeepSeek Harness(DSH)的 Windows 默認 Shell 策略插件,用於在 Windows 上探測 bash、切換 bash/pwsh、註冊 bash 工具,並控制 agent 可見的 shell 工具面。
核心能力¶
Shell 探測¶
插件按以下順序探測可用 bash:
1、顯式 bashPath
2、Git 常見安裝路徑(Program Files / x86)
3、MSYS2 / Cygwin
4、PATH
找到即用。
配置卡片¶
在「設置 → 插件 → 插件配置」中,插件提供「默認 Shell」摺疊卡片。卡片會顯示探測狀態與當前生效 shell,並支持三選一:
- 自動
- bash
- pwsh
策略生效¶
策略行爲如下:
auto:探測到 bash 則用 bash,否則使用 pwsh。bash:強制使用 bash;若未探測到 bash,會回落 pwsh 並提示。pwsh:強制使用 pwsh。
切換保存後,下一次請求生效。
bash 工具註冊¶
當 effective=bash 時,插件動態註冊 bash 工具,並使用 subprocess 通道執行,支持超時、輸出截斷、exit code 標記。
提示詞工具面裁剪¶
插件在 system-prompt/assemble 中按策略隱藏 pwsh/bash,使 agent 工具面只保留一個 shell 工具。
持久化¶
preferred 持久化於 settings 文檔的 shell-policy section,重啓保留。
卸載即淨¶
卸載可使用:
dsh plugin --profile web remove
或在開發環境使用:
dev_uninject_plugin <本目錄>
可完成工具註銷、提示詞恢復、junction 清理。
安裝與啓用¶
GitHub 直裝¶
下面命令從 GitHub 添加插件:
dsh plugin --profile web add github:LAN-TINA-WS/dsh-windows-shell-policy
安裝後重啓 dsh web,打開「設置 → 插件 → 插件配置」開始配置。
npm 安裝¶
下面命令從 npm 添加插件:
dsh plugin --profile web add dsh-windows-shell-policy
然後打開「設置 → 插件 → 插件配置」開始配置。
Release ZIP 安裝¶
先下載 dsh-windows-shell-policy-v*.zip 並解壓,然後使用解壓目錄安裝:
dsh plugin --profile web add link:<解壓目錄>
重啓 dsh web 後,進入「設置 → 插件 → 插件配置」。
開發環境注入器安裝¶
下面命令先構建插件產物:
DSH_CHECKOUT=<checkout> bash scripts/build.sh
生成 lib/index.js 與 lib/client.js 後,注入當前目錄:
dev_inject_plugin <本目錄>
典型用法¶
選擇默認 Shell¶
1、打開「設置 → 插件 → 插件配置」。
2、展開「默認 Shell」卡片。
3、選擇自動、bash 或 pwsh。
4、保存;切換下一次請求生效。
配置顯式 bash 路徑¶
當需要指定 bash 可執行文件路徑時,可配置 settings.yaml 的 shell-policy.bashPath。面板編輯在規劃中,當前可通過配置文件設置。
shell-policy:
bashPath: <本機 bash 可執行文件路徑>
配置後,插件會按探測順序優先讀取顯式 bashPath。
運行依賴¶
插件聲明的 peerDependencies 如下:
@deepseek-ai/dsh-llm >=0.0.1-rc <2
@deepseek-ai/dsh-tools >=0.0.1-rc <2
@deepseek-ai/dsh-subprocess >=0.0.1-rc <2
@deepseek-ai/dsh-settings >=0.0.1-rc <2
@deepseek-ai/dsh-sandbox >=0.0.1-rc <2
@deepseek-ai/dsh-sandbox-policy >=0.0.1-rc <2
@deepseek-ai/dsh-jobs >=0.0.1-rc <2
cordis >=4.0.0-rc <5
schemastery ^3.18.0
@deepseek-ai/dsh-client-ui-slots >=0.0.1-rc <2
適用場景與注意¶
適合誰:
- 在 Windows 下使用 DSH web。
- 希望 agent 執行 shell 命令時使用 bash,或穩定只暴露一個 shell 工具。
- 需要在 bash/pwsh 之間按策略切換,並在重啓後保留配置。
- 需要卸載後還原工具註冊與提示詞狀態。
注意:
- 插件以當前 dsh 進程權限運行;安裝前檢查源碼與許可證。
- 切換 Shell 保存後,下一次請求生效。
- 顯式 bash 時,若未探測到 bash,會回落 pwsh 並提示。
shell-policy.bashPath的面板編輯在規劃中。- 社區目錄是獨立站點,與 DeepSeek / 幻方無官方從屬關係,不要理解爲官方應用商店。
結尾¶
dsh-windows-shell-policy 把 Windows 下的 shell 選擇變成一個可探測、可配置、可持久化、可卸載還原的策略項:它提供 bash 探測、默認 Shell 卡片、bash 工具註冊、提示詞工具面裁剪,以及卸載後還原。
- GitHub 倉庫:https://github.com/LAN-TINA-WS/dsh-windows-shell-policy
- 反饋 issue:https://github.com/LAN-TINA-WS/dsh-windows-shell-policy/issues/1
- 社區目錄頁:已覈實資料未提供 URL。