Windows 下 pwsh/子进程执行闪现黑色控制台窗口(spawn 缺 windowsHide) #3460
Replies: 7 comments
|
已按 rc.8( 根因确认: 单点修复即覆盖整条调用链: In-tree 先例(模式已确立,subprocess-local 是例外):
次要修复点: 不受影响: 两点提醒:
修复体量:1 行主修复 + 1 行次要 + 1 个 mock 回归测试,PR-ready。 |
|
更新:第一层补丁(
第二层修复(用户态参数,规避 ABI 限制):给 pwsh argv 注入 完整补丁(两处,均为 node_modules 内单行级改动):
|
|
你这个实测闭环很扎实——0xC0000142 的 ABI 约束正是我在首回里提示的那个交互(sandbox-windows-acl README 记录的受限令牌下 CREATE_NO_WINDOW 崩溃),现在被你的深挖实证确认了。也修正我首回的一个覆盖范围假设:windowsHide 只覆盖 对第二层修复( 1. 机制区分:你的实证证据不能直接迁移到 argv 注入方案。 2. 第三修复点(更通用、无闪现):直接在 runner 的 STARTUPINFOW 写 SW_HIDE。 export const STARTF_USESHOWWINDOW = 0x00000001
export const SW_HIDE = 0两处 3. 两层补丁的关系:沙箱链(本方案/argv 注入)盖沙箱拉起的 pwsh; |
|
已按第三修复点落地验证(本机 DSH 桌面版):
待 DSH 桌面版重启后实测确认沙箱链 pwsh 无黑窗。感谢三处修复点的完整指引(windowsHide 盖非沙箱链 + STARTUPINFOW SW_HIDE 盖沙箱链 + taskkill teardown 次要点,后者待官方 PR 一并处理)。 |
|
非常感谢维护者的快速响应和细致排查——从首回确认根因、指出 in-tree 先例,到第二回给出 STARTUPINFOW 这一层的更优解法,三处修复点(windowsHide 盖非沙箱链、STARTUPINFOW SW_HIDE 盖沙箱链、taskkill teardown 次要点)梳理得非常清晰专业,还贴心地说明了回归测试的 mock 模式和受限令牌 ABI 的交互约束,帮我们少走了很多弯路。辛苦啦! 本地已按第三修复点落地并验证通过:
修复不着急,我们理解官方有排期,会耐心等待正式版本,本地补丁先顶着用。再次感谢! |
|
I consolidated the verified two-path diagnosis into an operator runbook: https://sandbaseai.github.io/deepseek-harness-handbook/windows-console-window-flash.html The important boundary is now explicit:
The guide also records why Canonical source-backed runbook: https://github.com/sandbaseai/deepseek-harness-handbook/blob/main/docs/en/troubleshooting/windows-console-window-flash.md |
|
感谢 denial123789 整理成 runbook!逐条核对了手册内容,与我们本机落地完全一致:
一个小的补充观察(供手册参考):本机落地时 再次感谢 argszero 的三处修复点指引和 denial123789 的手册整理,这份 runbook 对后来者会很有价值。 |
Uh oh!
There was an error while loading. Please reload this page.
Windows 上执行 pwsh/子进程命令时,桌面会闪现黑色控制台窗口(console window flash),非常干扰使用。
复现、预期与验收
dsh-subprocess-local拉起的控制台子进程,如 node/git 脚本);dsh-subprocess-local的spawn()未设置windowsHide: true。All reactions