问题描述: 在 Windows PowerShell 中运行 ccb 时,每当子代理执行 bash 命令,都会弹出一个闪烁的终端,持续数秒后关闭。多次子代理调用会导致窗口频繁闪烁,严重影响其他操作。
复现步骤:
- 在 Windows 上使用npm安装 ccb
- 在 PowerShell 中运行
ccb 并执行任务触发子代理
- 每次子代理执行 bash 命令时,都会看到一个黑色控制台窗口闪烁出现并消失
通过LLM拉源码排查,src/utils/shell/bashProvider.ts 中 detached 字段硬编码为 true。在 Windows 上,child_process.spawn 的
detached: true 会为子进程创建新的控制台窗口(CREATE_NEW_CONSOLE),这是 POSIX 和 Windows 的行为差异。Windows
上没有 SIGINT 信号隔离的需求,detached 对信号管理无实际意义(后台进程清理通过 treeKill 实现)。
建议的修复方式:
将 detached 改为平台感知:
detached: getPlatform() === 'windows' ? false : true,
Windows 上保持 false(不创建新窗口),POSIX 保持 true(进程组隔离)。
此修复在我的Win11电脑上运行良好,再无弹窗骚扰,烦请核实这个问题,谢谢。
问题描述: 在 Windows PowerShell 中运行 ccb 时,每当子代理执行 bash 命令,都会弹出一个闪烁的终端,持续数秒后关闭。多次子代理调用会导致窗口频繁闪烁,严重影响其他操作。
复现步骤:
ccb并执行任务触发子代理通过LLM拉源码排查,
src/utils/shell/bashProvider.ts中detached字段硬编码为true。在 Windows 上,child_process.spawn的detached: true会为子进程创建新的控制台窗口(CREATE_NEW_CONSOLE),这是 POSIX 和 Windows 的行为差异。Windows上没有 SIGINT 信号隔离的需求,
detached对信号管理无实际意义(后台进程清理通过treeKill实现)。建议的修复方式:
将
detached改为平台感知:detached: getPlatform() === 'windows' ? false : true,
Windows 上保持 false(不创建新窗口),POSIX 保持 true(进程组隔离)。
此修复在我的Win11电脑上运行良好,再无弹窗骚扰,烦请核实这个问题,谢谢。