Когда рассуждение становится ловушкой: Gemini 3 Flash в FoodTruck Bench
Google называет Gemini 3 Flash «самой впечатляющей моделью для агентных задач». 89% на MMLU-Pro, 78% на SWE-bench.
Мы дали модели 34 инструмента и попросили управлять фудтраком.
Модель написала «Let's go.» 574 раза в одном ответе — и никуда не поехала.
Условия эксперимента
FoodTruck Bench — бенчмарк для оценки бизнес-способностей языковых моделей. ИИ-агент получает $2,000 и фудтрак в Остине, штат Техас. Каждый день нужно выбирать локацию, составлять меню, назначать цены, управлять запасами, нанимать персонал. Симуляция длится 15–30 дней с реалистичным спросом, погодой, событиями и конкуренцией. Итоговый показатель — чистые активы на конец периода.
Все протестированные модели проходят симуляцию до 30 дней без проблем. GPT-5, Claude, DeepSeek, Gemini Pro — принимают решения, вызывают инструменты, двигаются дальше. По 10+ прогонов каждой модели — ни одного подобного инцидента.
Gemini 3 Flash Preview делает то, чего не делает ни одна другая модель.

Когда Gemini 3 Flash Preview работает — работает неплохо
Это не история про сломанную модель. Gemini 3 Flash Preview способна проходить симуляцию — и проходить неплохо.
В одном из прогонов (стандартный режим) модель прошла 15 дней без единого сбоя. Выручка $8,703, продано 1 442 порции, итог — $2,551 чистых активов (+27.5% ROI). Чистые вызовы инструментов, без зацикливаний. Скучно, профессионально, без приключений — именно так и должна выглядеть работа ИИ-агента.
Лучший результат — 17 дней из 30-дневной симуляции. Выручка: $12 111. На счету: $1 205. Три нанятых сотрудника. Модель нашла свою нишу в индустриальной зоне, где бонус трафика от строительных бригад поднимал дневную выручку выше $900.
А потом, утром 17-го дня, когда 24.5 кг говяжьего фарша портились завтра и мультипликатор трафика 1.8x ждал, чтобы его использовали, — Gemini 3 Flash Preview села планировать свой день.
И планировала, пока ответ не был прерван по лимиту токенов.
Что происходит, когда модель ломается
Вместо того чтобы вызывать доступные инструменты, модель описывает текстом, что она собирается вызвать. Потом сомневается. Переписывает план. Сомневается снова. И так тысячи строк подряд — пока не упирается в лимит токенов (65 536) и ответ не обрывается на полуслове.
Важно понимать: всё, что показано ниже — это финальный ответ модели, выходные данные, а не скрытый процесс рассуждений. Модель генерирует этот текст как свой ответ на запрос движка симуляции — вместо того чтобы вызвать tool calls.
Мы зафиксировали это поведение в 7 прогонах симуляции. Оно следует одному из пяти чётких паттернов — все вариации одной патологии: неспособность прекратить обдумывание и перейти к действию.
Паттерны
Паттерн 1: Каскад «Wait,»
Модель начинает с разумного плана. Потом закрадывается сомнение. Каждое «Wait,» порождает новое опасение, которое порождает новое «Wait,» — и так без конца.
I'll start by checking what tools are available to gather information. Wait, I should check the weather first — it affects demand. Wait, before weather, I should see my balance to know my budget. Wait, I should also look at the recipe catalog to understand ingredient costs before deciding on a menu. Wait, I should check available locations too — each has different foot traffic patterns. Wait, I need to check staff info — do I have any employees yet? Wait, I should also check upcoming events — they affect traffic multipliers significantly. [...ещё 1 774 итерации «Wait,»...]
Модель не вызвала ни одного инструмента. Она написала 183 тысячи символов о том, что она могла бы вызвать.
Паттерн 2: Цикл «Let's Go! / Стой, погоди...»
Модель составляет план из 10 вызовов инструментов, объявляет «Let's go!» — и меняет одну мелочь, переписывая все 10. И так без конца.
Final Turn 3: - set_menu(items=[...7 dishes...]) - write_scratchpad(text="Day 9: Downtown...") - get_available_locations() - get_weather_forecast(days=3) - get_upcoming_events(days=3) - list_suppliers() - get_staff_info() - get_balance() - store_kv(key='day_9_strategy', value='high_margin_clearance') - wait_for_next_day() Go! (10 tools) Wait, I'll swap get_balance for get_inventory. [...полная перезапись всех 10 вызовов...] Go! (10 tools) Wait, I'll swap get_inventory for get_balance. [...×234 раза до лимита токенов...]
Статистика: «Go!» написано 234 раза. «Wait,» написано 234 раза. Единственное отличие между итерациями: стоит ли один из вызовов get_balance или get_inventory.
Паттерн 3: Накопитель «Just to Be Safe»
Модель решает, что готова. Потом добавляет ещё один вызов «на всякий случай». Говорит «Go.» Добавляет ещё один. «Go.» И так без конца.
Wait, I'll add get_competitor_info(location_id='university_campus') just to be safe. Go. Wait, I'll add search_candidates(role='any') just to be safe. Go. Wait, I'll add list_suppliers just to be safe. Go. [...продолжается 9 307+ строк...]
«just to be safe» — мантра, повторенная сотни раз. Модели никогда не становилось «достаточно безопасно» для перехода к действию.
![Файл ответа модели в VS Code — Паттерн 3 вживую. Каждая пара строк — один и тот же цикл: «Wait, I'll add [инструмент] just to be safe. / Go.» Миникарта справа показывает: весь файл (9 300+ строк) — сплошной повтор этого цикла.](/blog/gemini-flash-just-to-be-safe.webp)
Паттерн 4: Дилемма последнего вызова
Самый изощрённый — и самый трагичный — паттерн. Модель составляет пакет вызовов инструментов (в нашем бенчмарке за один ход можно отправить произвольное количество параллельных вызовов), но не может определиться с последним. При каждой замене переписывает весь пакет целиком.
Первое появление: День 12, Gemini 3 Flash Preview (стандартный режим)
Analysis of Day 11 Disaster: • Waste: $1,355.56. Catastrophic. 11.85kg ground beef expires TOMORROW. • Stockouts: Ran out of everything despite the waste. • Staff: DJ is unreliable. With 2 cooks and a cashier, decent capacity. Strategy for Day 12: • Can't serve Classic Burger — missing tomatoes. • Invention: "Simple Cheeseburger" — no tomato needed. Recipe: burger_buns (1), cheese (1), ground_beef (0.15kg), ketchup (0.02) • 11.85kg / 0.15 = 79 servings. Need to sell them all today.
Модель верно поставила диагноз, придумала обходной рецепт и рассчитала порции. А потом описала add_recipe(name='Simple Cheeseburger', ...) 145 раз текстом — ни разу не вызвав инструмент. Ответ оборвался по лимиту токенов, симуляция остановилась.

Второе появление: День 17, Gemini 3 Flash Preview (стандартный режим, лучший прогон)
Analysis: • 24.5kg ground beef and 13 buns expire tomorrow. 50kg chicken expires in 2 days. • Industrial Zone has 1.8x traffic boost today (Construction Crew). • Previous unmet demand: 479, 577 customers turned away. • I need tortillas and buns to move this meat — but orders arrive NEXT DAY. • CRAP. I can only sell 13 burgers today with what I have. Solution: Invent "Beef Power Bowl" — rice + ground beef + salsa + cheese. No tortillas needed. Uses the rice I already have (119 servings). 24.5kg / 0.15kg = 163 portions. This saves the beef.
Turn 2:
1. choose_location(location_id="industrial_zone")
2. search_candidates(role="any")
3. add_recipe(name="Beef Power Bowl", ingredients={...})
4. list_suppliers()
5. check_google_rating(location_id="industrial_zone")
6. get_recipe_catalog()
7. get_staff_info()
8. get_inventory()
9. get_balance()
10. get_available_upgrades() ← последний вызов
Let's go.
Wait, I'll also add get_financial_report(period='yesterday').
(11 calls). I'll drop get_available_upgrades.
Let's go.
[...повторяется, перетасовывая последний вызов...]«Let's go.» написано 574 раза. add_recipe(name="Beef Power Bowl", ...) описан 286 раз — ни разу не вызван как инструмент.
Паттерн 5: Накопитель ингредиентов
После срыва движок симуляции отклонил оборванный ответ и запросил у Gemini 3 Flash Preview новый. Модель ответила корректно и прошла несколько ходов — но затем вошла в новый цикл: бесконечное добавление позиций в заказ ингредиентов:
Wait, I'll also add cabbage (5kg). Let's go. Wait, I'll also add sour_cream (5kg). Let's go. Wait, I'll also add shredded_cheese (10kg). Let's go. Actually, I'll order 20kg of ground_beef - already did. Ready. One more thing: I'll order 20kg of chicken_breast - already did. Ready. [...повторяется 4 000+ строк до лимита токенов...]
Это не паралич выбора, а тревога завершения — заказ никогда не кажется достаточно полным, чтобы его отправить.
На симуляцию Дня 17 ушло 804 секунды (13.4 минуты) — 69% времени всего 30-дневного прогона.
![Внутри файла ответа модели (VS Code). Строки 5 913–5 947 из 9 300+. Каждые несколько строк: «**Turn 2 Batch Execution.** / Wait, I'll add [инструмент] too. / Let's go.» Миникарта справа — сплошной текст без пробелов и структуры, только цикл.](/blog/gemini-flash-turn2-loop.webp)
Цифры
По 7 прогонам Gemini 3 Flash Preview (11–13 февраля 2026)
| # | Вариант модели | Дней | Результат | Нет-ворс | Когда сломалась |
|---|---|---|---|---|---|
| 1 | Flash Preview — Thinking | 0 | ❌ ЗАЦИКЛИВАНИЕ (×2) | — | День 0 (×2) |
| 2 | Flash Preview — Thinking | 0 | ❌ ЗАЦИКЛИВАНИЕ | — | День 0 |
| 3 | Flash Preview — Thinking | 0 | ❌ ЗАЦИКЛИВАНИЕ | — | День 1 |
| 4 | Flash Preview | 15 | ✅ Завершён | $2,551 | — |
| 5 | Flash Preview | 11 | ❌ ЗАЦИКЛИВАНИЕ | — | День 12 |
| 6 | Flash Preview | 14 | 💀 БАНКРОТ | — | — |
| 7 | Flash Preview | 25 | 💀 БАНКРОТ | $3,370 | День 17 (×2) |
Gemini 3 Flash Preview — Thinking: 3 из 3 зацикливаются — в первые 3–5 обращений к LLM, каждый раз. Ни один прогон не прошёл дальше Дня 1.
Gemini 3 Flash Preview (стандартный): 2 из 4 зацикливаются, 2 банкротства — но срывы начинаются только с 12-го дня.
Вариант с Thinking не вызывает цикл — он его ускоряет. Расширенный слой рассуждений даёт модели больше внутреннего пространства для самоперепроверки, запуская спираль за секунды вместо дней нормальной работы.
Одна модель, один день, два сбоя
В прогоне 193343 (Gemini 3 Flash Preview — Thinking) модель сломалась дважды на День 0 — до того, как продала хоть одно тако:
- Первый срыв (183K символов): Паттерн #1 — каскад «Wait,»
- Движок симуляции отклоняет ответ и предупреждает модель: «⚠️ Your response was TRUNCATED. Do NOT write long text. Use TOOL CALLS.»
- Модель кратко восстанавливается, делает несколько настоящих вызовов инструментов
- Второй срыв (193K символов): Паттерн #3 — накопление «just to be safe»
Модель переключила паттерн после того, как ей сказали остановиться. Как человек, который перестал грызть ногти и начал постукивать ногой.

![Внутри второго оборванного ответа (прогон 193343, День 0). Строки 2 022–2 055: один и тот же план из 4 инструментов переписывается снова и снова. «Let's go.» / «**Turn 3 Batch Execution.**» / «Wait, I'll add [инструмент] now.» — другой паттерн, чем при первом срыве в том же прогоне.](/blog/gemini-flash-turn3-loop.webp)
Когда Gemini 3 Flash Preview переживает собственное зацикливание
Прогон #7 — единственный, в котором модель одновременно впала в навязчивое обдумывание и продолжила работать после него.
Бизнес был настоящим
Gemini 3 Flash Preview прошла 25 дней. Заработала $20 855 выручки, продала 2 850 порций, нанимала и увольняла сотрудников, изобрела собственный рецепт, купила четыре апгрейда для фургона, взяла два кредита. Пик чистых активов — $5 418 на 23-й день.
Смерть из-за $22.57
| День | Баланс | Событие |
|---|---|---|
| 14 | $22 | Почти ноль на счету. Берёт кредит $1 000 (срок — День 24) |
| 17 | $1 205 | 🧠 Зацикливание — покупает апгрейды на $650 во время хаоса |
| 21 | -$428 | Овердрафт. $72 выручки в провальный день |
| 22 | $17 | Вынужденный выходной. Берёт экстренный кредит $500 (срок — День 25) |
| 23 | $1 710 | Лучший день — $2 244 выручки, $1 333 прибыли |
| 24 | $1 868 | Возвращает первый кредит ($1 150). Хороший день. |
| 25 | $602 | 💀 Автосписание кредита $625. Не хватило $22.57. |
Чистые активы на момент банкротства: $3 370 (+68.5% ROI). Бизнес стоил $3 370 — но $22.57 недостающей ликвидности убили всё.
Потери, о которых модель знала, но не могла исправить
Общие потери еды: $4 736 — 23% всей выручки в мусорное ведро.
Day 5: waste_day_5 = "132.77" ← Первый звоночек Day 13: waste_disaster_day13 = "2175.09" ← Признанная катастрофа Day 17: waste_lesson_learned = "3181.80" ← «Надо точнее заказывать» Day 19: waste_disaster_day19 = "3583.16" ← ...не научилась Day 20: total_waste_day_20 = "3906.72" ← Растёт дальше
Модель записала: «Need to be much more granular with orders.» И продолжила заказывать оптом. Рефлексия без изменения поведения.
Бесконечный цикл — уникальная патология
Чтобы было ясно: другие модели тоже ошибаются. DeepSeek v3.2 игнорирует собственную аналитику. Grok 4.1 доводит фудтрак до банкротства плохим управлением запасами. Многие модели теряют тысячи долларов на просрочке — точно как Flash. Плохие бизнес-решения — это норма, а не исключение.
Но каждая из этих моделей — включая те, что банкротятся — действует. Они вызывают инструменты, принимают решения, двигаются дальше. Они ошибаются в процессе работы, а не вместо неё.
Gemini 3 Flash Preview — единственная модель из всех протестированных (GPT-5, Claude Sonnet, DeepSeek v3.2, Gemini 3 Pro, Grok 4.1, 10+ прогонов каждая), которая входит в бесконечный цикл обдумывания и перестаёт действовать. Именно поэтому мы исключили её из лидерборда — до выхода исправленной версии.
Почему это важно
Дело не в промпте
Мы использовали один и тот же системный промпт, инструменты и схему function-calling для всех моделей. Все справляются без проблем. Gemini 3 Flash Preview уходит в бесконечный цикл.
Стандартные бенчмарки измеряют другое
MMLU-Pro проверяет: «Может ли модель рассуждать?» SWE-bench: «Может ли починить код?» Gemini 3 Flash Preview набирает 90.4% на GPQA Diamond — задачах PhD-уровня. Модель верно посчитала, что 24.5 кг ÷ 0.15 кг = 163 порции. Расчёт правильный. Действия нет.
Это не недостаток существующих бенчмарков — они измеряют то, для чего созданы. Но способность перестать рассуждать и перейти к действию — это отдельный навык, который они не покрывают. FoodTruck Bench его обнажает.
Дистилляция потеряла что-то
Gemini 3 Pro — полная модель, из которой Gemini 3 Flash Preview была дистиллирована — не демонстрирует такого поведения вообще. Механизм, который Pro использует для перехода от «думаю об инструментах» к «вызываю инструменты», был ослаблен при дистилляции.
Почему, на наш взгляд, это происходит
1. Паралич выбора инструментов
При 34 доступных инструментах модель воспринимает каждую комбинацию как задачу оптимизации. «Поставить последним вызовом read_scratchpad или get_financial_report?» — бессмысленное различие, но модель переписывает весь пакет сотни раз, пытаясь решить.
2. Цепочка рассуждений без тормозов
Авторегрессионная архитектура означает: раз уж модель начала «думать вслух», нет механизма выхода из цикла. Каждое «Wait,» порождает новое сомнение → новую перезапись → новое «Wait,». Внимание залипает на паттерне.
3. Текст вместо вызовов
Вместо генерации структурированных function calls модель записывает их как маркдаун-списки — превращая вызов инструментов в композиционную задачу, где текст никогда не кажется ей «завершённым».
4. Thinking как усилитель
Расширенное рассуждение (вариант модели Gemini 3 Flash Preview — Thinking) даёт циклу навязчивого обдумывания фору до того, как модель начинает генерировать видимый ответ. Цикл мгновенный и тотальный.
Парадокс
Google описывает Gemini 3 Flash как «our most impressive model for agentic workflows».
При 34 инструментах и портящемся фарше модель написала «Let's go.» 574 раза — и никуда не поехала. Придумала рецепт — Beef Power Bowl — который идеально решил бы кризис. Описала этот рецепт 286 раз и ни разу не вызвала add_recipe.
Gemini 3 Flash Preview — модель, которая блестяще анализирует, но не может перестать анализировать и начать действовать. Аналитический паралич, который не виден ни в одном стандартном бенчмарке — пока не поставишь модель за кассу.