DeepSeek Harness (DSH) 在 Windows 平台运行时,默认的交互方式通常依赖 PowerShell。如果需要在智能体会话中调用 MSYS2、UCRT64 或 Git Bash 环境,直接依赖系统配置往往不够稳定。本文介绍一个独立的执行器插件,用于在 DSH 中直接调用这些 Bash 环境。
插件简介¶
dsh-msys2-bash-executor 是一个独立、可配置的 Bash 执行器,由用户 3223698962 维护。它旨在解决 DSH 在 Windows 上原生不支持 Unix Shell 的问题。该插件通过 DSH 的 subprocess 服务直接处理 argv,不使用 Node.js 的 shell: true 模式,从而提供更可控的进程管理。
核心功能¶
- 直接
argv生成:绕过 Node.js 的shell: true模式,直接传递参数数组。 - 自动检测:自动识别 MSYS2、UCRT64、Git Bash 以及 PATH 中的
bash。 - 配置灵活:可配置可执行文件、Bash 参数、PATH 前缀及环境变量。
- 进程管理:支持超时、中止、输出限制、后台作业、增量读取及进程树终止。
- 界面支持:DSH Web 设置页面提供中英文配置卡片。
- 激活模式:支持全局激活或针对特定预设(Standard、Code、Cordis、Minimal 等)单独激活。
- 特殊处理:针对 Minimal 预设提供影子处理,绕过 DSH 不支持的 Windows 持久终端检查路径。
安装与启用¶
该插件当前未发布至 npm,需从本地构建并打包安装。
- 在插件目录下运行检查与打包命令。
- 使用
dsh命令将本地包安装到 Web 配置文件。
npm.cmd run check
npm.cmd pack
dsh plugin --profile web add "C:\path\to\dsh-msys2-bash-executor-0.1.1.tgz"
安装或更新后需重启 dsh web。激活变更仅对新创建的会话生效,运行中的会话保持其初始工具集。
典型用法¶
Web 界面配置¶
打开 DSH Web 设置,进入 Plugins -> Configurable plugins 标签页,找到 MSYS2 / Git Bash 卡片进行配置。
UCRT64 配置示例¶
如果 DSH 未从现有的 UCRT64 终端启动,典型的配置如下:
- Bash executable:
C:\msys64\usr\bin\bash.exe - PATH entries to prepend:
C:\msys64\ucrt64\binC:\msys64\usr\bin
- Environment variables:
{"MSYSTEM":"UCRT64","CHERE_INVOKING":"1"}
手动挂载(进阶)¶
若需在特定预设中手动挂载 Shell 组,可在 agent.cordis.yml 中添加以下配置:
- id: shell-bash
name: cordis:group
group: true
isolate:
shell: true
config:
- id: msys2-bash-executor
name: dsh-msys2-bash-executor/bash-executor
disabled: !!js process.platform !== 'win32'
- id: tool-bash
name: '@deepseek-ai/dsh-tool-bash'
适用场景与注意¶
适用场景¶
适合需要在 DSH 智能体中运行 MSYS2 或 Git Bash 工具链的场景,例如需要使用 Unix 命令行工具、配置特定环境变量的开发任务。
安全与兼容性注意事项¶
- 非沙箱化:该执行器无沙箱保护。它以 DSH 进程的完整权限运行,等同于
danger-full-access。它不提供 PowerShell 沙箱执行器所使用的 Windows ACL 沙箱。仅在与受信任的提示、仓库和工具配合使用时使用。 - 路径格式:在 Web 设置卡片中使用 Windows 路径(例如
C:\msys64\...),因为可执行文件由 Windows Node 生成。 - Node 版本:必须使用原生 Windows Node 启动 DSH。MSYS2 构建的 Node 与当前 DSH Windows 启动器不兼容。
- 子系统校准:如果 Bash 启动错误的 MSYS2 子系统(例如在 MinGW 环境中运行了 UCRT64 工具),请设置
MSYSTEM环境变量并确保将匹配的工具链目录添加到 PATH 前缀中。
该插件为 DSH 在 Windows 下的 Shell 执行提供了独立且可控的解决方案。更多细节可参考插件目录页或 GitHub 仓库。