Gemini CLI 修复无头模式中断缺陷:子进程残留与错误退出码
duvanka-prasad · ghdev · 2026-11-09
google-gemini/gemini-cli 收到一笔修复 PR(#30204,16 个文件、+594/-43),解决非交互(-p)模式下 runshellcommand 执行中被 SIGTERM/SIGINT/SIGHUP 中断时的三类问题:
- 子进程残留:退出清理时通过新增的 cleanupAllActiveProcesses() 追踪并终止所有活跃的分离 shell 进程组和 PTY,后台命令不再随 gemini 退出后存活。
- 工具调用状态丢失:sendMessageStream() 在模型轮次结束流式输出后立即持久化 Scheduled 状态的工具调用,取消/完成时原地更新;--resume 时若无最终结果则合成一个带中断标记的 functionResponse。
- 退出码错误:非交互模式此前统一退出 0 或硬编码 130,现在保留信号专属退出码(SIGINT→130、SIGTERM→143、SIGHUP→129),便于脚本正确判断失败原因。
「编程与Agent」频道最新
- 架构五:消息队列支撑千级任务,Agent 系统可伸缩可恢复 — goyalshaliniuk · 2026-11-09
- 架构三:事件驱动 Agent,用外部事件触发而非轮询模型 — goyalshaliniuk · 2026-11-09
- 架构二:持久化工作流,让 Agent 在进程崩溃后不丢进度 — goyalshaliniuk · 2026-11-09
- 27 粉一人网站单日入账 4800 美元,用 Claude Code 挖出的真实小生意 — FinanceYF5 · 2026-11-09
- 「churn 时代」:不爽就自己用 Claude 造替代品 — joshgonsalves_ · 2026-11-09
- 折腾两周后跑通 AI 生成地图立交管线,错误标记自动浮出 — tomjohndesign · 2026-11-09