dsh-pwsh-direct:DSH Desktop 內置 pwsh/shell 空結果修復與兜底工具

DSH Desktop 將服務器內嵌於 Electron 主進程。調用內置 pwsh 或 shell 時,返回完全空結果:命令沒有執行,沒有任何副作用(文件不創建、進程不啓動),GUI 顯示空白或 “(no output)”。

本插件旨在修復此問題。它通過自愈機制修復 DSH 沙箱 runner 的環境變量注入缺失,並提供 pwsh_direct 工具在修復生效前或升級沖掉補丁後,直接通過 Node.js 子進程調用 PowerShell。

插件概覽

  • 插件名:dsh-pwsh-direct
  • 一句話描述:DSH Desktop(Windows)內置 pwsh/shell 空結果 bug 修復 + pwsh_direct 直啓兜底工具
  • 維護者:0x1a27
  • 分類:客戶端
  • 許可證:MIT

核心功能

1. 自愈(根治)

每次 DSH 啓動時,插件會將已安裝的 dsh-subprocess-local(包括安裝目錄副本和所有 profile 副本)打上補丁。它在沙箱 runner 的 spawn 環境中注入 ELECTRON_RUN_AS_NODE=1。重啓 DSH Desktop 後,內置 pwsh/shell 即恢復正常。

2. pwsh_direct 兜底工具(繞路)

在重啓生效前的窗口期,或 DSH 升級導致補丁被沖掉時,可直接使用 pwsh_direct spawn PowerShell 可執行文件。該方式完全繞過 DSH 子進程服務層,以 DSH 進程權限直接執行命令。

安裝與啓用

安裝命令如下:

dsh plugin --profile web add <插件目錄路徑>

注意事項:
* 安裝時必須使用 --profile 參數(本地路徑生成 link: 依賴)。
* 安裝後必須重啓 DSH Desktop,自愈機制纔會生效。

卸載命令:

dsh plugin --profile web remove dsh-pwsh-direct

使用示例

檢查自愈狀態:

node lib\electron-runner-heal.mjs

使用兜底工具執行簡單命令:

pwsh_direct { "command": "Write-Output ok" }

運行冒煙測試:

node smoke-test.mjs

環境與限制

  • 平臺:僅限 Windows 平臺。
  • Node 版本:Node.js >= 20。
  • 權限要求:
    • 插件會修改 DSH 安裝目錄(Program Files)和 profile 目錄下的文件。若出現 write-failed,需以管理員身份運行一次 DSH Desktop。
    • pwsh_direct 無沙箱,以 DSH 進程權限直接執行命令,執行高危操作時請務必謹慎。
  • 依賴:
    • @deepseek-ai/dsh-tools(可選 peer,由 DSH 宿主環境提供)。
    • @chaggle/dsh-powershell-check(可選 peer,用於 PowerShell 坑位門禁)。

常見排障

症狀 可能原因 處理
重啓後內置 pwsh 仍空 安裝副本未打上(write-failed),或重啓未真正生效 執行 node lib\electron-runner-heal.mjs 查看狀態。若出現 write-failed,以管理員身份啓動 DSH Desktop 一次並重啓。
宿主日誌報錯無法解析 peer 插件未安裝到提供該 peer 的 profile 使用 dsh plugin --profile <name> add <path> 將插件安裝到正確的 profile。
羽毛球分组比赛记分
小程序二维码

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

小夜