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 的开发者,这是一个实用的工具补充。

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

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

小夜