#1658·corsair

[BUG] Gemini `generateContent` 会丢弃后续的文本/推理部分,并无条件地删除 Markdown 代码块

作者: vanssh012创建于 2026年9月7日更新于 2026年9月13日

@corsair-dev/Gemini (packages/Gemini/endpoints/content.ts & packages/Gemini/endpoints/text-utils.ts)

摘要

在 Gemini 插件中,generateContent 通过查找只匹配 typeof part.text === 'string' 的第一部分来提取候选文本,并通过 stripMarkdownFences() 进行处理。这给 AI/ML 工作流带来了两个主要问题:

  1. 现代模型/推理的截断:Gemini 2.0 闪电思维、Gemini 2.5 和多部分响应返回多个内容部分(例如,思维部分和文本部分,或分割流块)。使用 Array.prototype.find() 只获取第一部分(通常是思维部分或第一个块),并完全丢弃所有后续文本部分。
  2. 破坏性输出变化stripMarkdownFences() 自动检测和删除 Markdown 代码围栏(Gemini)。如果用户特别要求模型返回包含代码围栏的 Markdown 文档或代码片段,则返回的响应文本会被默默地修改和删除。

内容来源: corsairdev/corsair