Releases: 0x1a27/dsh-pwsh-direct
Releases · 0x1a27/dsh-pwsh-direct
Release list
dsh-pwsh-direct v0.2.0
dsh-pwsh-direct 0.2.0
DSH Desktop(Windows)内置 pwsh/shell 工具"空结果"bug 的根治 + 兜底执行工具,2026-08-19 全链路验证通过。
内容
- 根因:DSH 服务器内嵌于 DSH Desktop(Electron)主进程;windows-acl 沙箱链以
process.execPath(Electron exe)作为 runner 的 argv[0],而dsh-subprocess-local的spawnSubprocess从不注入ELECTRON_RUN_AS_NODE=1→ 每条沙箱化命令都启动第二个桌面应用实例,第二实例丢单例锁静默自杀 → 内置pwsh/shell返回完全空结果(exit 0 / 零输出 / 零副作用)。 - 修复:插件在每次启动时自愈该环境注入(覆盖安装副本 + 全部 profile 副本;幂等、可独立执行、DSH 升级冲掉后下次启动自动重补),并提供
pwsh_direct直接 spawn 的绕路工具(窗口期可用)。
安装
# 方式一:按 GitHub 仓库直装(免克隆,推荐)
dsh plugin --profile web add github:0x1a27/dsh-pwsh-direct
# 方式二:npm(无 scope 公共包)
dsh plugin --profile web add dsh-pwsh-direct
# 方式三:本 Release 附带的 dsh-pwsh-direct-0.2.0.zip 离线安装
dsh plugin --profile web add <解压后的 dsh-pwsh-direct 目录>任一方式装完都必须重启 DSH Desktop。
验证证据(2026-08-19)
- S1/S2 A/B(
verify/verify-spawn.mjs):node spawn Electron exe,ELECTRON_RUN_AS_NODE=1时探针以 node 语义运行(exit 0、marker 文件写入);去掉该 env 则无输出、无副作用——与 bug 现象 1:1 对应。 - 1:1 生产链(
verify/verify-runner.mjs):exe-as-node +app.asar.unpacked里的生产 windows-acl runner + 捆绑 koffi + 真实 pwsh → exit 0、输出RUNNER-OK-42;与 DSH Desktop 重启后的生产链行为一致。 - 冒烟(
smoke-test.mjs):进程内功能 / 启动模拟 / 坏环境不抛错,3 场景全过。
文档与快速验收
完整文档(需求 / 生产验收清单 / 安全与副作用 / 排障 / 回滚 / 已知限制)见仓库与包内 README.md。
node dsh-pwsh-direct\lib\electron-runner-heal.mjs # → 所有项 patched / already-patched
pwsh_direct { "command": "Write-Output ok" } # → ok(兜底路径)
node dsh-pwsh-direct\smoke-test.mjs # → SMOKE TEST PASSEDLicense
MIT(见 LICENSE)