前言¶
DeepSeek Harness (DSH) 在 Windows 平臺默認使用 PowerShell 作爲執行環境。AI 在編寫涉及路徑、管道、變量 $VAR 和條件判斷的 POSIX 語法時,使用 Bash 通常比 PowerShell 更順手。然而,DSH 的默認配置 (dsh-base) 在 Windows 上會禁用 Bash 棧,迫使模型必須寫 PowerShell。dsh-all-gitbash 插件通過運行時改道,讓模型從第一輪對話起就只看到 bash 工具,實際執行的是 Git for Windows 的 MSYS 環境,從而解決這一適配問題。
核心功能¶
該插件主要實現以下功能:
- 運行時改道,免重啓:不修改 composition 或 profile patch,通過注入方式替換執行器,熱重載/卸載即可還原。
- 模型側原生 bash:從工具註冊表中移除
pwsh工具,註冊原生bash工具。模型看到的工具描述與 Linux 會話完全一致,無 Windows 或 MSYS 字樣。 - 命令翻譯兼容層:自動處理模型偶爾習慣的 PowerShell 語法。包括
$env:NAME→${NAME}、C:\...→/c/...,確保命令在 Git Bash 中正常運行。 - 誠實的沙箱門控:MSYS 在受限令牌沙箱內無法啓動(signal pipe)。插件在受限模式下會快速失敗,並給出升級指引,不會繞過沙箱邊界。
- 一鍵開關:通過 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 工具
注意事項與兼容性¶
- 平臺限制:僅支持 Windows 平臺。
- 依賴要求:依賴 Node.js >= 20。
- 沙箱限制:MSYS 在受限令牌沙箱內無法啓動,建議在 Git Bash 會話中使用
danger-full-access權限以獲得最佳體驗。 - 兼容性:與
dsh-gitbash-preset兼容,兩者可同時安裝。本插件主要作用於完整模式的 Web 會話,而 preset 主要作用於極簡模式。
結語¶
dsh-all-gitbash 通過將 Windows 上的 PowerShell 執行棧重定向到 Git Bash,解決了模型在 Windows 環境下編寫 POSIX 代碼的阻抗不匹配問題。它通過運行時改道、命令翻譯和工具面重構,爲 Windows 上的 DSH 開發提供了一個接近 Linux 原生體驗的解決方案。