Карточка симптома
thinking stream starts immediately — it is just not addressed to the user
Первый токен в стриме — reasoning-блок модели, а не ответ: time-to-first-token выглядит мгновенным, а ответ начинается поздно или никогда. Засекайте время до первого токена ответа на клиенте, считайте пустые ответы отказами, выключайте reasoning там, где ворклоад позволяет.
- Платформа:
- Любой локальный стек
- Рантайм:
- llama.cpp server (Vulkan)
- Опубликовано:
- 02.09.2026
Что видно
Думающая модель за стриминговым chat-эндпоинтом. Первый токен приходит сразу, только стримится не ответ, а reasoning-блок. Ответ начинается сильно позже; при маленьком бюджете токенов он часто не начинается вовсе, и запрос завершается успешным статусом с пустым полем ответа. Два отчёта укладывают симптом в три фразы:
thinking stream starts immediately — it is just not addressed to the user
The user watches tokens stream for that entire time — they are the model thinking out loud, not the reply.
the caller gets HTTP 200 and an empty string
Где мы это поймали
- Beelink GTR9 Pro (Ryzen AI Max+ 395, Radeon 8060S / gfx1151, 128 GB unified); llama.cpp
server-vulkan-b9049, запинен digest’ом образа; Qwen3.6-35B-A3B Q4_K_M отggml-org, сверен по хешу. - Ворклоад
interactive-assistant-v1@ 2026-08-02, замороженные EN- и RU-промпты; конкурентность 1, контекст 8192, температура 0, кэш промптов выключен. - Три режима: reasoning включён при бюджете 1024 токена, включён при 4096, выключен через chat template при 1024. Замер клиентский; серверный спрятал бы эффект.
- Отчёт о цене reasoning опубликован 2026-08-20: второй интерактивный корпус плюс strict-JSON-ворклоад, те же железо, рантайм и артефакт; точная сборка рантайма, digest модели и число юнитов — на страницах клеймов, на которые он ссылается.
Причина
Модель пишет reasoning-блок раньше ответа, и стрим начинается с него, так что первый токен, чем бы он ни был, приходит в один и тот же момент, ответит коробка сразу или не ответит вовсе. Первый токен ответа появляется только после закрытия блока. Если бюджета меньше, чем нужно проходу размышлений, размышления съедают его целиком ещё до начала ответа, эндпоинт возвращает успех с пустым ответом, а проверка по коду статуса засчитывает это как успех. Серверный замер прячет всё это.
Лечение
Засекайте на клиенте время до первого токена ответа. Время до первого токена, каким бы он ни был, для думающей модели — непригодная цифра.
Считайте пустые ответы отказами: и в доле ошибок, и в знаменателе любой статистики по задержкам. От бюджета токенов зависит корректность ответа; если reasoning остаётся включённым, закладывайте в бюджет проход размышлений.
Выключайте reasoning там, где ворклоад позволяет. На нашей коробке его отключили через chat template; страницы-источники называют настройку, а не флаг. Проверяйте по работающему серверу, а не по документации: спросите у него, какой шаблон и какие настройки он фактически применил, затем отправьте один запрос и посмотрите, появляется ли reasoning-блок. С выключенным reasoning ответ начинался вместе со стримом и по-прежнему проходил гейты языка и повторов; гейт бюджета слов он проваливал в каждом режиме, с reasoning и без, и отчёт относит это к многословности модели, а не к переключателю. На повседневном чате и strict-JSON-автоматизации reasoning не принёс ничего, что смогли бы обнаружить наши гейты; по-настоящему сложные многошаговые задачи в наши корпуса не входят — мы их не проверяли.
Открыто ли апстрим?
Мы не отслеживаем. Страницы-источники не называют upstream-issue; дефект в метрике, а не в рантайме.
Доказательства
- Time-to-first-token не описывает думающую модель — клиентский замер, поштучные записи.
- Отключать ли thinking? — размен вкл/выкл и проверка на живом сервере.
- Thinking против no-thinking, бок о бок — на него ссылается второй отчёт.
- Бандлы прогонов: botAGI/agmind-lab; значения пересчитаны запросами в реестре клеймов.
Источники
- Почему думающая модель долго молчит: time-to-first-token ничего не говорит о reasoning · /reports/ttft-thinking-model-strix-halo/
- Отключать ли thinking? Сколько стоит режим размышлений на локальной LLM — измерено · /reports/should-you-disable-thinking-local-llm/
Эта карточка описывает один сбой, пойманный на собственном железе лаборатории; цифры, если они есть, живут на странице-источнике по ссылке, а не здесь.