前言¶
DeepSeek Harness (DSH) 採用插件化架構,模型在執行任務時默認使用 bash 或 PowerShell。dsh-nushell-only 是一個 Profile Bundle,它通過接管 DSH 的 Shell 執行層,將所有 Shell 執行強制轉換爲 Nushell,並配合提示詞教學,防止模型輸出 Bash 或 PowerShell 語法。
功能介紹¶
此插件主要包含四個層面的修改:
-
接管執行層
插件禁用 DSH 內置的bash-sandbox和pwsh-sandbox,替換爲自定義的dsh-nushell-only/executor。所有通過ctx.shell的調用(包括模型工具、後臺任務、Hook 橋接等)都會變成nu --no-config-file -c "<command>"。參數配置(如超時、輸出上限、spill 文件)沿襲第一方實現,僅替換了執行命令。 -
強制守衛
執行器內置守衛機制,拒絕模型切換到其他 Shell(如bash -c、sh -c、cmd /c、pwsh -Command、wsl等)。默認開啓此功能,可通過配置項關閉或設置白名單。 -
教學層
提供nushell-rules和nushell-guide。插件會將模型看到的工具描述和command參數說明改寫成 Nushell 方言,並附帶語法手冊和 Bash/PowerShell 對照表,每次裝配時會帶上探測到的 Nushell 版本號。 -
方言預檢與糾錯
在執行前攔截常見的 Bash/PowerShell 習慣(如2>&1、2>$null、$env:VAR、Get-Content、foreach等),給出具體的 Nushell 寫法建議。執行失敗時,會根據 Nushell 的實際錯誤碼追加提示。
安裝與啓用¶
執行以下命令安裝插件:
dsh plugin --profile web add dsh-nushell-only
安裝完成後,重啓該 Profile。
配置與驗證¶
若 Profile 中已存在舊的 dsh-nushell 插件,必須先卸載以避免衝突:
dsh plugin --profile web remove dsh-nushell
安裝後,可以通過以下命令驗證配置是否生效:
dsh --profile web --dump-config | grep -n "nushell"
配置選項包括:
- enforceNushellOnly: false:關閉強制守衛。
- foreignShellAllowlist:設置允許調用其他 Shell 的白名單。
注意事項¶
- 版本適配:插件適配 DSH
0.2.0-rc.2。 - 運行時要求:Node.js 版本需滿足
>=22.19.0。 - 依賴關係:安裝器會按
peerDependencies校驗運行時版本,不匹配時會拒絕安裝。
結語¶
dsh-nushell-only 適合希望統一 Shell 生態或從零開始培養模型 Nushell 習慣的開發者。通過接管執行層和提示詞層,它強制模型使用 Nushell,減少了環境差異帶來的錯誤。
目錄頁:dsh-nushell-only - SkillHub
源碼:YMRwithNoworry/dsh-nushell-only - GitHub