dsh-all-gitbash:把 Windows 上的 PowerShell 執行改道 Git Bash

前言

DeepSeek Harness (DSH) 在 Windows 平臺默認使用 PowerShell 作爲執行環境。AI 在編寫涉及路徑、管道、變量 $VAR 和條件判斷的 POSIX 語法時,使用 Bash 通常比 PowerShell 更順手。然而,DSH 的默認配置 (dsh-base) 在 Windows 上會禁用 Bash 棧,迫使模型必須寫 PowerShell。dsh-all-gitbash 插件通過運行時改道,讓模型從第一輪對話起就只看到 bash 工具,實際執行的是 Git for Windows 的 MSYS 環境,從而解決這一適配問題。

核心功能

該插件主要實現以下功能:

  1. 運行時改道,免重啓:不修改 composition 或 profile patch,通過注入方式替換執行器,熱重載/卸載即可還原。
  2. 模型側原生 bash:從工具註冊表中移除 pwsh 工具,註冊原生 bash 工具。模型看到的工具描述與 Linux 會話完全一致,無 Windows 或 MSYS 字樣。
  3. 命令翻譯兼容層:自動處理模型偶爾習慣的 PowerShell 語法。包括 $env:NAME → ${NAME}、C:\... → /c/...,確保命令在 Git Bash 中正常運行。
  4. 誠實的沙箱門控:MSYS 在受限令牌沙箱內無法啓動(signal pipe)。插件在受限模式下會快速失敗,並給出升級指引,不會繞過沙箱邊界。
  5. 一鍵開關:通過 Web 設置面板的滑塊或 ~/.dsh/settings.yaml 配置文件,可以隨時開啓或關閉 Git Bash 模式,重啓後保持狀態。

安裝與啓用

持久安裝(推薦)

通過 DSH 的插件系統安裝,重啓後會自動裝配:

dsh plugin --profile web add @icelily/dsh-all-gitbash

臨時注入(開發測試)

無需重啓 DSH,在會話內直接注入:

# 1. 構建(零依賴)
npm run build

# 2. 在 DSH 會話內注入
dev_inject_plugin {"dir": ".../dsh-all-gitbash"}

典型用法

啓用後,模型會直接編寫 Bash 命令。你可以直接運行標準的 npm 腳本:

npm run build
npm run test

配置說明

插件的配置主要在 ~/.dsh/settings.yaml 中管理,核心字段如下:

dsh-all-gitbash:
  enabled: true            # 總開關:false 時還原爲原裝 pwsh
  sandboxGate: true        # 受限沙箱下快速失敗並提示升級
  translateEnvVars: true   # 啓用 $env:NAME -> ${NAME} 轉換
  translateDrivePaths: true # 啓用 C:\... -> /c/... 轉換
  registerBashTool: true   # 註冊原生 bash 工具
  disablePwshTool: true    # 從模型工具面移除 pwsh 工具

注意事項與兼容性

  1. 平臺限制:僅支持 Windows 平臺。
  2. 依賴要求:依賴 Node.js >= 20。
  3. 沙箱限制:MSYS 在受限令牌沙箱內無法啓動,建議在 Git Bash 會話中使用 danger-full-access 權限以獲得最佳體驗。
  4. 兼容性:與 dsh-gitbash-preset 兼容,兩者可同時安裝。本插件主要作用於完整模式的 Web 會話,而 preset 主要作用於極簡模式。

結語

dsh-all-gitbash 通過將 Windows 上的 PowerShell 執行棧重定向到 Git Bash,解決了模型在 Windows 環境下編寫 POSIX 代碼的阻抗不匹配問題。它通過運行時改道、命令翻譯和工具面重構,爲 Windows 上的 DSH 開發提供了一個接近 Linux 原生體驗的解決方案。

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

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

小夜