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。

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

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

小夜