Разработчик хоббийного вариометра на ESP32 решил не переписывать прошивку вручную: вместо этого он развернул Hermes Agent, пополнил аккаунт DeepSeek на 40 юаней и провёл шесть часов в диалоге с агентом в терминале. Результат — форк проекта VibroVarioAuto v1.6, в котором автор не ввёл ни одной команды на C++.
Агент действовал автономно: зашёл в исходный репозиторий, сделал форк, скачал среду разработки, скомпилировал код и запушил изменения на GitHub. Задача ставилась на русском языке и звучала примерно так: заменить цепочки if-else конечными автоматами, добавить зуммер в стиле Brauniger, компенсацию акселерометра по трём осям с учётом вектора гравитации, кольцевой буфер трека на flash-памяти с CRC и WiFi-экспорт через веб-интерфейс. В процессе агент задавал уточняющие вопросы — не про интерфейс, а про инженерные компромиссы: какую постоянную времени выбрать для комплементарного фильтра, считать CRC16 на каждую запись или CRC32 на блок, как отличать посадку от турбулентности, если акселерометр в болтанке выдаёт шум.
| Область | VibroVario (оригинал) | VibroVarioAuto v1.6 (форк) |
|---|---|---|
| Версия | 1.1 | 1.6 |
| Строк кода | ~549 | ~2000 |
| Звук | Только вибро | Вибро + зуммер Brauniger-style |
| Фильтр высоты | EMA (простое сглаживание) | Комплементарный: gravity-vector + барометр |
| Архитектура | Линейный код | Конечный автомат (6 состояний) |
| Настройки | Нет | Экран Settings + веб-интерфейс |
| Самодиагностика | Нет | SELF-TEST при пробуждении |
| Сторожевой таймер | Нет | WDT 10 с на обоих ядрах |
| Запись трека | Нет | Кольцевой буфер 1,5 МБ на flash |
| Экспорт трека | Нет | WiFi AP + HTTP CSV-сервер |
| Конфиги | #define | constexpr |
Код вырос с 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, код написан полностью агентом.


