Разработчик хоббийного вариометра на ESP32 решил не переписывать прошивку вручную: вместо этого он развернул Hermes Agent, пополнил аккаунт DeepSeek на 40 юаней и провёл шесть часов в диалоге с агентом в терминале. Результат — форк проекта VibroVarioAuto v1.6, в котором автор не ввёл ни одной команды на C++.

Агент действовал автономно: зашёл в исходный репозиторий, сделал форк, скачал среду разработки, скомпилировал код и запушил изменения на GitHub. Задача ставилась на русском языке и звучала примерно так: заменить цепочки if-else конечными автоматами, добавить зуммер в стиле Brauniger, компенсацию акселерометра по трём осям с учётом вектора гравитации, кольцевой буфер трека на flash-памяти с CRC и WiFi-экспорт через веб-интерфейс. В процессе агент задавал уточняющие вопросы — не про интерфейс, а про инженерные компромиссы: какую постоянную времени выбрать для комплементарного фильтра, считать CRC16 на каждую запись или CRC32 на блок, как отличать посадку от турбулентности, если акселерометр в болтанке выдаёт шум.

ОбластьVibroVario (оригинал)VibroVarioAuto v1.6 (форк)
Версия1.11.6
Строк кода~549~2000
ЗвукТолько виброВибро + зуммер Brauniger-style
Фильтр высотыEMA (простое сглаживание)Комплементарный: gravity-vector + барометр
АрхитектураЛинейный кодКонечный автомат (6 состояний)
НастройкиНетЭкран Settings + веб-интерфейс
СамодиагностикаНетSELF-TEST при пробуждении
Сторожевой таймерНетWDT 10 с на обоих ядрах
Запись трекаНетКольцевой буфер 1,5 МБ на flash
Экспорт трекаНетWiFi AP + HTTP CSV-сервер
Конфиги#defineconstexpr

Код вырос с 549 до почти 2000 строк. Линейная архитектура уступила место конечному автомату с шестью состояниями: CLOCK, SETTINGS, CALIBRATING, RUNNING, STOPPED, WEB_EXPORT. Все состояния собраны в структуру VarioFsm — статических локальных переменных в loop() больше нет. Появился сторожевой таймер WDT на 10 секунд для обоих ядер, самодиагностика при пробуждении, умный режим сна (15 минут без движения — переход в 24-часовой сон), настраиваемая чувствительность от 0 до 9, а также WiFi-точка доступа с HTTP-сервером, отдающим CSV-треки всех или отдельного полёта.

Архитектура сменилась с линейного кода на конечный автомат из 6 состояний; появились трекер полётов, WiFi-экспорт и самодиагностика.

Автор отдал код на анонимное ревью опытному инженеру — без указания, что писал агент. Вердикт: Senior Embedded Avionics, 8,75 из 10. Рецензент отметил дисциплину кода — использование constexpr вместо #define, защиту через WDT и CRC, наличие self-test. Среди замечаний — пять обращений к шине I2C без проверки возвращаемых значений, отставание документации от реализации и потенциальная гонка состояний при старте. Для хоббийного проекта это уровень, который штатный senior выдаёт за две-три недели: по оценке автора, опытный разработчик пишет 100–200 строк в день.

Контекст важен: Hermes Agent — это оболочка для автономной работы языковой модели с файловой системой, git и инструментами сборки. DeepSeek — китайская LLM, которая по ряду coding-benchmark'ов конкурирует с GPT-4o при существенно меньшей стоимости токенов. Именно дешевизна инференса позволила «сжечь» 300 млн токенов за 300 рублей — в моделях OpenAI или Anthropic тот же объём обошёлся бы на порядок дороже.

Автор формулирует вывод без оптимизма: экспертиза кодера уровня senior теперь стоит 300 рублей и шесть часов, экспертиза архитектора пока дороже — но ненадолго. Проект опубликован на GitHub, код написан полностью агентом.