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。
羽毛球分组比赛记分
小程序二维码

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

小夜