问题
在 Windows(Git bash / MSYS2)上,brainstorm 视觉伴侣的 server.cjs 在启动它的会话结束后不会退出,会作为孤儿进程一直运行到 4 小时 idle 超时。实测发现两个 server 进程在其会话结束后仍运行约 3 小时。
根因(代码定位)
skills/brainstorming/scripts/start-server.sh(约 165–166 行)在检测到 Windows/MSYS2 时清空 OWNER_PID="",并作为 BRAINSTORM_OWNER_PID 传入。
skills/brainstorming/scripts/server.cjs:空值 → ownerPid = null(约 113 行);ownerAlive() 在无 owner 时恒返回 true(约 634–636 行)。因此 owner-death 看门狗(本应在启动它的会话退出时关闭 server)永不触发,只剩 4h idle 兜底(默认 IDLE_TIMEOUT_MS,约 553–557 行)。
- 且
state/server.pid 写入的是 MSYS PID 而非 Windows PID,导致 stop-server.sh 在 Windows 上按该 PID 去 kill 会落空 → 即便显式清理也停不掉。
实测证据
- detached 启动后杀掉启动它的 pwsh,node server 仍存活、继续监听。
- 跑真实
start-server.sh --foreground:server.pid = 204(MSYS PID),实际监听者是 Windows PID 80288;按 server.pid 停止无效,需按实际监听 PID Stop-Process。
可能的修复方向
- 传入 Windows 可见的 owner PID(Node
process.kill(pid,0) 能校验),而非在 Windows 上一律清空;和/或
- 心跳 / lockfile 机制,会话退出即自关;和/或
- Windows 上采用更短的默认 idle 超时(分钟级)作为兜底;和/或
- 让
stop-server.sh 在 Windows 上按实际监听 PID(而非 MSYS server.pid)停止。
环境
GitHub Copilot CLI 1.0.69-1 / Windows / Node v24.17.0 / Git bash。
说明:此 issue 与「视觉伴侣补充 Copilot CLI 启动说明」的文档 PR 是独立问题,特意不捆绑。文档 PR 解决"卡在 working"的症状;本 issue 是 Windows 下 server 生命周期的代码 bug。
问题
在 Windows(Git bash / MSYS2)上,brainstorm 视觉伴侣的
server.cjs在启动它的会话结束后不会退出,会作为孤儿进程一直运行到 4 小时 idle 超时。实测发现两个 server 进程在其会话结束后仍运行约 3 小时。根因(代码定位)
skills/brainstorming/scripts/start-server.sh(约 165–166 行)在检测到 Windows/MSYS2 时清空OWNER_PID="",并作为BRAINSTORM_OWNER_PID传入。skills/brainstorming/scripts/server.cjs:空值 →ownerPid = null(约 113 行);ownerAlive()在无 owner 时恒返回true(约 634–636 行)。因此 owner-death 看门狗(本应在启动它的会话退出时关闭 server)永不触发,只剩 4h idle 兜底(默认IDLE_TIMEOUT_MS,约 553–557 行)。state/server.pid写入的是 MSYS PID 而非 Windows PID,导致stop-server.sh在 Windows 上按该 PID 去 kill 会落空 → 即便显式清理也停不掉。实测证据
start-server.sh --foreground:server.pid= 204(MSYS PID),实际监听者是 Windows PID 80288;按server.pid停止无效,需按实际监听 PIDStop-Process。可能的修复方向
process.kill(pid,0)能校验),而非在 Windows 上一律清空;和/或stop-server.sh在 Windows 上按实际监听 PID(而非 MSYSserver.pid)停止。环境
GitHub Copilot CLI 1.0.69-1 / Windows / Node v24.17.0 / Git bash。