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 工具沙箱影響。
前置條件¶
在使用此插件前,請確保滿足以下條件:
- Docker Desktop:在 Windows 上運行 Docker Desktop(需使用 WSL2 backend),且
dockerCLI 命令可用。 - 鏡像預熱:需要先執行
docker pull ubuntu:24.04,以避免首次調用時的超時。 - WSL2 發行版:若使用
wsltransport,需在 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。