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。 |