dsh-win-multi-bash:Windows 多 Shell 環境插件

前言

DeepSeek Harness (DSH) 爲 Agent 開發提供了一個統一的 ctx.shell 接口。在 Windows 環境下,開發者經常需要調用 Git Bash 或 WSL 來執行特定的 Linux/MSYS 命令。dsh-win-multi-bash 插件通過引入 shell-select 執行器和額外的模型工具,解決了單一 Shell 接口無法直接調用這些環境的問題,同時保持了對原生 PowerShell (pwsh) 的兼容性。

插件定位

這是一個由 Dinosaur-MC 維護的客戶端插件,開源協議爲 MIT。它擴展了 DSH 的 Shell 能力,支持在同一個 ctx.shell 上下文中路由請求至 Git Bash、WSL 和 PowerShell。

核心功能

插件主要提供以下能力:

  1. 模型工具:新增 git_bash 和 wsl_bash 兩個模型工具,分別對應 MSYS 和 Linux 兩種方言。
  2. 執行器:引入 shell-select 執行器,負責將 request.shell 或默認路由分配給具體的後端。
  3. 路由策略:默認路由保持爲 pwsh,確保在不調用特定 bash 家族工具時,現有行爲不變。
  4. 自動檢測:支持自動檢測 Git Bash,檢測順序包括 PATH、註冊表、Git 安裝根目錄佈局等。
  5. 沙箱支持:支持多種沙箱機制(auto、bwrap、windows-acl),並支持 requireSandbox 配置項。

安裝與啓用

當前源文本未提供具體的安裝命令字符串。建議通過以下鏈接查看倉庫或插件目錄獲取安裝指引。

  • GitHub: https://github.com/Dinosaur-MC/dsh-win-multi-bash
  • 技能目錄: https://www.skillhub.cn/plugins/Dinosaur-MC/dsh-win-multi-bash

典型用法

配置沙箱要求

在 cordis.patch.yml 中,可以爲後端配置 requireSandbox 以拒絕未限制的運行:

# cordis.patch.yml
config:
  backends: [git-bash, wsl-bash, pwsh]
  default: pwsh
  gitBash: { requireSandbox: true }
  wslBash: { requireSandbox: true }

啓用 WSL 沙箱

wsl_bash 的沙箱機制依賴於發行版內的 bubblewrap。在 Ubuntu/Debian 發行版中安裝:

wsl.exe -d Ubuntu-24.04 -e sudo apt-get install -y bubblewrap
wsl.exe -d Ubuntu-24.04 -e bash -c "command -v bwrap && bwrap --version"

安裝後,必須重啓 dsh web 進程(或觸發 Shell 設置重建)以重新探測沙箱狀態。

路徑轉換處理

Git Bash 會自動將 POSIX 路徑轉換爲 Windows 路徑。如果需要將命令原樣傳遞給 Windows 原生程序(如 wsl.exe),需設置 MSYS_NO_PATHCONV=1:

MSYS_NO_PATHCONV=1 wsl.exe -e ls /root

適用場景與注意

  • 沙箱限制:git_bash 通常無法在 Git for Windows 部署中完全沙箱化,沙箱機制有時會退化爲無限制運行;wsl_bash 的沙箱依賴發行版內的 bubblewrap。
  • 拒絕分類:沙箱拒絕行爲僅在命令退出碼非零時被分類。
  • 沙箱範圍:沙箱僅限制文件操作(workspace-write / read-only),不限制網絡及其他資源。
  • 版本要求:插件依賴 @deepseek-ai/cordis 及相關 DSH 組件,要求 Node.js 版本爲 ^22.19.0 || >=24.0.0。
  • 路徑兼容:在使用 Git Bash 工具時,MSYS 路徑需轉換爲 Windows 路徑(如 /d/WorkSpace/foo 轉 D:\WorkSpace\foo)供 DSH 的文件工具使用,反之在 Bash 內部則使用 MSYS 路徑。

總結

dsh-win-multi-bash 爲 Windows 下的 DSH Agent 開發提供了靈活的 Shell 路由能力,支持 Git Bash 和 WSL 的集成,並提供了基礎的沙箱防護機制。對於需要在 Windows 環境下混合使用多種 Shell 的開發者,這是一個實用的工具補充。

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

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

小夜