kita / notes

约 2 分钟

那个一直闪的黑窗口,把我的任务也一起闪没了

用的是 Windows。工具跑起任务来,屏幕上会不定时地闪过一个黑色控制台窗口,很快,一两帧就没了。

一开始只当它碍眼。

后来发现不是:闪窗口的时候,客户端有可能被卡出去,正在进行的对话直接中断。

一个"看着不舒服"的问题,被我拖成了"任务会丢"的问题。

黑窗口是从哪来的

这类闪窗在 Windows 上有个很常见的原因:子进程启动时没有隐藏控制台窗口。

程序要执行一条命令(跑个脚本、调个 node、起个临时进程),在 Windows 上会为它创建一个控制台。如果创建时没指定"不显示窗口",就会闪一下。命令执行完,窗口销毁,又闪一下。

Linux/macOS 上没这个问题——它们本来就没有"给每个进程开一个控制台窗口"这回事。所以这类 bug 常常是跨平台项目在 Windows 上才暴露出来。

至于为什么会把客户端卡出去:频繁创建/销毁窗口是有系统开销的,如果这些窗口的创建和 Electron 主进程的 UI 线程抢在同一时刻,就可能出现短暂的卡顿甚至崩溃。窗口闪得越密,风险越高。

解决方式是换一个运行外壳

我没有去改底层代码,而是装了一个针对这个工具的配套组件(deepseek-harness-orb),它管的就是这类运行环境的问题。

装完闪窗消失,任务也不再中断。

这类"外围组件"值得留意。 主程序本身可能不打算处理平台差异性的细节,把这块交给专门的组件去做——你遇到的不是 bug,是"还没装那个壳"。

两件事的因果关系

复盘的时候我觉得这里有个挺典型的误判:我把一个稳定性问题当成了体验问题。

"窗口闪来闪去"听上去就是不舒服,所以我的处理优先级很低——想着哪天有空再收拾。而它实际在损害的是任务不丢失,这个优先级完全不一样。

判断标准可以更简单些:这个现象会打断我正在做的事吗? 会的话,它就不是体验问题。

那天如果第一反应是"它为什么闪",而不是"它真烦",大概能早点查出来。

← 回到全部笔记