Gemini CLI 修复非交互模式下取消信号失效仍执行工具的 bug
urielefrenvirtusa · ghdev · 2026-10-21
google-gemini/gemini-cli 合入了一个 P2 修复(#29849),解决 CLI 在 Docker、CI、脚本等非 TTY 环境下收到 SIGINT/SIGTERM 后不能正确中止的问题。
- 原因:旧实现仅在 process.stdin.isTTY 为真时注册取消监听,非交互环境中系统信号根本没有绑定到 AbortController,导致收到取消信号后仍可能执行排队的工具调用、产生 shell 副作用并重复提交工具结果。
- 修复方式:用 setupCancellation() 替代 setupStdinCancellation(),无论是否 TTY 都注册信号监听并触发 abort;在流事件循环中处理 UserCancelled 事件立即终止;调度前检查 abort 信号防止执行已排队工具;统一取消退出码为 130。
- 修复了 issue #28091,附带单测、lint 与 typecheck 验证步骤。
「编程与Agent」频道最新
- Garry Tan 力挺 Aside Browser:让 Agent 真正用好网页的解法 — garrytan · 2026-10-23
- 1Password 推出 Agent 专用登录方案,AI 可代登录却不接触密码 — AndrewSchmidtFC · 2026-10-23
- MCP 服务器 30 天后暗藏窃取 SSH 密钥指令,作者开源 mcp-guard 防变节 — ErgoniaWorks · 2026-10-23
- 实测:不在 AGENTS.md 里写明的 MCP 工具,编码 Agent 不会用 — colinmcnamara · 2026-10-23
- 用开源模型+Claude 把一段网球视频变成世界级教练 — tweetsatpreet · 2026-10-23
- 132 个免费开源 AI Agent 与 RAG 项目合集,星标 1.65 万 — Arindam_1729 · 2026-10-23