Коротко
- Управляемые транспорты Gemini и Vertex останавливают чтение на
data: [DONE], освобождают тело ответа и игнорируют последующие кадры. - Для успешного результата всё равно требуется валидная причина завершения кандидата (finish reason).
- Ошибки квоты в первом кадре участвуют в ротации API-ключей Gemini.
- Пустая или неуказанная причина завершения, метаданные использования и идентификатор ответа не считаются сгенерированным выводом.
Сверено с документацией OpenClaw 2026.11.1, 6 ноября 2026.
Когда совместимый прокси присылает маркер data: [DONE], управляемый транспорт Gemini и Vertex прекращает чтение потока на этом маркере, а не на последнем кадре.
Стоп на data: [DONE]: как это устроено
Когда совместимый прокси присылает data: [DONE], управляемый транспорт прекращает чтение потока, освобождает тело ответа и игнорирует кадры после маркера.
Для повтора первого ответа Gemini оговорено: метаданные использования, идентификатор ответа, а также пустые или неуказанные состояния завершения не считаются сгенерированным выводом. Они не отключают действующий дедлайн повтора.
Квота в первом кадре и ротация ключей
Ошибки квоты, пришедшие в первом кадре, участвуют в ротации API-ключей. Это касается и Interactions: запросы к официальному эндпоинту AI Studio используют ту же ротацию ключей Gemini, что и GenerateContent, когда лимит срабатывает до начала стрима.
Граница по ключам: собственные эндпоинты, OAuth-учётные данные и явные заголовки авторизации дополнительные Gemini-ключи не получают. Interactions при этом уважает управляемые request.proxy, request.tls и настройки локального сервиса.
Что проверить в своём прокси перед Gemini
Отдельно проверьте, какой транспорт выбран для вашего baseUrl. При собственном URL прокси Flash-модели по умолчанию идут через google-generative-ai (GenerateContent), даже если модель взята из каталога, а не из настроенной строки модели. Interactions на таком маршруте включается явно: api: "google-interactions" на уровне провайдера или модели.
{
models: {
providers: {
google: {
baseUrl: "https://generativelanguage.googleapis.com/v1beta",
api: "google-generative-ai",
models: [
{
id: "gemini-3.8-flash",
name: "Gemini Flash",
api: "google-generative-ai",
reasoning: true,
},
],
},
},
},
agents: {
defaults: { model: { primary: "google/gemini-3.8-flash" } },
},
}
openclaw models list --provider google
openclaw models list --refresh --all --provider google-vertex
Где ломается и когда не применять
- Изменение касается только управляемых транспортов Gemini и Vertex.
- На собственных эндпоинтах, с OAuth и явными заголовками авторизации ротации дополнительных Gemini-ключей не будет.
- Interactions работает без состояния: OpenClaw отправляет
store: false, не сохраняет идентификатор взаимодействия и игнорирует настроенные дескрипторыcachedContent. Если нужны явные дескрипторы кэша, выбирайтеgoogle-generative-ai. - Vertex AI, Gemini CLI, генерация изображений, речь, Live, эмбеддинги, понимание медиа, веб-поиск и обработка PDF сохраняют прежние маршруты.