Кодинг-агент, который целиком помещается в браузерную вкладку, обсуждался на Reddit как связка двух частей: агентной оболочки Pi и компактной языковой модели MiniCPM5-2B с 2 млрд параметров. Инференс идет на устройстве пользователя через WebGPU, поэтому не нужны ни установка рантайма, ни сервер с GPU, ни локальный API на порту.
Сразу о границах фактов. Публичное обсуждение на Reddit остается единственным источником сведений об этом проекте: открытого репозитория, документации и независимых замеров связки Pi + MiniCPM5-2B найти не удалось. Ниже разобрана заявленная схема и технический контекст, в котором она может работать, а цифры по скорости и качеству кода помечены как неподтвержденные. Заявленные свойства не стоит считать проверенными, пока автор не выложит код и бенчмарки.
Сама идея на уровне технологии проверяема: WebGPU умеет считать матричные операции на видеокарте, а модель на 2 млрд параметров в 4-битном квантовании занимает порядка 1-2 ГБ и помещается в память обычной GPU.
Что такое кодинг-агент в браузере на Pi и MiniCPM5-2B
Почему запуск LLM в браузере через WebGPU стал возможен
WebGPU - браузерный API для вычислений на GPU, который пришел на смену WebGL в задачах общего назначения. Для инференса LLM важны три его свойства: вычислительные шейдеры на языке WGSL, storage-буферы произвольного размера и явное управление рабочими группами. WebGL ничего этого не давал, поэтому старые браузерные модели считали в WASM на CPU и работали медленно.
Chrome и Edge получили стабильный WebGPU в версии 113, то есть с 2023 года. Firefox и Safari подключились позже, в 2025 году, и доступность зависит от платформы: в Firefox это сначала Windows, в Safari - macOS и iOS. На Linux в Chrome иногда нужно включать соответствующий флаг в chrome://flags.
Дальше работает экосистема: JS-биндинги, готовые кернелы, рантаймы. Как это выглядит на практике, разобрано в материале про Transformers.js v3 и запуск AI-моделей прямо в браузере, а про низкоуровневые кернелы - в разборе библиотеки @huggingface/kernels с 207 WebGPU-кернелами.
Роль Pi и MiniCPM5-2B в связке
Роли делятся просто: модель генерирует токены, агент решает, что с ними делать. Pi в заявленной связке отвечает за оркестрацию: принимает задачу, собирает промпт, добавляет системные инструкции, вызывает модель, читает ответ и определяет, нужен ли следующий шаг - уточнение, повторная генерация или вызов инструмента. MiniCPM5-2B - генератор.
MiniCPM5-2B относится к семейству компактных моделей MiniCPM, которые делают для устройств с малым объемом памяти. Два миллиарда параметров - на порядок меньше, чем у рабочих моделей для агентного кодинга (7B, 14B, 32B и выше). В 4-битном квантовании такая модель весит порядка 1-2 ГБ, именно это и делает браузерный запуск реальным. Утверждать, что MiniCPM5-2B дообучена под код, оснований нет: в обсуждениях это не подтверждено.
Отдельно про имя Pi. Публичного описания оболочки с таким названием в привязке к этому проекту нет, поэтому под Pi здесь понимается агентный слой из заявленной связки, а не конкретный фреймворк. Детали стоит сверять с описанием автора.
Как это работает: архитектура и поток данных
- Пользователь открывает страницу с агентом.
- Браузер скачивает веса модели и файлы токенизатора. При повторном визите они берутся из локального кэша (Cache Storage или OPFS), поэтому повторная загрузка 1-2 ГБ не нужна.
- Страница запрашивает GPU-адаптер через
navigator.gpu.requestAdapter(), затем устройство черезrequestDevice(). - Веса копируются в GPU-буферы, компилируются вычислительные шейдеры.
- Pi собирает промпт, токенизатор превращает текст в токены, идет prefill (обработка всего контекста), затем decode - генерация по одному токену.
- Токены стримятся в интерфейс, Pi анализирует вывод и либо завершает работу, либо запускает следующий шаг.
Помимо весов в памяти GPU живут KV-кэш и промежуточные активации. KV-кэш растет линейно с длиной контекста и числом слоев: на коротких промптах он почти незаметен, на длинных съедает сотни мегабайт и больше. Практический вывод простой: чем крупнее файл вы скармливаете агенту, тем выше шанс упереться в лимит памяти или увидеть просадку скорости.
Еще одна особенность: страница работает в песочнице браузера и не имеет прямого доступа к диску. Записать сгенерированный код в файл она может только через File System Access API с подтверждением пользователя либо через скачивание файла. Автоматический рефакторинг по дереву проекта, как в CLI-агентах, так не сделать.
Требования к железу и браузеру для запуска
- Браузер с WebGPU: Chrome или Edge 113+, актуальные Firefox и Safari.
- GPU с работающими драйверами. Подойдет дискретная карта или современное встроенное ядро. Старые iGPU без нормальной поддержки вычислений дадут единицы токенов в секунду.
- VRAM: ориентировочно от 2 до 4 ГБ свободной видеопамяти под веса и KV-кэш. Точные цифры зависят от реализации, квантования и длины контекста.
- ОЗУ и диск: 1-2 ГБ под кэш модели плюс место под саму вкладку.
Проверить свое устройство можно за минуту. Откройте chrome://gpu и посмотрите, активен ли WebGPU, либо выполните в консоли разработчика:
const adapter = await navigator.gpu.requestAdapter(); console.log(adapter ? 'WebGPU доступен' : 'WebGPU недоступен');
Если адаптер не возвращается, причина в браузере, драйвере или платформе - и никакая оптимизация модели это не исправит.
Ограничения подхода: что не сможет 2B-модель в браузере
Первое и главное: качество. Модель на 2 млрд параметров уверенно пишет короткие функции, регулярные выражения, простые SQL-запросы и объясняет сниппеты. На многофайловом рефакторинге, неочевидных багах и архитектурных решениях она ошибается заметно чаще моделей 7B+ и облачных лидеров. Это следствие размера, а не настройки.
Второе: контекстное окно. У моделей класса 2B оно обычно ограничено, а вместе с ним ограничен и объем кода, который агент видит целиком. Крупные файлы приходится резать на части, и агент теряет связи между модулями.
Третье: производительность WebGPU. Браузерный API не дает доступа к тензорным ядрам и не позволяет использовать CUDA-библиотеки вроде cuBLAS или TensorRT. Работают универсальные шейдеры с лимитами по размеру рабочей группы. Часть потерь компенсируют кернелы и фьюзинг операций: именно так браузерный инференс выдает сотни и тысячи токенов в секунду на малых моделях, что подробно разобрано в материале про браузерный инференс LLM на WebGPU. Но повторить нативный стек один в один в браузере пока нельзя.
Четвертое: песочница. Нет доступа к файловой системе и терминалу, нет запуска тестов, нет git. Агент может написать код, но не может его проверить и закоммитить без ручных операций.
Пятое: надежность вызова инструментов. Малые модели путают формат JSON-вызовов и придумывают несуществующие параметры API. Насколько это критично, видно по цифрам из разбора локального AI-воркспейса на 4 ГБ VRAM: 2B-модель выдает около 96 токенов в секунду, но спотыкается именно на маршрутизации инструментов и генерации законченного HTML.
Для каких сценариев подходит браузерный кодинг-агент
Задачи, где такой инструмент дает реальную пользу:
- Быстрые одноразовые вещи: регулярка, парсер строки, функция сортировки, сниппет запроса к API.
- Работа на чужом компьютере или в корпоративной среде, где нельзя ставить софт. Открыл вкладку - получил ответ.
- Разбор незнакомого кода: вставил фрагмент, спросил, что он делает.
- Обучение и эксперименты: видно, как устроен локальный инференс, без настройки окружения.
- Приватность на уровне вычислений: токены считает ваша видеокарта, код не уходит на сервер для обработки моделью.
Пример: на встрече с заказчиком нужно набросать функцию валидации email или распарсить JSON нестандартной структуры. Ноутбук слабый, ставить Python и качать модель на 8 ГБ некогда. Вкладка с браузерным агентом закрывает такую задачу за пару минут.
Где не подходит: длинный рефакторинг, работа с приватными ключами и чувствительными данными в промпте, задачи, где нужны запуск тестов и итерации по репозиторию.
Сравнение с локальным запуском и облачными AI-сервисами
| Критерий | Браузерный агент на WebGPU | Локальный запуск (Ollama, LM Studio) | Облачный API |
|---|---|---|---|
| Установка | Не нужна, достаточно браузера | Нужна: рантайм, модель, настройка | Не нужна, но нужен аккаунт и ключ |
| Требования к железу | GPU с поддержкой WebGPU, 2-4 ГБ VRAM | GPU от 8 ГБ VRAM либо инференс на CPU | Только интернет |
| Приватность | Инференс локальный, но страница может отправлять ввод | Полный контроль, возможен офлайн | Код уходит на сервер провайдера |
| Качество кода | Уровень 2B-модели | 2B, 7B, 13B и выше: выбираете сами | Максимум среди доступных вариантов |
| Скорость | Зависит от GPU и драйверов, ограничена WebGPU | Высокая на подходящей видеокарте | Зависит от сети и загрузки сервиса |
| Работа офлайн | Да, после кэширования модели | Да | Нет |
| Доступ к файлам и инструментам | Только через File System Access API с подтверждением | Полный доступ, git, тесты | Обычно через копирование текста в чат |
Локальный запуск через Ollama или LM Studio дает контроль над квантованием, выбор модели от 2B до 70B, нормальный доступ к файлам и полную офлайн-работу. Плата за это - настройка, десятки гигабайт на диске и требования к VRAM. Если вы только выбираете первую модель для агентного кодинга, начните с руководства по выбору локальной модели на ПК с ограниченной VRAM.
Облачные API дают лучшее качество на сложных задачах, но требуют интернета и означают отправку кода на чужие серверы. Для закрытых проектов это часто неприемлемо.
Выбор определяется задачей: одноразовые сниппеты и работа в чужом окружении - браузер, регулярная работа с репозиторием - локальная модель или облако.
Безопасность и приватность: что важно знать
Локальный инференс через WebGPU означает, что токены считает ваша видеокарта, и веса модели не отправляют ваш код на сервер для обработки. Это ощутимо отличается от облачных чатов, где промпт уходит наружу.
Автоматически безопасной страница от этого не становится. Сама веб-страница - обычный сайт, и она может отправлять введенные данные куда угодно независимо от того, где считаются токены. Отсюда простые правила:
- Проверьте, открыт ли исходный код проекта. Если код виден и собирается локально, риск ниже.
- Не вставляйте в промпт ключи API, пароли и фрагменты закрытого кода без необходимости.
- Помните, что веса и скрипты подгружаются с чужого сервера. Кэширование в браузере ускоряет загрузку, но не меняет источник.
- Осторожно с агентами, у которых есть запись файлов через File System Access API: инструмент с доступом к диску становится вектором для prompt-инъекций.
- Учитывайте, что расширения браузера видят содержимое вкладки.
Если нужна предсказуемая приватность, закрытый контур с локальным запуском надежнее: модель лежит на диске и в сеть не ходит.
Стоит ли пробовать: итоговая оценка
Ценность заявленного проекта в другом: это демонстрация того, что связка агент плюс компактная модель помещается во вкладку и не требует ни сервера, ни установки. Для учебных задач, быстрых сниппетов и работы на машинах, где нельзя ставить софт, сценарий рабочий.
Как основной инструмент разработчика он не подходит: 2B-модель ограничена по качеству и контексту, песочница браузера не дает нормального доступа к репозиторию, а скорость зависит от драйверов и конкретной GPU.
Практический план: найдите описание проекта, проверьте, выложен ли код, прогоните на трех-четырех своих типовых задачах (функция, регулярка, разбор незнакомого файла) и сравните с моделью, которой пользуетесь сейчас. Дальше смотрите на свои цифры, а не на обещания.
За технологией стоит следить: WebGPU-кернелы и браузерные рантаймы развиваются быстро, и связки, которые сегодня упираются в 2B, через год могут работать с 7-8B в той же вкладке.