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 進程權限直接執行命令,執行高危操作時請務必謹慎。
- 插件會修改 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。 |