前言¶
在 DeepSeek Harness (DSH) 的使用場景中,模型代理經常需要執行 Linux 命令。傳統的做法通常是編寫 .sh 腳本或 pwsh 包裝器。dsh-wsl 插件解決了這個問題,它允許模型代理直接通過 wsl.exe 運行 Linux 命令,無需手寫腳本。它在命令執行層面匹配原生 Linux DSH 的行爲,包括真實的 Linux 內核和 bash 環境、退出碼與信號處理、超時機制、輸出截斷以及後臺作業管理。
插件介紹¶
該插件是面向模型的 WSL 工具插件,旨在簡化 Windows 環境下的 Linux 命令執行流程。
- 插件名稱:
dsh-wsl(倉庫)/dsh-wsl-tool(NPM 包名) - 維護者:XINY11451
- 類別:聯網工具
- 開源協議:MIT
安裝¶
通過 DSH 的插件管理器安裝:
dsh plugin add --profile <profile> dsh-wsl-tool
安裝後,插件會在 Bundle 加載時自動註冊 tool-wsl。不要在預設(preset)中手動列出 tool-wsl,因爲 DSH 已經在全局範圍內註冊了該工具,重複註冊會導致錯誤。
核心功能¶
插件註冊了三個工具,分別用於命令執行、路徑轉換和環境探測。
1. wsl:運行 Linux 命令¶
通過調用 wsl.exe 執行命令。默認行爲等同於在 WSL 中直接運行。
- 命令格式:
wsl.exe [-d <distro>] -e bash -lc "cd <workdir> && <command>" - 返回內容:包含
stdout、stderr以及退出碼、超時或截斷標記。 - 長腳本支持:如果命令長度超過 Windows 命令行限制(32767 字符),內容會通過
stdin傳遞給wsl.exe,避免截斷。 - 後臺作業:設置
runInBackground: true可以將命令作爲後臺任務運行,返回任務 ID,需配合@deepseek-ai/dsh-tool-jobs預設使用。
2. wsl-path:路徑轉換¶
利用 wslpath 工具在 Windows 和 WSL 路徑之間轉換。
- 自動檢測:根據路徑格式自動判斷轉換方向。
- 手動指定:通過
direction: 'win' | 'linux'強制指定方向。 - 示例:
C:\Users\me\a.txt->/mnt/c/Users/me/a.txt
3. wsl-env:環境摘要¶
探測並返回 WSL 環境的詳細信息,幫助代理在執行前判斷環境能力。
- 信息項:發行版列表、內核版本、架構、CPU 核心數、內存和磁盤使用量、systemd 狀態、Docker 安裝情況、GPU 直通狀態、掛載驅動等。
- 容錯性:未探測到的項會顯示爲空或特定狀態(如
docker: not installed)。
典型用法¶
執行 Linux 命令¶
wsl command: "echo hello"
執行後返回類似 [exit code: 0] 的結果。
轉換路徑¶
wsl-path C:\Users\me\project
返回:/mnt/c/Users/me/project
獲取環境信息¶
wsl-env
返回包含內核版本、CPU 核心數、內存狀態、驅動掛載點等信息的摘要。
注意事項與限制¶
- 沙箱限制:
wsl調用運行在 DSH 沙箱之下,這意味着文件策略無法限制該插件的執行,必須依賴系統層面的權限控制。 - 文件系統語義:如果項目位於 Windows 驅動器(如 C: 或 D:)上,文件系統保持 Windows 語義。這包括不區分大小寫、無 POSIX 權限以及無文件變更通知,且訪問速度較慢。
- 後臺作業依賴:使用後臺作業功能時,必須在預設的 Composition 中包含
@deepseek-ai/dsh-tool-jobs,否則調用會失敗。 - 註冊衝突:如前所述,不要在預設中手動註冊
tool-wsl,否則會報錯tool "wsl" is already registered in this scope。
結語¶
dsh-wsl 爲 DeepSeek Harness 提供了原生的 Linux 命令執行能力。通過直接調用 wsl.exe,它減少了開發者在腳本包裝上的工作,並提供了標準化的環境探測能力。在使用時,需注意其運行在 DSH 沙箱之下以及 Windows 驅動器上的文件系統限制。
- 目錄頁:https://www.skillhub.cn/plugins/XINY11451/dsh-wsl
- GitHub 倉庫:https://github.com/XINY11451/dsh-wsl