buX / Streaming20 сентября 2026
Stage only · f794f3a

Мягче поток. Меньше работы браузеру.

Общий механизм отображения для Codex и Claude: постепенное появление текста, потоковый Markdown и плавное движение Thinking с резервом в три строки.

Открыть стейдж → Production не обновлялся.

≈ 8×меньше работы main thread в replay
0пустых кадров в живых прогонах после правок
1012тестов прошли · 51 integration skip

Одинаковый поток: до / после

Chromium, 1280 × 900, опубликованные сборки, один сценарий: 4419 символов Markdown, 16 разделов с таблицами и кодом. Пакеты по 36 символов с паузой 24 мс. Измерение без записи видео; значения показывают накопленное время работы, а не процент CPU.

СценарийБылоСталоРазница
Codex UI · main thread8,77 с1,13 с−87%
Claude UI · main thread9,64 с1,13 с−88%
Codex UI · JavaScript6,09 с0,21 с−97%
Claude UI · JavaScript6,45 с0,20 с−97%
Codex UI · layout0,60 с0,11 с−81%
Claude UI · layout0,55 с0,11 с−80%

Результат относится к этому большому потоку, а не ко всем страницам приложения. GPU, батарея и реальный слабый iPhone отдельно не измерялись. Heap в этих прогонах оставался примерно в диапазоне 8–9 МБ; без принудительного GC это не доказательство снижения RAM.

Живой Codex: до / после

gpt-5.6-luna, low. Первый запрос: три публичных промежуточных сообщения и финальная таблица. Второй: ответ без инструментов и промежуточных сообщений. Ответы модели различаются, поэтому эти видео проверяют поведение, а не служат основой таблицы выше.

До · реальный запрос на исходном стейдже
После · реальный запрос, desktop Chromium

Мобильный экран и второй провайдер

Реальный Codex · WebKit, мобильный viewport
Claude UI · воспроизводимый поток, Chromium 390 px

Claude в тестовом аккаунте недоступен. Его интерфейс и общую обработку событий проверили replay-сценариями, не живым запросом. WebKit здесь запущен на сервере: это не проверка физической клавиатуры iPhone.

Что изменилось

Мелкие пакеты объединяютсяСохраняются границы провайдера, треда, ответа и элемента. Завершение никогда не обгоняет накопленный текст.

Markdown обрабатывает приращениеНовые фрагменты появляются мягко. Незаконченная ссылка ждёт свой адрес. Финальный документ сверяется с прежним GFM-рендерером.

Прокрутка работает порциямиПлавность выполняет браузер. Жест вверх отменяет следование. Высота поверхности и положение Thinking меняются вместе.

Скрытая вкладка отдыхаетПриостановлены визуальный поток и CSS-анимации. После возвращения показывается актуальный текст, без воспроизведения всей пропущенной анимации.

Код подсвечивается после завершенияТолько видимые блоки, по одному, с ленивой загрузкой языка. Длиннее 32 КБ остаётся читаемый исходник без дорогой подсветки.

История освобождает DOMДалёкие сообщения заменяются их измеренной высотой и восстанавливаются при приближении. Последние сообщения и раскрытые рассуждения остаются на месте.

Сетевую подписку не урезали: фоновые треды продолжают получать события в ограниченный нереактивный кэш. Markdown и анимация существуют только у открытого треда. Это сохраняет мгновенное переключение и не создаёт новую гонку между снимком истории и потоком.

Проверки и границы

История и кэшФоновый финал, последний вопрос, запоздавший HTTP, переключение тредов. Длинная история и изменение ширины без потери измеренной геометрии.

Markdown и безопасностьРазные границы пакетов, таблицы, код, локальные ссылки Files, запрещённые URL. Chromium и WebKit. Идентичный финал не заменяет DOM ответа.

ПрокруткаЖест вверх, touch, PageUp, возврат к низу. Thinking не перекрывает текст; резерв ограничен. После завершения фиксированная высота снимается.

Живые ответыС промежуточными сообщениями и без них. В записанных новых прогонах: 0 пустых кадров, 0 обратных скачков во время набора, сохранённые узлы ответа.

Честные ограничения

Streaming Markdown используется как промежуточный рендерер. Полный GFM, включая reference links и tilde fences, остаётся за Marked + DOMPurify на завершении. В исходном живом прогоне тест заметил один кадр execution notice; новые прогоны прошли без него, но это не универсальная гарантия для любых сетевых условий. Интеграционные тесты, требующие отдельной инфраструктуры и credentials, не запускались. Видео показывают проверенные промежуточные сборки этой серии; финальные замеры и проверка снятия высоты выполнены на опубликованном кандидате.