Gemini CLI 修复中断回合导致的会话上下文污染与死循环
dylanyunlon · ghdev · 2026-09-18
gemini-cli 的一个 P2 修复 PR 揭示了一个典型的 agent 工程坑:当 agentic 循环被中断(SIGINT、超时或工具执行被中止)时,CLI 会向会话历史注入一条合成回合 [The previous response was interrupted before it completed.]。模型后续会把这个字符串当作期望的补全模式复述出来,导致会话上下文被“污染”,agent 循环卡死、工具无法执行,只能重置会话。
修复采用纵深防御:
- 新增 interruptionSanitizer.ts,检测危险占位符并替换为无害文本("Continuing.");
- 源头修复:closeUnansweredToolResponseTurn() 直接注入良性文本而非原始占位符;
- extractCuratedHistory() 在进入 API 前清洗历史,兜住旧会话残留;
- nextSpeakerChecker 检测到中断占位回合时短路返回 {nextspeaker: 'model'},省一次 LLM 调用;
- 压缩服务在摘要前也做清洗,scrub 流水线统一接入。
对做 agent 的人很有参考价值:往对话历史里注入的任何合成文本,都可能被模型学去复述。
「编程与Agent」频道最新
- 游戏开发者辟谣:AI 一天做出完整游戏多为炒作 — bendee983 · 2026-11-04
- 用 ChatGPT 从 Excel 一键生成带地图联动的交互式仪表盘 — TermRemarkable665 · 2026-11-04
- 开发者称 Agent 把开发周期从数周压缩到一天 — Suspicious_Orchid770 · 2026-11-04
- YC 孵化 Orgo:为 AI Agent 提供专属云桌面,已服务超 1000 团队 — Scobleizer · 2026-11-04
- 开发者自述:Vibe Code 出 PMF 产品后,工程化烂摊子靠专业开发救场 — sujingshen · 2026-11-04
- 用一句提示词让 AI 排查跨区流量:迁移服务省掉跨大西洋延迟 — DanielLockyer · 2026-11-04