Перейти к содержанию
Публикация AiManual

Кодинг-агент прямо в браузере: как Pi и MiniCPM5-2B работают на WebGPU

Разбираем заявленный на Reddit проект кодинг-агента: агентная оболочка Pi и модель MiniCPM5-2B на 2 млрд параметров, инференс через WebGPU прямо в браузере. Что

Коротко

Что будет в материале

  1. 01

    Что такое кодинг-агент в браузере на Pi и MiniCPM5-2B

  2. 02

    Как это работает: архитектура и поток данных

  3. 03

    Требования к железу и браузеру для запуска

  4. 04

    Ограничения подхода: что не сможет 2B-модель в браузере

Кодинг-агент, который целиком помещается в браузерную вкладку, обсуждался на 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 здесь понимается агентный слой из заявленной связки, а не конкретный фреймворк. Детали стоит сверять с описанием автора.

Как это работает: архитектура и поток данных

  1. Пользователь открывает страницу с агентом.
  2. Браузер скачивает веса модели и файлы токенизатора. При повторном визите они берутся из локального кэша (Cache Storage или OPFS), поэтому повторная загрузка 1-2 ГБ не нужна.
  3. Страница запрашивает GPU-адаптер через navigator.gpu.requestAdapter(), затем устройство через requestDevice().
  4. Веса копируются в GPU-буферы, компилируются вычислительные шейдеры.
  5. Pi собирает промпт, токенизатор превращает текст в токены, идет prefill (обработка всего контекста), затем decode - генерация по одному токену.
  6. Токены стримятся в интерфейс, 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 ГБ VRAMGPU от 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 в той же вкладке.

Подписаться на канал