Gemini CLI 修复会话恢复时工具响应被重复回放的 bug
Pcmhacker-piro · ghdev · 2026-09-25
google-gemini/gemini-cli PR #29490 修复了用 -r 恢复会话时工具响应被重复写入历史的问题:
- 根因:geminiChat.ts 把工具执行结果记为合成 user 消息,而 convertSessionToClientHistory 又为每条消息再生成一次合成响应 turn,导致同一 function call 对应多个 function response,违反 Gemini API 的“一一对应”要求,恢复后的 turn 直接被 API 拒绝。
- 雪上加霜:重复的合成 turn 会被 checkpoint 成新 user 消息,每次恢复都继续累积;且 updateMessagesFromHistory 会把整个 user turn 的 parts 同步进每个匹配的 tool call,导致并行工具调用的结果互相污染。
- 修复:sessionUtils.ts 预扫描已被记录消息回答的 tool call ID、跳过重复合成并去重;chatRecordingService.ts 按 callId 过滤 parts。附单元测试。
对做 agent 会话持久化/恢复的工程师是个有参考价值的案例。
「编程与Agent」频道最新
- Jev 成史上采用最快模型,三天涌现一批极低成本的实用 Agent 项目 — multiply_matrix · 2026-09-25
- 给智能体做游戏的好处:AI 随时帮你当测试员改画面 — tristanbob · 2026-09-25
- DeepLedger 发布:面向 QuickBooks 的 AI 会计 MCP 连接器 — modelcontextprotocol · 2026-09-25
- AgentWallet MCP:给 AI agent 的免许可链上钱包基础设施 — modelcontextprotocol · 2026-09-25
- Agent 评测 SDK 亮相:用真实网站而非 mock 工具测试 agent — Able-Ingenuity8885 · 2026-09-25
- 新系统语言 With 发布:Rust 级安全加上 C 级直呼其名 — QuixiAI · 2026-09-25