208 МБ вместо Linux: модель на 360 млн параметров изображает терминал, где ни одна команда не выполняется
Саймон Эдвардсон, соучредитель компании V7 и руководитель инженерии, дообучил языковую модель на 360 млн параметров изображать терминал Linux. За ней нет ни оболочки, ни файловой системы, ни единого файла: каждое нажатие клавиши уходит в модель, а модель предсказывает, как после него изменится экран. Наберёшь pythoon — «питон» запустится. Хотя запускать нечего.
Демо живёт в обычной вкладке браузера: 208 МБ, вся работа локально, без сервера. За сутки пост об этом на Hacker News собрал около пятисот баллов и больше полутора сотен комментариев — при том, что автор сам пишет в конце: «Есть ли в этом польза? Не особо».
Полезно здесь другое. Модель умеет создавать файлы, открывать vim, делить экран в tmux, играть в змейку и обычно помнит, что вы написали несколько команд назад. И всё это — не выполняя ни одной операции.
Что он хотел проверить
Год назад модель Genie 3 показала идею: сцену игры можно не рендерить движком, а предсказывать — кадр за кадром, по действиям игрока. Эдвардсон хотел свой такой мир, но без кластера видеокарт. Он взял не игру, а терминал: это просто сетка символов, и размеченные данные можно нарезать самому, запуская настоящие оболочки в контейнерах.
Вопрос он поставил жёстко: удержит ли модель связный мир или просто выдаёт убедительный текст, похожий на работу терминала. Тот же вопрос стоит задавать любому корпоративному агенту: он действительно сделал или красиво показал?
Как устроен фокус
Терминал здесь — сетка символов, по умолчанию 32 строки на 96 колонок. Сессия начинается со снимка: размер, содержимое, позиция курсора. Дальше в модель идут байты клавиш ровно в том виде, в каком их отправил бы настоящий терминал: буква — сама собой, Enter — возврат каретки, стрелка влево — управляющая последовательность.
Ответ модели — не поток текста, а инструкция, что переписать: какая строка, с какой позиции, какой текст, где в итоге курсор. Прокрутка не копирует экран заново: отдельная операция копирования переносит строки из предыдущего кадра, и это три токена на строку вместо примерно 96. Словарь получился крошечным — 333 токена.
Данные — синтетические сессии: случайные имена и приглашения командной строки, выдуманная персона с папками, треть сессий начинается с середины, чтобы модель училась продолжать чужую работу. Записано с настоящих программ в Docker. Обучение заняло примерно 75 часов на одной видеокарте RTX 4090.
Главная доработка — научить модель исправлять себя. Простое дообучение быстро освоило азы: буква появляется, backspace её убирает, курсор едет. А в длинных сессиях ошибки накапливались: опечатка в имени файла тянулась через всю сессию. Тогда автор взял приём из обучения роботов: модель предсказывает следующее действие, её экран сравнивают с настоящим записанным, и на разнице строят коррекцию — модель тренируется ремонтировать собственный экран. Условие жёсткое: исправлять можно только тем, что уже было на экране или в наборе пользователя. Иначе обучение вознаграждало бы выдумки.
Цифры, которые получились
Три теста, ни один не встречается в обучающих данных.
- ShellBench — 106 команд в 24 рукописных сессиях. У финальной модели 80 правильных из 106, у базовой Qwen2.5-Coder-0.5B с промптом — 52, у Qwen3-0.6B — 60.
- Память — 32 мира: два значения записываются в файлы и читаются обратно в отдельных сессиях. Точных чтений 9 из 13 против 2 и 3 у промптованных моделей.
- PresetBench — 47 сценариев из реальных падений демо: 24 из 47 до обучения на своих ошибках и 38 из 47 после.
Скорость решалась не моделью, а инженерией. Полная перерисовка экрана — около 3000 токенов, по токену за шаг она занимала до 12 секунд. Строки в кадре почти не зависят друг от друга, и их стали генерировать параллельно: до 3000 шагов превратились в примерно 100, а задержка на больших перерисовках упала с 6,7 до 0,87 секунды по 95-му процентилю. В браузере на ноутбуке нажатие занимает около 60 мс, а man test — 2,5 секунды в последовательном режиме и 0,9 в параллельном.
Размер уменьшали в два шага. У базовой модели 494 млн параметров, из них 136 млн — таблица эмбеддингов на 151 936 токенов. Нужных токенов 333, почти всю таблицу выбросили: 494 млн стали 360 млн, 990 МБ — 716 МБ. Потом квантизация в 4 бита: 208 МБ, которые и скачивает браузер.
99,3% и ноль памяти
Самая полезная находка случилась на попытке сжать модель ещё сильнее — distillation, когда большую модель переучивают в маленькую.
«Удаление всего одного слоя, без переобучения, почти не изменило точность предсказания следующего токена: 99,3% упали до 98,9%. Но точные чтения памяти упали с 64 из 64 до 0 из 64», — перевод из разбора Саймона Эдвардсона, 21 октября 2026 года.
Точность осталась почти прежней. Память исчезла целиком. Модель писала правдоподобный вывод терминала, но перестала помнить, что писала сама. Ученик на 16 слоёв и 138 МБ прошёл все 32 мира памяти с точностью 64 из 64 — но на ShellBench набрал 65 команд против 78 у учителя. Внешне всё хорошо, а часть способностей тихо потеряна. От distillation автор отказался.
Проверка на живом примере: echo green >> colors дописывает строку в файл, но следующий cat colors её часто не показывает. Отдельные команды работают, а комбинация — уже нет.
Открытая арифметика
Это не «модель плохая», это «каждая четвёртая операция выглядит правильно и не делает того, что должна». Для демо в браузере — восторг. Для проведения документа или записи в учётную систему — стоп-сигнал.
Что это меняет для того, кто внедряет
Имитация интерфейса — не выполнение операции. Модель выучила, как выглядит работа терминала, а не как она делается. В бизнесе то же самое: в чате аккуратный отчёт, в системе — ни одной новой записи. На скриншоте разницы не видно, в выгрузке — сразу.
Точность ответа не равна сохранности состояния. 99,3% ничего не заметили. Поэтому проверка агента — не «похоже ли на правду», а «записал, отошёл, вернулся, прочитал то же самое». У автора это 32 мира и 64 чтения.
Узкая задача оправдывает маленькую модель. 360 млн параметров, 208 МБ, вкладка браузера — и результат лучше, чем у моделей того же размера с промптом: задача одна, данные размечены идеально. Но узость и есть условие: как только команды комбинируются по-новому, всё ломается.
Скорость чаще даёт инженерия. Параллельная генерация строк дала семикратный выигрыш по задержке — для агента в интерфейсе это важнее пары процентов на бенчмарке.
Чего мы пока не знаем
Границы автор называет сам: в Firefox демо работает примерно в двадцать раз медленнее, чем в Chrome, причину он не нашёл; Python REPL на сложных операциях выдаёт ответы уровня ранних галлюцинаций; вложенные каталоги иногда теряются; цвета и стили не поддерживаются — только символы. Веса обещаны, но на момент публикации не выложены, так что воспроизвести цифры со стороны пока нельзя.
И главное: 75 часов на одной видеокарте — эксперимент одного инженера, а не продукт. Копировать в бизнес-процесс стоит не его, а метод: свой узкий словарь, дешёвое кодирование изменений, обучение на собственных ошибках, тест на память и проверку чтением.
Вывод получился скучным, как и всё полезное: модель, которая выглядит работающей, и модель, которая работает, — разные вещи. Разница видна не на демо, а на возврате через десять команд.
Полная версия — с расчётами, схемой и источниками — в блоге проекта «Новация ИИ»: находится по названию. Если удобнее сразу по делу — напишите мне в личные сообщения, разберём вашу задачу.