Gemini CLI 修复取消失灵 bug:按 Esc 后 agent 仍继续跑工具调用
jesussamuel-byte · ghdev · 2026-10-22
google-gemini/gemini-cli 的一个社区 PR(#29868)修复了一个影响体验的取消逻辑 bug:
- 问题:交互模式下,当一轮工具调用批次结束后继续运行 continuation stream 时,用户按 Escape 取消,CLI 虽打印「Request cancelled.」却仍继续执行后续模型轮次和工具调用(如 Shell git status、git worktree list)。
- 根因:processGeminiStreamEvents() 收到 UserCancelled 事件时只 break 出 switch 而未返回取消状态;且被取消的 continuation 流(isContinuation === true、无可见文本)被误判为「空模型响应」,触发了 auto-nudge 机制——新建 AbortController、重置取消标记、向模型再发一条 nudge prompt,导致 agent「复活」继续干活。
- 修复:收到 UserCancelled 或检测到 signal.aborted/取消标记时立即返回 StreamProcessingStatus.UserCancelled;阻止终止性流事件后的 auto-nudge;并在 submitQuery 与 handleCompletedTools 的异步边界上检查取消状态。
对做 agent 循环/流式控制的开发者是个值得借鉴的取消语义案例。
「编程与Agent」频道最新
- Neon 推出 TanStack AI 官方 AI Gateway 适配器,一个凭据调用多家模型 — matei_zaharia · 2026-10-23
- Modal 开源 Spindle:Tinker 兼容训练服务器,按 GPU 计费不再按 token 付费 — andersonbcdefg · 2026-10-23
- Reflection AI 演示 Beam 接入 opencode,自动微调 Gemma-4 准确率提升 66.5% — danielhanchen · 2026-10-23
- Cua 推出 Spaces SDK:让 Hermes 等 Agent 跑在你自己的电脑沙箱里 — Teknium · 2026-10-23
- PHP 爆两个未认证 RCE 漏洞,ProjectDiscovery 推全网免费告警服务 — cyb3rops · 2026-10-23
- Modal 开源 Spindle:Tinker 兼容自托管训练服务器,按 GPU 计费替代按 token 计费 — josh_wills · 2026-10-23