← 返回列表
未验证
修掉 DSH 在 Windows 上"弹一下终端窗口"的问题——运行命令时屏幕闪一个黑窗口又消失,打字都被打断。
尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/8/15 · 已提供中文文档
补丁:阻止 DSH 在 Windows 上闪现控制台窗口(对沙箱使用 STARTF_USESHOWWINDOW+SW_HIDE,对子进程使用 windowsHide)
综合分
28.1
GitHub 分
28.1
用户评分
—
★ Stars
2
周下载量
—
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add Culeot/dsh-no-console-flash该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
数据截至 2026/9/18(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动
README
dsh-no-console-flash 修掉 DSH 在 Windows 上"弹一下终端窗口"的问题——运行命令时屏幕闪一个黑窗口又消失,打字都被打断。 问题 DSH 在 Windows 上执行命令(沙箱里的 pwsh/bash、普通子进程)时,如果宿主没有控制台(桌面启动、后台服务、双击图标),Windows 会给每个子进程新建一个可见的控制台窗口,闪一下再关闭。 三个官方讨论区帖子都报了这个: - #1344:沙箱子进程弹出可见控制台,给出了修复方案 - #1102:无控制台宿主下 shell 命令弹 PowerShell 窗口 - #1142:工作时频繁弹出 CMD 窗口 为什么直接隐藏窗口会崩(关键背景) 不能简单加 CREATE_NO_WINDOW——DSH 的 Windows ACL 沙箱用受限令牌跑子进程,隐藏控制台会让子进程死于 STATUS_DLL_INIT_FAILED (0xC0000142)(DLL 初始化失败,#810 有详细记录)。所以正确做法是 #1344 的方案:保持 dwCreationFlags = 0,改用 STARTUPINFO 的 STARTF_USESHOWWINDOW + SW_HIDE,把新建的控制台窗口设为隐藏。 补丁改了什么(共享层 + 各 profile 副本) | 文件 | 改动 | 来源 | |---|---|---| | dsh-sandbox-windows-acl/lib/types-.js | 两处 spawn:dwFlags: 256 → 257(加 STARTF_USESHOWWINDOW),新增 wShowWindow: 0(SW_HIDE) | #1344 方案 | | dsh-subprocess-local/lib/index.js | spawn 加 windowsHide: true | #1102 方案 | 两条路径都覆盖:沙箱命令路径(最常弹)+ 通用子进程路径。 补丁同时作用于共享层以及各 profile 的独立副本(profiles/web、profiles/headless 各有自己的 node_modules)。DSH Web GUI 跑在 web profile 下,profile 副本不补的话命令照样弹窗——脚本一次运行全部处理。 用法 node patch.cjs 默认补 ~/.dsh;指定其他 DSH_HOME 就传路径: node patch.cjs C:/path/to/other/.dsh - 幂等:重复运行不会重复改动(已验证) - 有备份:每个改动的文件旁边存 .noconsole.bak,想还原就拷回去 - 升级后重跑:DSH 升级会覆盖 node_modules,重新执行一次即可 验证 功能:补丁后沙箱命令仍正常 dsh --profile headless "用 pwsh 执行 echo hello" 预期输出 hello 弹窗:从无控制台方式启动 DSH(双击图标/服务),跑任意命令 预期:不再闪窗口 本机已验证: - 补丁前后沙箱命令输出一致(功能无回归) - 隐藏窗口子进程检测:hwnd=0 visible=no-window(SW_HIDE 生效) - 脚本幂等:重跑全部 skip 兼容性 - 只改 Windows 路径(dsh-sandbox-windows-acl 仅 Windows 生效;windowsHide 在非 Windows 被 Node 忽略) - 不影响 stdio 管道、沙箱权限、退出码 - 不影响有控制台的终端启动方式(继承宿主控制台,本来就不弹) License MIT
同作者(Culeot)的其他插件
扫码进群