dsh-msys2-bash-executor:Windows 平台的可配置 Bash 执行器

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,需从本地构建并打包安装。

  1. 在插件目录下运行检查与打包命令。
  2. 使用 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\bin
    • C:\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 仓库。

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

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

小夜