dsh-shell-wsl:在 Windows 上爲 DSH 提供真實的 Linux Bash 執行環境

DSH 在 Windows 上默認暴露 pwsh,禁用官方的 bash 工具。社區中常見的解決方案(如 Git Bash 或直接使用 WSL 發行版)存在隔離性差、狀態殘留或難以集成官方權限預設等問題。dsh-shell-wsl 插件通過在 disposable Docker 容器中運行 bash 命令,解決了這些痛點。它不需要模型感知任何新的工具,模型繼續調用官方的 bash 工具,但底層執行環境被替換爲真實的 Linux 容器。

核心功能

  • 容器化執行:在 disposable Docker 容器中運行 bash 命令,每次調用後自動銷燬容器,確保環境無污染。
  • 真實 Linux 環境:提供真實的 Linux bash 執行環境(基於 WSL2 kernel + Ubuntu 24.04),支持 Linux 二進制和標準進程語義。
  • 權限預設集成:自動集成官方權限預設,根據會話策略(如 read-only 或 workspace-write)自動配置掛載權限。
  • 零工具層變更:模型繼續使用官方 bash 工具,無需學習新的接口或工具定義。
  • 宿主機運行:插件本身運行在宿主機進程中,不受 agent 工具沙箱影響。

前置條件

在使用此插件前,請確保滿足以下條件:

  1. Docker Desktop:在 Windows 上運行 Docker Desktop(需使用 WSL2 backend),且 docker CLI 命令可用。
  2. 鏡像預熱:需要先執行 docker pull ubuntu:24.04,以避免首次調用時的超時。
  3. WSL2 發行版:若使用 wsl transport,需在 WSL2 中安裝至少一個發行版(如 Ubuntu)。

安裝與啓用

1. 安裝插件

dsh plugin --profile web add dsh-shell-wsl

2. 啓用預設

安裝後,需要啓用 WSL 容器預設以激活功能。在 Web UI 中,可以通過以下腳本啓用默認預設:

powershell -ExecutionPolicy Bypass -File <plugin dir>\scripts\install-preset.ps1 -SetDefault

或者手動將 presets/wsl-container/ 目錄複製到 ~/.dsh/.agent-presets/wsl-container/,並在 Web 設置頁面切換默認預設爲 WSL 容器模式。

配置

1. Bash 超時配置

在 ~/.dsh/settings.yaml 中設置 Bash 命令的超時時間:

bash:
  timeoutMs: 120000

2. Shell 屬性配置

在 cordis.patch.yml 中修改 shell-wsl 的配置項,例如切換傳輸方式或容器鏡像:

- id: shell-wsl
  config:
    transport: docker-cli
    image: ubuntu:24.04

適用場景與注意

此插件適合需要在 Windows 環境下進行 Linux 開發、測試或自動化任務,且對環境隔離和權限控制有要求的場景。

注意事項:
* 插件以宿主機進程權限運行,請確保安裝前檢查源碼與許可證。
* 依賴 Docker Desktop 服務,無法在純 WSL 內部通過原生 WSL 調用 Docker 時使用 wsl transport。

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

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

小夜