Блог
Шесть раундов независимого тестирования: укрепление Sensbench AI Builder
За последнюю неделю независимая третья сторона провела шесть раундов глубокого, adversarial-тестирования Sensbench AI Builder и Sensbench MCP (Model Context Protocol) сервера. Их задача была проста: попытаться сломать его. Они генерировали проекты, компилировали прошивки, повторяли одинаковые промпты, ковырялись в кэшах, подключали реальные MQTT-брокеры и проверяли наш биллинг. Вот что произошло, что мы исправили и как теперь выглядят цифры.
Как проводились тесты
Каждое утверждение ниже было проверено в реальной среде:
- Реальная компиляция — каждый сгенерированный скетч компилировался на нашем реальном тулчейне arduino-esp32 (сборка ESP-IDF), а не через линтер или фейковый пропуск.
- Реальный MQTT — сгенерированные скетчи Home Assistant прошивались в симулятор, подключались к реальному публичному MQTT-брокеру и прогонялись от начала до конца:
mosquitto_pub ON→ колбэк устройства → импульс реле → публикация состояния обратно. Discovery-сообщения захватывались наhomeassistant/switch/…/config. - Семантика кэша — одинаковые промпты, семантически разные промпты, изменения платы и ограничений воспроизводились, чтобы убедиться, что кэшированные ответы соответствуют только точному запросу, который их создал.
- Сверка биллинга — каждая генерация и компиляция сверялась с квотным реестром: успешные списаны, попадания в кэш бесплатны, неудачные компиляции бесплатны.
Раунд первый: честное число было 20%
Первый раунд был унизительным. Из пяти сгенерированных проектов четыре не скомпилировались — включая открыватель гаражных ворот, один из самых распространенных реальных запросов. Ошибки были классическими ошибками новичков в C++: вспомогательные функции использовались до объявления, самодельные стековые протоколы, отсутствующий include библиотеки. Вердикт был справедливым: “конвейер реален, но генератор ненадежен.”
Что мы изменили
Вместо споров мы встроили защитные механизмы в сам конвейер:
- Автоматическая инъекция прототипов — тулчейн компиляции не выполняет шаг авто-прототипов Arduino, поэтому мы теперь автоматически вставляем прототипы функций в правильное место перед каждой компиляцией.
- Внутренняя самопроверка компиляции — каждый сгенерированный проект компилируется внутренне, прежде чем показать пользователю. Если он не компилируется, ошибка компилятора отправляется обратно, и модель генерирует заново, до двух раз. Пользователи видят только проверенные результаты.
- Зрелые библиотеки вместо самодельных стеков — MQTT теперь использует проверенную библиотеку PubSubClient; модели явно запрещено реализовывать протокол MQTT с нуля.
- Проверки полноты требований — компиляции недостаточно. Если промпт запрашивает Home Assistant MQTT, код должен фактически содержать работающий MQTT-клиент с логикой подписки/публикации/колбэка — локальное демо, замаскированное под реальную вещь, отклоняется и генерируется заново.
- Кэш только проверенных — кэш ответов хранит только проекты, прошедшие проверки компиляции и требований. Повторение популярного промпта всегда возвращает проверенную сборку.
- Правила реальности симулятора — сгенерированные скетчи теперь по умолчанию используют реальное имя точки доступа симулятора, доступный по умолчанию MQTT-брокер, двунаправленную обработку ON/OFF, сохраненное начальное состояние для Home Assistant и точные типы датчиков (геркон остается герконом).
Цифры сейчас
- Начальный процент прохождения реальных запросов: 1 из 6.
- Процент прохождения после исправлений, в ходе повторных независимых раундов: 6 из 6 последовательных компиляций + реальная MQTT-логика — включая ответы из кэша.
- Семантическое тестирование кэша: 6 запросов, без несоответствий. Одинаковые промпты возвращают байт-в-байт идентичный код; измененные промпты, платы или ограничения всегда генерируют свежий код.
- Сквозной MQTT: устройство → брокер → подписка в стиле Home Assistant → команда → импульс реле → публикация состояния, все подтверждено через реальный брокер, включая аутентифицированные брокеры.
- MCP-сервер: 8/8 инструментов протестированы от начала до конца; квотный биллинг сверен точно (успешные списаны, попадания в кэш и сбои бесплатны).
Что мы все еще открыто признаем
Честные ограничения, которые мы задокументировали во время тестирования:
- Интеграция с Home Assistant по умолчанию — ручной MQTT (конфиг discovery публикуется, но настройка авто-discovery HA зависит от вашей конфигурации MQTT в HA).
- Песочница симулятора имеет белый список исходящих — некоторые публичные брокеры доступны (например, broker.emqx.io), другие нет. Проверьте нашу документацию, что работает.
- Выбор оборудования соответствует запросу семантически, а не всегда буквально — модель может выбрать эквивалентный класс датчика; мы отмечаем это в примечаниях сгенерированного плана.
Зачем публиковать это
Любой может опубликовать демо-видео. Мы вместо этого опубликовали полную дугу: провальные раунды, исправления и повторные тесты — с воспроизводимой методологией. Если вы хотите попробовать сломать это сами, AI Builder бесплатен для одной сборки в день, а симулятор работает полностью в вашем браузере. MCP-сервер доступен с реальным учетом квот. Приносите свой промпт, свой брокер, свой скептицизм.
— Команда Sensbench