前言¶
DeepSeek Harness (DSH) 是一個用於構建智能體的框架。在實際開發中,如果智能體運行在 WSL 或 Linux 環境下,需要操作 Windows 原生的 Git 倉庫,或者直接調用 Windows 下的可執行文件,通常會面臨跨系統交互的複雜性。
dsh-plugin-gitbash 插件解決了這個問題。它允許 DSH 在宿主機的 Git for Windows Bash 環境中執行命令,無需在 Windows 和 WSL 之間頻繁切換會話。
插件定位¶
這是一個自包含的零依賴 Cordis 插件。它註冊了一個名爲 gitbash 的模型工具。插件本身不依賴外部運行時,僅使用 Node.js 內置模塊。
核心功能¶
- 直接調用 Windows Git Bash:在 DSH 會話中直接執行 Windows 端的命令。
- 零依賴:不需要安裝額外的系統依賴,僅作爲 Cordis 插件加載。
- 路徑自動檢測:插件具備 WSL 感知能力,能夠自動檢測 Git Bash 的安裝路徑。
- 無狀態設計:每次調用都會啓動一個新的進程,不保存工作目錄或環境變量狀態。
安裝與啓用¶
安裝插件需要使用 DSH 的 profile 命令。安裝後需要重啓 profile 才能生效。
dsh plugin --profile <name> add dsh-plugin-gitbash
安裝完成後,重啓 profile(通過 dsh web 或 dsh --profile <name>)即可加載 gitbash 工具。
如果需要在 npm 發佈前手動安裝,可以使用 GitHub URL:
dsh plugin --profile <name> add https://github.com/Jinsight-gif/dsh-plugin-gitbash
配置說明¶
插件的配置項位於 bundle row 或 agent preset 的配置表中。
| 配置項 | 類型 | 默認值 | 說明 |
|---|---|---|---|
gitBashPath |
string | - | 顯式指定 bash.exe 的路徑,插件會直接信任該路徑,不進行檢測。 |
autoDetect |
boolean | true |
當未設置 gitBashPath 時,是否自動搜索常見的安裝位置。 |
timeoutMs |
number | 120000 |
單次命令調用的超時時間(毫秒)。 |
maxOutputChars |
number | 65536 |
捕獲的 stdout/stderr 輸出會被截斷至該字符數,防止流過大。 |
路徑解析順序:
1. 配置項 config.gitBashPath
2. 環境變量 DSH_GITBASH_PATH
3. 自動檢測(僅在 autoDetect: true 時生效)
典型用法¶
使用該插件時,可以通過配置顯式路徑或環境變量來指定 Git Bash 的位置。
方式一:配置顯式路徑
- id: tool-gitbash
name: 'dsh-plugin-gitbash'
config:
gitBashPath: '/mnt/e/Program Files/Git/bin/bash.exe'
方式二:使用環境變量
export DSH_GITBASH_PATH='/mnt/e/Program Files/Git/bin/bash.exe'
適用場景與注意¶
- 適用場景:在 WSL 或 Linux 環境下運行 DSH,但需要操作 Windows 原生的 Git 倉庫(使用 Windows 版的
git命令),或者執行 Windows 可執行文件(.exe),以及使用原生 Windows 路徑(如D:\...或/d/...)。 - 路徑語義:這是關鍵點。在
command中執行的是 Windows Git Bash,因此必須使用 Windows 路徑(如/d/tools或D:/tools)。WSL 的/mnt/...路徑在命令內部無效。 - 工作目錄:
workdir參數會被映射,支持/mnt/X/...、/X/...或X:\...等形式。如果傳入無法映射的 WSL 獨有路徑(如/home/...),調用將在會話工作目錄下開始,而不是報錯。 - 無狀態:每次調用都是一個新的進程,
cwd、環境變量和 shell 函數不會在調用之間保留。如果需要鏈式操作,請在同一條命令中完成(例如cd /d/tools && git status)。
結尾¶
dsh-plugin-gitbash 提供了一個在 DSH 環境中無縫調用 Windows Git Bash 的能力,適合需要在 Linux/WSL 環境下操作 Windows 文件系統的開發者。
更多詳情與源碼,請訪問:GitHub 倉庫