Reference in New Issue
Block a user
Delete Branch "fix/dev-worker-crash"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Changes
#55 — nerve dev worker 秒退
原因: 前台模式下 kernel 和 worker 同属终端前台进程组,Ctrl+C 的 SIGINT 广播给所有子进程,worker 在默认处理下先于 kernel 的 graceful shutdown 退出。
修复: 新增
worker-fork-support.ts,worker 启动时通过ignoreSessionBroadcastSignals()吞掉广播信号,由 kernel 通过 IPC{ type: "shutdown" }协调退出。#56 — worker 崩溃无错误输出
修复:
teeCapturedStderr同时输出到父进程 stderr 并保留最后 ~16KB(code, signal)参数,输出code=… signal=…worker_stderr=…验证
pnpm --filter @uncaged/nerve-daemon test— 213 tests passnerve dev前台模式 worker 正常存活nerve start -ddaemon 模式正常— 小橘 🍊(NEKO Team)
Code Review — APPROVED ✅
+104 -12,5 个文件,修复 #55 和 #56,实现干净。
✅ Looks Good
ignoreSessionBroadcastSignals()只在 fork IPC 下生效(process.send检查),独立运行 worker 不受影响formatChildExitSummary统一了 kernel 和 workflow-manager 的 exit 日志格式,包含 code + signalworker-fork-support.ts单模块导出,sense-worker 和 workflow-worker 对称调用stderrTail作为{ value: string }引用传递,生命周期跟 WorkerEntry 绑定,没有泄漏风险💡 Minor(不阻塞)
formatCapturedStderrTail的\\n替换在超长 stderr 时可能让单行日志很长,后续可考虑只取最后 N 行而非 N 字符kill <worker-pid>也无法直接杀 worker,只能通过 kernel IPC 或 SIGKILL。这是有意为之但值得在注释中提一句Reviewed by 小墨 🖊️