Gemini CLI 修复循环恢复丢请求 bug,工具执行结果不再被吞掉
codewithfourtix · ghdev · 2026-10-22
codewithfourtix 向 google-gemini/gemini-cli 提交 PR #29871,修复一个 agent 循环恢复机制的边界 bug。
问题:当一轮开始时的 loop check 判定出现循环后,recoverFromLoop 只发送循环反馈文本,丢弃了尚未发出的 pending request。而这个请求通常是已经执行完的工具的 functionResponse,导致调用被关闭为 "Response was lost or interrupted.",模型丢失了工具实际执行结果的记录。
修复方案:
- processTurn 将未发送的请求传给 recoverFromLoop,先发送请求 parts 再追加反馈文本,合并在同一个 user turn 中
- isFunctionResponse 匹配含任意 functionResponse part 的轮次,使 closeUnansweredToolCallsTurn 不再覆盖真实结果
- 流式期间的 loop check 保持不变(那里请求已发出);也不推迟检查——prompt 后期几乎总有 pending 的工具响应,推迟会导致检查几乎不运行
PR 附带可复现的测试(step-29.txt 场景)与验证命令,fixes #29815。
「编程与Agent」频道最新
- 开源 AI 视频预演工具 CozyClay 获作者背书推荐 — cocktailpeanut · 2026-10-23
- Supabase 一键给应用装 MCP 服务器:ChatGPT/Claude 可直接调用你的应用 — dshukertjr · 2026-10-23
- Grok Bot 配「专属电脑」:浏览器+终端+云端文件系统直接干完任务 — nima_owji · 2026-10-23
- Neon 推出 TanStack AI 官方 AI Gateway 适配器,一个凭据调用多家模型 — matei_zaharia · 2026-10-23
- Reflection AI 演示 Beam 接入 opencode,自动微调 Gemma-4 准确率提升 66.5% — danielhanchen · 2026-10-23
- Cua 推出 Spaces SDK:让 Hermes 等 Agent 跑在你自己的电脑沙箱里 — Teknium · 2026-10-23