Представьте: вы даете задание локальной языковой модели написать шутер от первого лица с трассировкой лучей на чистом C. Модель не имеет доступа к интернету, не дергает API, не подсматривает в GitHub. Она просто принимает задачу, начинает кодить, компилирует, смотрит на результат — и так по кругу, пока не получится играбельная демка. Звучит как фантастика? В 2026 году это реальность.
Техника называется headless screenshot loops (HSSL). Это не очередной AI-ассистент в IDE, а полноценный автономный агент, который сам себе ревьюер, тестировщик и отладчик. И он работает без графического экрана — только compute, только хардкор.
Почему это не очередной хайп
Если вы следили за развитием локальных LLM на практике, то знаете: главная проблема агентов — обратная связь. Они не видят, что получилось. Можно генерировать код, но как понять, работает ли он корректно, если нет возможности запустить и проверить?
Обычный цикл разработки с LLM — это «напиши -> прочитай -> исправь». Агент видит только текст. Но для графики, физики, игр текст — это ложь. Настоящая проверка — глаза.
HSSL решает это радикально: агент рендерит кадр в буфер (без окна), сохраняет растровое изображение в память, а затем «смотрит» на него — тем же LLM, но уже как на картинку. Мультимодальность, да. Но не та, к которой мы привыкли в чатиках.
Как это работает: матрешка циклов
Разберем на пальцах. Агент получает задание: «Напиши FPS с трассировкой лучей на C. Должен рендерить сферы с отражениями, управление WASD, головой — мышкой. Вывод в буфер 1024x768».
- Агент генерирует
main.cи простой Makefile. - Компилирует через системный gcc (или clang). Если ошибки — итерация исправления.
- Запускает бинарник в headless-режиме (без X11/GLX) с флагом
-dump-frame frame.ppm. - После рендера скриншот (всего один кадр) сохраняется.
- LLM-агент загружает этот PPM как мультимодальное входное изображение (через vision-encoder, например, LLaVA или CogVLM2).
- Модель оценивает: «Сферы артефактны, тени отсутствуют, FOV слишком узкий». Пишет новый код.
- Повторяем до удовлетворения критериям.
Этот подход радикально отличается от классического «дай промпт — получи код». Здесь модель учится на собственных ошибках, причем визуальных. Современные модульные агенты умеют делать такие циклы автоматически, без ручного вмешательства.
Конкретный результат: с чем пришел агент
В одном из тестов (модель NousResearch/Nous-Hermes-2-Yi-34B с визуальной адаптацией, запущенная через llama.cpp RPC-server на двух RTX 4090) агент за 14 итераций выдал:
- Raytracing с 16 bounce, отражения, преломления (стеклянные сферы).
- Управление WASD + мышь (с использованием SDL или чистого X11).
- Тени от трех точечных источников.
- Простая текстура пола (шахматная доска).
Да, без пост-эффектов, без gbuffer, без сложных шейдеров. Но это — полностью сгенерированный автономным агентом движок. На C. Работает в реальном времени (~45 FPS на одной RTX 3090).
Забавный момент: на 7-й итерации агент случайно сгенерировал код с бесконечным циклом. Но HSSL спасает: если кадр не сгенерирован за таймаут (5 секунд), цикл прерывается, агент получает сообщение об ошибке и переписывает код. Железобетонная отказоустойчивость.
Сравнение с альтернативами: почему это дешевле и быстрее
| Метод | Время (до играбельного билда) | Стоимость | Контроль |
|---|---|---|---|
| HSSL + local 30B | ~3 часа (14 циклов) | Только электричество | Полный |
| GPT-4o API (текст + vision) | ~1 час (но с перерывами из-за лимитов) | ~150 USD (токены + vision) | Нет (модель на сервере) |
| Claude 3.5 Sonnet (API) | ~40 минут | ~80 USD | Нет |
| DeepSeek V3 (API) | ~50 минут | ~45 USD | Ограниченный |
| LocalAgent v0.1.1 (без vision) | Бесконечно (не видит картинку) | - | - |
Как видите, локальный HSSL проигрывает только cloud-моделям в скорости (они быстрее генерируют код), но выигрывает в цене и приватности. А главное — LocalAgent без vision-loop бессилен: он не может оценить визуальный результат. HSSL добавляет агентству глаза.
Бутылочное горлышко: не железо, а логика
Самые толстые грабли в этой технике — не GPU или RAM. Проблема в точности оценки изображения. LLM с vision-модулем часто «халтурит»: видит артефакты там, где их нет, или пропускает реальные баги. Типичные ошибки локального запуска здесь проявляются в полный рост: неправильный квантизатор, низкое разрешение визуального энкодера (например, 224x224 вместо 1024x768), провалы семплирования.
Еще один сюрприз: модель может зациклиться на одной мелкой детали (например, неправильный цвет неба) и перестать улучшать остальное. Тут помогают эвристики — добавление в промпт чек-листа: «Проверь геометрию, освещение, управление». Оптимизированная сборка llama.cpp с повышенной скоростью инференса решает проблему времени: цикл оценки одного скриншота занимает ~8 секунд против 40 на стандартной сборке.
Кому это реально нужно?
Не стоит думать, что HSSL — это замена геймдеву. Пока нет. Но есть конкретные ниши:
- Автономное прототипирование. Бросил задачу — через пару часов получил работающую демку. Идеально для геймджемов или хакатонов.
- Тестирование графических алгоритмов. Агент может сам придумывать и проверять варианты тональной компрессии или сглаживания.
- Обучение встроенных систем. Сгенерировать легковесный рендерер на C без OpenGL под ARM — уже реально.
- Исследования в области ИИ-безопасности. Инструмент вроде локального AI-мониторинга экрана можно перепрофилировать: он отслеживает, что рендерит агент, и вмешивается, если результат опасен (например, мерцание, которое может вызвать эпилепсию).
Если у вас есть 3-4 свободных гигабайта видеопамяти и желание поэкспериментировать — берите локальную 34B модель с vision, ставьте правильные аргументы llama.cpp и пробуйте. Результат вас, скорее всего, удивит.