dsh-shell:爲 DSH 智能體與持久終端選擇 Shell

前言

DeepSeek Harness(DSH)裏,智能體的一次性命令和 minimal 持久終端默認走官方組裝的執行器。若你習慣 Zsh 的插件鏈、fish 的提示符,或在 Windows 上依賴 Git Bash、MSYS2、WSL,希望命令與交互終端落在同一套 Shell 上,就需要在客戶端側顯式指定環境,而不是每次手動改調用方式。

下面介紹社區插件 dsh-shell(維護者 Luca4Don3,分類:客戶端)。它在 DSH 插件體系裏負責爲智能體命令與持久終端選擇 Shell,並支持 v0.3.0 新增的 Default Native Passthrough(與 DSH 0.2.0-rc.2 對照驗證)。配置在 Cordis 組合階段生效,保存後需重啓 DSH 並新建會話,不能當作運行中熱切換。

這是什麼

dsh-shell 是 DSH 插件:爲智能體一次性命令與持久終端選擇 Shell,覆蓋 Bash、Zsh、fish、PowerShell、Git Bash、MSYS2、Cygwin、WSL 等(以本機檢測到的安裝爲準)。

DSH 社區插件目錄(如 SkillHub)爲獨立站點,與 DeepSeek / 幻方無官方從屬關係;安裝前請自行查看源碼與許可證。插件以當前 DSH 進程權限運行,選型與沙箱策略需結合下文限制一併考慮。

三種運行模式

README 用表格說明三種選擇及其行爲,寫作配置時以資料爲準:

選擇 行爲
auto 保留 dsh-shell 既有執行器、啓動與導出環境繼承邏輯;不是原生直通。
default 直接組裝 DSH 官方沙箱化 Bash(POSIX)或 PowerShell(Windows)執行器,保留官方預設工具、終端後端與持久化工具。
檢測到的 Shell / 舊版 Shell 名稱 手動選擇;既有 Shell 適配器與啓動行爲仍可用。

default 不會實例化 SelectedExecutor、不包裝 Shell 命令、不收集 login-shell 環境、不注入 dsh-shell 啓動代碼,也不改寫工具註冊或 Job 種類;Bash 任務仍保持官方 kind: 'bash' 及 ID、生命週期、取消、超時與輸出管理。父環境清理、允許的 env/dshEnv 注入、沙箱與審批策略與官方 DSH 一致。

配置在 Cordis 組合 時選定,而非命令執行瞬間切換。官方執行器行仍爲 disabled 聲明;assembly 插件只加載一個官方或所選執行器。default 讀取原始官方行的配置(含用戶覆蓋),而非所選執行器的 timeout;隨包 POSIX 超時 60s,PowerShell schema 默認 120s。

可選環境

僅列出本機檢測到的安裝,探測路徑包括常見位置、PATH、/etc/shells、Git 註冊表,以及 MSYS2_ROOT / CYGWIN_ROOT。POSIX ID 由安裝路徑派生,避免其他安裝變更後失效;舊名稱如 bash 仍會選擇該家族的第一個安裝。

平臺 可選
macOS / Linux Bash、Zsh、sh、dash、ksh、mksh、ash、fish、csh、tcsh
Windows PowerShell 7、Windows PowerShell、Git Bash、MSYS2、Cygwin、WSL

安裝與啓用

桌面端

  1. 側欄打開 Plugins。
  2. 點擊 Add plugin,粘貼下列 spec 之一。
  3. 選擇 Enable now,然後重啓 DSH。
github:Luca4Don3/dsh-shell
/absolute/path/to/dsh-shell

github: spec 經 HTTPS 從 codeload.github.com 下載;npm 鏡像不代理該地址,主機需能訪問 GitHub。

CLI 管理的 Web profile

add 會同時安裝並選中 bundle;仍需重啓 DSH 以完成組合:

dsh plugin --profile web add github:Luca4Don3/dsh-shell
# 或本地路徑
dsh plugin --profile web add /absolute/path/to/dsh-shell

典型用法

  1. 打開 Plugins → dsh-shell,選擇 Shell(若選 WSL,按提示選發行版)。
  2. 保存後重啓整個 DSH 運行時,並新建會話。
  3. 新裝 Shell 環境後,再重啓一次以刷新列表。

不同 Shell 的啓動文件加載順序(節選):

選擇 啓動
Zsh .zshenv、.zprofile、.zshrc、.zlogin,尊重 ZDOTDIR
POSIX Bash /etc/profile,再按順序嘗試 .bash_profile、.bash_login、.profile;僅當以上都不存在時纔讀 .bashrc
其他 POSIX 先加載用戶原 Shell,並攜帶已導出變量
Windows Bash 能力檢查通過後,與 POSIX Bash 相同的 profile 規則;是否 source .bashrc 由 profile 控制

default 使用官方平臺工具名。手動模式下工具名跟隨實際運行的 Shell(如 zsh、fish;Windows Bash 環境仍報 bash),並附帶對應語法說明。自定義 preset 可指向 dsh-shell/tool-posix 或 dsh-shell/tool-windows。

Profile 補丁中的 shellPath 可用同族可執行文件覆蓋檢測結果;不能與 auto、default 或 wsl 同時使用。模式僅在啓動時生效:保存後必須重啓並新開會話;在同一運行時改選並重新啓用插件會報需重啓錯誤。

預設與自定義

隨包四個預設(preset-standard、preset-ptc、preset-cordis、preset-minimal)不再整段重寫;運行時配置鉤子僅在 Auto/Manual 下適配上述 carrier,default 不改它們的配置。用戶插件行、嵌套組、表達式與覆蓋會保留;獨立自定義 preset 不會自動改寫,可選用 dsh-shell/preset 或既有適配器 opt-in,全局執行器仍跟隨所選模式。

適用場景與限制

適合誰

  • 希望智能體命令與 minimal 持久終端統一落在指定 Shell 的 DSH 用戶。
  • macOS / Linux 上需要 Zsh、fish 等;Windows 上需要 PowerShell 系列或類 Unix 環境(Git Bash、MSYS2 等)。
  • 需要 default 模式貼近官方沙箱 Bash/PowerShell,又希望通過插件在 UI 中集中選型。

務必知曉的限制

  • WSL 需要 danger-full-access,在受限模式下會失敗;其他 Windows Shell 仍走 DSH 沙箱。
  • v0.3.0 聲明的對等版本爲 DSH 0.2.0-rc.2;其他 DSH 版本需自行驗證,不能假設兼容。
  • 配置保存不會 live-switch Shell;啓用/禁用/升級/降級 bundle 後都要重啓。assembly 失敗時 rc.2 可保持 GUI 運行,但應在跑命令前解決錯誤。
  • 勿移動官方執行器行與 dsh-shell/assembly 的 loader 作用域;自定義 executor scope(isolate/intercept/inject)或把 native 行挪到其他組會顯式失敗。
  • 獨立自定義 preset 不會自動適配;全局手動選了非 Bash 時,官方工具描述可能仍寫 Bash,需用 opt-in 適配器。
  • README 說明:macOS 15+ (arm64) 與 DSH 0.2.0-rc.2 有完整驗證;Windows / WSL 在模擬平臺上斷言,無原生 Windows 主機驗收;Linux CI 未納入隨包 workflow。

升級、禁用與回滾:README 建議備份 profile 並保留上一版安裝 spec/commit(正文截斷處亦指向該流程,具體操作以倉庫 Upgrade, disable and rollback 章節爲準)。

結尾

dsh-shell 把「智能體命令 + 持久終端用哪套 Shell」收成客戶端插件配置:Auto 保留既有適配行爲,default 對齊官方沙箱執行器,手動項覆蓋本機多 Shell 與 Windows 側常見環境。安裝 spec 以 README 爲準,改選後重啓 DSH 並新開會話即可生效。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜