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 倉庫。