Писать надо только тогда, когда не можешь не писать (С) Л.Н. Толстой
На самом деле я работал над статьей о Claude Code, но тут пальцы сами открыли ноут на начали набивать буквы. Извините!
Приквел
Начну издалека, с темы, максимально далекой от предмета статьи. У меня есть друг, который постоянно норовит втянуть меня в свои хобби. За десятилетие я попробовал стать фанатом ножей, огнестрельного и пневматического оружия, охоты, выживания в БП, полетах на самолетах. Ни одно хобби не зашло.
Ровно два года назад, в новогодние праздники, он привез очередную задумку - FPV дрона Pavo20. Штуку - максимально странную, еле держащуюся в воздухе минуты 3. А, в моем исполнении, после коньяка - даже не взлетающую и вызывающую тошноту.
Как ни странно, тема зашла на УРА. Сначала было больно, но потом появились тысячи взлетов, утопленные в водопадах, потерянные, горящие дроны, серф в облаках - все то, что до появления данной технологии невозможно было представить (если ты не мечтал о небе с детства и посвятил себя небу полностью). Когда падаешь на неуправляемом дроне с высоты в полтора километра - адреналин выделяется ведрами.
Потом мы стали брать дронов на пусконладаки, чтобы не стирать ноги и лишний раз не лазить по мачтам. Сейчас я, зачастую, выкидываю дрона за дверь и медитирую в полете.
Удивительная технология, когда ты летишь как птица. Супруга, сын, дочка - равнодушны, а лично я растворяюсь в полете и в возможности увидеть мир таким, каким не дано его видеть нам, рожденными ходить.
Из приквела надо запомнить только одну фразу: увидеть мир таким каким не дано его видеть нам. Едем дальше!
Про боль
В предыдущей статье о RAG https://habr.com/ru/articles/983974/ я писал о том, что являюсь техническим директором и, по совместительству, совладельцем небольшой продуктовой компании, разрабатывающей, производящей, внедряющей и обслуживающей системы управления освещением. Выжить в сумасшедшей конкуренции, например, с Филлипсом можно лишь одним способом - не повторять ошибок.Ошибки делают люди.
Мы внедряем порядка 10 000 контроллеров в год. Обмен информацией происходит через радиоэфир, соответственно, на каждые 200-300 контроллеров продается одно Устройство Сбора и Передачи Данных (УСПД). Прибор нашей разработки, который слушает эфир, передает логи в Цифровую платформу и, по совместительству, управляет нагрузкой. Грубо говоря, включили освещение по графику, ночью задимировали, чтобы, А - сэкономить, Б - не загрязнять светом окружающую среду и циркадные ритмы людей.
В результате - УСПД входит в состав полноценного Шкафа Управления Освещением (ШУО), итого: 300-400 ШУО в год. С годами мы настолько развили свою узкоспециализированную Цифровую Платформу, что у нас все ШУО в виде “живых” мнемосхем отображают в онлайне внешний вид и состояние оборудования внутри шкафа (рисунок 1).

В чем, собственно, боль?
Сначала в Цифровой платформе, в виде сущности, появился Шкаф Управления Освещением. Запись в базе данных с сотней параметров: где находится, как работает, идентификаторы, настройки, конфигурация.
Спустя годы решили нарисовать мнемосхему - благо появились технологии (не спрашивайте какие!). Но нарисовать решили по простому - JSON и библиотека для рисования на канвасе. Безусловно, моя команда умеет смотреть вперед на 3 шага и понимает риски. В контексте этого стратегического “вижна” решили синхронизировать мир настроек и мир мнемосхемы, но только в базовых вещах, например, размеры. Остальное оставили на потом, потому что было не понятно, полетит ли мнемосхема вообще.
Мнемосхема прижилась. Инженеры, пусконаладчики, даже клиенты начали рисовать Шкафы Управления. Я пытался наложить жесткие ограничения, но процесс рисования тогда сразу становился сложным, а рисовать надо, быстро, каждый день.
В результате начали появляться, а потом масштабироваться франкенштейны, например, трехфазный ШУ с однофазным счетчиком, счетчики разного размера, лишние автоматические выключатели.
Как бы мы решали боль в старом мире
А вы знаете что фраза “Как бы мы решали боль” невозможна в ряде культур, например, в Китае, Англии - нет “нереального прошлого” и, соответственно, нет таких форм в языке. То есть они бы даже не смогли об этом поговорить. А мы поговорим!
Как проектный менеджер со стажем я бы:
Запросил от инженеров список возможных ошибок. Где-то через неделю получил бы список, видимо процентов на 70 полноты. Но выглядел бы он на 100%.
Дальше разбивка логики на задачи программистам. Настройки и мнемосхема - разные люди - две нитки задач.
Исполнение задач. Но, так как синхронизировать двух занятых текучкой людей в рамках этого небольшого подпроекта невозможно/неэффективно, то ритм исполнения будет разный, когда все дойдут до конца - нужно будет синхронно принять и чуть шлифануть результат.
Отдать инженерам, и тут окажется что список был полон на 70% и нужно снова заходить в двух-трех недельный круг. Скорее всего, не последний.
Итого, в старом мире, нам потребуется порядка двух месяцев, оптимистично, чтобы сделать кнопку на полтора десятка проверок. Ставим галочку и откладываем этот милый подпроект до очень хороших времен.
Так как у меня в голове, наверное, с десяток подобных задачек по файнтюнингу, этот лежит в самом низу большой папки.
А теперь про мир с AI
Коллеги, оцените элегантность и эффективность!
Ставлю одну задачу: сделать кнопку, которая вызывает Webhook методом POST и передает пару параметров (рисунок 2) и в модальном окне выводит результат, пришедший в HTML. Вот и все. Вместо трех нудных месяцев я в течение пары дней получаю кнопку и больше мне программисты не нужны.

Дальше я за пару часов накидываю воркфлоу в n8n (рисунок 3). HTTP Request тут к нашему штатному API. JS код пишет Claude, получая на входе JSON из API и задачу. Тут 7 узлов CODE, 5 написаны с первого пропмта.

Когда автоматизация собрана осталось дело за малым (а на самом деле, за главным) - написать промпт проверки. Схема простая:
Подложил контекст из результатов API, обработанных CODE.
Написал условия вывода
Написал 4 проверки. И вот эти 4 проверки высосали душу - устал - остановился. Основная трудность: сопоставить два JSONa и написать условия.
Позвал инженера и сказал пиши! Как камень с души, думал я. Но через три проверки инженер вернулся еще более уставший, это раз. И вместо проверки ошибки ДА/НЕТ он, по ходу эпистолярных тренировок в промпте, выдумал еще сущность “Предупреждение”, это два.
Тут мы с инженером позвали пуско-наладчика, показали волшебство и поручили написать в файле проблемы с которыми он сталкивался. Пуско-наладчик, своим скупым и корявым языком написал… Сначала я подумал, что мы сильно вильнули на пути здравого смысла в упрощении задачи.
А потом я сделал так: Взял уже написанный промпт с контекстом и нашими проверками, добавил туда файл пуско-наладчика и сказал Claude - пиши остальные проверки. Случилось волшебство - появился промпт с 13 проверками. Инженер внимательно почитал и дал добро на “этот вариант”.
Мы нажали кнопку, подождали 30 секунд и получили чудо. Настоящее ЧУДО!
Пуско-наладчики пошли проверять мнемосхемы, накапливать опыт чего не хватает и что поправить в промпте проверок. На Рисунке 4 логи проверок в группе ТГ.

Инженер, освобожденный от нудной процедуры проверок внес рацпредложение: пусть результат проверок выводится в таком порядке: сначала ошибки, потом предупреждения и в конце успешные. Я взял код форматирования в HTML (предварительно сохранив), положил его в Claude, попросил изменить порядок - ву-а-ля (рисунок 5).
Уважаемые читатели, каждый шаг - чудо. Новые подходы. Безумные скорости. И это только начало. Мы привязали к поясу реактивный двигатель и учимся жить в новой конфигурации. Эволюция, как мы знаем, потребует жертв. Но цена, определенно, небольшая.

Инсайты
Очень сложно объяснить подобные схемы программистам
Видимо, они о чем-то догадываются.
Когда вместо синхронов, рассказа бизнес логики проверок, обсуждений интерфейса, QA - я прошу просто кнопку с названием, которая будет делать… , видимо, это не укладывается в мировоззрение.
Повторные просьбы точно так же скользят.
Программисты четко понимают новую архитектуру. У них открыты эти автоматизации n8n. Они сами туда добавляют какие-то непонятные мне структуры. Но повторить даже простые вещи пока не могут. Ничего - научу.
Пример промптов проверки
Та самая проверка, в которой Инженер ввел термин Предупредить
## Настройки серверов подключения
1. Получить из настроек шкафа:
- destinationIp1 (IP адрес сервера 1)
- destinationPort1 (Порт сервера 1)
- destinationIp2 (IP адрес сервера 2)
- destinationPort2 (Порт сервера 2)
2. Проверить что все 4 поля заполнены (не "null" и не пустая строка)
3. Проверить что порты имеют значения "7338" или "7339"
4. IP серверов 217.15.204.149
5. Ошибки:
- Если поля не заполнены - указать какие именно
- Если порты неверные - указать какие порты и их значения
6. Если значение IP серверов отличаются от 217.15.204.149 - вывести предупреждение (не ошибка)
7. Предупредить пользователя обратить внимание на значение IP
Проверка сделанная Claude
## Датчик открытия двери
1. Найти на мнемосхеме элемент с типом "DoorOpenSensor"
2. Получить из настроек шкафа значение doorOpenSensorContactNumber (Датчик открытия двери (№ входа))
3. Проверки:
- Если на мнемосхеме есть DoorOpenSensor, но doorOpenSensorContactNumber не равен "1" - ошибка
- Если на мнемосхеме нет DoorOpenSensor, но doorOpenSensorContactNumber равен "1" или любому другому значению - ошибка
- Если на мнемосхеме есть DoorOpenSensor и doorOpenSensorContactNumber равен "1" - успешно
- Если на мнемосхеме нет DoorOpenSensor и doorOpenSensorContactNumber равен "null" - успешно
4. Ошибки:
- "На мнемосхеме присутствует датчик открытия двери, но в настройках не указан контакт №1 (текущее значение: {doorOpenSensorContactNumber})"
- "В настройках указан контакт №1 для датчика открытия двери, но на мнемосхеме датчик отсутствует"
5. Успешный результат:
- "Датчик открытия двери корректно настроен на контакт №1"
- "Датчик открытия двери отсутствует и doorOpenSensorContactNumber равен null (настройка корректна)"
Проверка всегда дает результат
Сначала я в жестокой форме требовал у LLM не выводить результат успешных проверок. Зачем знать о том, что все хорошо. Оказалось, что заставить LLM что-то не выводить - очень трудозатратная история. Выглядит так, что вывести любую чушь для LLM любого создателя проще/выгоднее, чем не вывести ничего.
Решил не насиловать стохастического попугая, просто попросил форматнуть вывод в JSON и ввести признак типа результата. Это, кстати, проще потом форматнуть в HTML, и, в целом, правильнее и логичнее.
Отдал написание проверок в промпте самим инженерам
Уменьшить эффект испорченного телефона - логичное и доброе дело. Но, в итоге, промпты для AI должен писать другой AI.
Когда я презентовал функционал сервисным инженерам и пуско-наладчикам, они сразу попросили кнопку Исправить
Вот тут я очень… удивился. Удивился тому, что сам не додумался до такой простой и функциональной кнопки. С серьезным лицом я порекомендовал народу сначала проверить сотню шкафов, чтобы отшлифовать промпт, а потом приходить за новым чудом.
MCP
Теперь у меня постоянно открыт наш документ с описанием API. В автоматизациях существенное время уходит на то, чтобы накликать заголовки HTTP Request к API под задачу. Думаю, что все сэкономленное время программистов отправить на написание MCP сервера и уже закрыть дверь старого медленного и неэффективного мира
Заключение
Сначала инженеры были врагами человека, они отнимали у него работу и заставляли искать новые ниши где можно было обменять труд на средства к существованию.
Потом появились программисты - более жестокие враги людей. Они начали отнимать работу и у простых людей и у инженеров.
И вот появился монстр - AI отнимает работу даже у программистов!
Ну а я займусь тем, что сделаю кнопку ИСПРАВИТЬ (это еще одна задача для программистов) и подумаю на MCP.
Комментарии (10)

ivanvershinin
17.01.2026 17:23И вот появился монстр - AI отнимает работу даже у программистов!
И в перспективе у технических директоров. Главное, чтобы у собственника в окружении нашёлся бес-искуситель, который опишет ему дивный ИИ-рай, где будут работать одни ИИ-агенты и не нужны будут зарплаты, только токены ему закидывай.

Wesha
17.01.2026 17:23Проверки:
- Если на мнемосхеме есть DoorOpenSensor, но doorOpenSensorContactNumber не равен "1" - ошибка
- Если на мнемосхеме нет DoorOpenSensor, но doorOpenSensorContactNumber равен "1" или любому другому значению - ошибка
- Если на мнемосхеме есть DoorOpenSensor и doorOpenSensorContactNumber равен "1" - успешно
- Если на мнемосхеме нет DoorOpenSensor и doorOpenSensorContactNumber равен "null" - успешно
О боже, у меня такого уровня «проверки» на подкорке записаны, и потому отдельно их расписывать — только
бумагубайты зря тратить. Если вашим прогерам это надо отдельно разъяснять — примите мои соболезнования.

Apoheliy
17.01.2026 17:23Пожалуйста, не плюйте сразу, но:
Так статья, это что?:
предупреждение, как делать не нужно?
восхваление, что нужно именно так и делать?
Почему такие вопросы:
Здесь (на хабре) уже проскакивала статья, что n8n отменила какие-то бесплатные планы, по другим подняла стоимость. И, как результат, кто-то отказался им пользоваться, некоторые "стартапы" оффнулись.
Далее читаем статьи, что люди пользовались версией условного chatgpt 4, потом пришёл 5-ый и ... фффсссёёё ..., промпты работают "нетак". А назад никто не пускает.
Ещё есть статья со взглядом от инвестора (вдруг, вы заходите поднять инвестиций снаружи; или, как минимум оценить свой бизнес). И там один из основных вопросов: "вот вы научились пользоваться сервисом: под него подогнали api, скрипты, промпты, форматы и т.д. ... И завтра стоимость сервиса увеличивается в 10 раз. У вас ведь ЕСТЬ ПЛАН, как это обойти?"
---
Ведь у вас есть план?
План, как n8n развернуть у себя?
План, как заменить клода на что-то другое? Или, опять же, развернуть его у себя?
Пока же всё это выглядит так, что вы отдали часть функций "внешнему сервису" и не похоже, чтобы вы смогли с него безболезненно соскочить.
---
По-моему (извините, вставлю 5 копеек), было бы интереснее, чтобы клод для вас написал отдельную программу/микросервис, которая делает проверки. Во всяком случае, тогда вы всегда можете пользоваться своей, изолированной версией программы, даже если все эти сервисы отвалятся.
Или, как вариант, я не очень понял статью и на самом деле вы ни от кого не зависите. Тогда всё шикарно!

fujinon
17.01.2026 17:23фраза “Как бы мы решали боль” невозможна в ряде культур, например, в Китае, Англии - нет “нереального прошлого” и, соответственно, нет таких форм в языке
За китайский не скажу, а в англ. это запросто - How would we have handled etc ...

s_astapov Автор
17.01.2026 17:23О да! Спасибо. Это было вставлено для того, чтобы соблюсти ритм слога. Художественный вымысел, так сказать.
Но! если уж говорить как лингвистик с лингвистиком, то да - в современных языках есть все варианты наклонений - технологии меняют языки. Но в русском это синтетическое - так сказать культурное встроенное. А в английском - аналитическая игра слов - новодел.

it-infinite
17.01.2026 17:23Вы заменяете надежную инженерную валидацию стохастической моделью, что в промышленном IoT недопустимо. Вместо исправления архитектуры и синхронизации схем данных вы создаете систему, где проверка критических параметров зависит от настроения нейросети и формулировок пусконаладчика.
Главные риски:Отсутствие воспроизводимости: одна и та же ошибка может быть пропущена завтра из-за вероятностной природы LLM.
Неконтролируемый техдолг: логика размазана между n8n, JS-узлами и промптами, что невозможно нормально тестировать и версионировать в Git.
Иллюзия экономии: время, затраченное на бесконечный тюнинг промптов и "высасывание души", уже сопоставимо с написанием жестких правил валидации на коде. Вы не победили сложность, вы ее замаскировали. В промышленной автоматизации "вайб-кодинг" обычно заканчивается серьезным инцидентом на объекте, когда ИИ неверно интерпретирует "корявый язык" в промпте.

s_astapov Автор
17.01.2026 17:23Накидали… Спасибо!
Видимо, я слишком абстрактно описал основную мысль. А мысль такая:
Очень быстро реализована функция, которая долго оставалась на пыльной полке.
Возможность сделать так появилась благодаря тому, что у меня к команде из 4 программистов добавился еще один на базе Claude
Это и есть технологическая сингулярность - показатель того, что мир меняется.
Дальше по порядку:
Безусловно, MCP сервер - штука серьезная, даже стратегическая - генераторам вероятности ее поручать странно. Но без них точно не обойдется. Это разговор для следующей статьи.
АИ агенты - очень перспективная технология, ее нам только предстоит осознать в ближайшие годы. Комбайн из AI агентов - Claude Code - даже сейчас ОЧЕНЬ ХОРОШ. А мы еще даже не начали. Прикол в том, что эти АИ агенты очень быстро развиваются. Можно игнорировать все это: консервативность - один из инструментов выживания человечества. Тут каждый выбирает свою стратегию. Я выбрал идти с AI.
Проверка написанная на человеческом языке, которая понятна машине - прорыв. Это быстро, понятно ВСЕМ, от пуско-наладчика до программиста. Нет “кейсоф” и “ифов”, за которыми еще надо нырять в репозитарии. И да! Народ сразу прибежал ко мне - вот тут ваш ИИ ошибся. Да - ошибся. Но, во-первых, это чуть разогрело мозг того кто увидел ошибку, во-вторых, таких ошибок в 50 раз меньше, чем у человека. И, в целом, теперь хоть кто-то проверяет зоопарк, дальше будет делать это все лучше и лучше.
N8n, Claude - просто кейсы. Когда ушел Trello я одной кнопкой мигрировал в Kaiten. Моделей сотни. Скрипты из n8n одной кнопкой мигрируются куда-то дальше. Промпты примерно одинакого отрабатываются в DeeSeek, Grok и на локально установленном Qwen. Просто на локальном Qwen они занимают не 20 секунд, а минуту. Можно, конечно, бояться что все вдруг остановится. Но я исхожу из того, что если технология появилась она будет улучшаться, последние 30 лет подход не подводил ни разу.
Кстати говоря, моя продуктовая компания находится в ТОП5 рынка систем управления освещением РФ. Мы оптимистично идем вперед.
Мой любимый комментарий от @it-infinite. Тут каждая строка пульсирует!
На самом деле, все начинается с того, что промышленная IoT на 3-5-8 тысяч контроллеров в радиоэфире, размазанных по городу миллионнику - это та самая максимально стохастическая субстанция, которая норовит стать еще более стохастической, и которую надо обслуживать.
За десятки лет я видел много продуктовых компаний, работающих на земле - все это конструкции состоящие из технического долга. Выжили те, кто научился им управлять.
Последние 10 лет я только и делаю, что в очередной раз организую команду с копьями на лошадях в бой за надежную инженерную валидацию стохастической непрогнозируемой установки. А мы одни из лучших на этой грядке.
Даже в самом страшном сне я не буду давать прямые права AI агентам для управления установками. Вы правы - наворотит и прилет. Но помочь с аналитикой, мониторингом, проверками - это то что спустила нам вселенная за пережитые сложности.

Usurer
17.01.2026 17:23Прочитал несколько раз, но так и не осознал, какой тут процесс.
Очевидно есть джейсоны, которые описывают мнемосхему. Есть правила, на основании которых происходит проверка. Правила, как я понял, написаны железякой и верифицированы человеком. Дальше мы берём правила, берём джейсоны, отдаем это опять же в ллм и получаем на выходе ошибки и предупреждения. Так?

s_astapov Автор
17.01.2026 17:23Все верно: есть два JSONa: настройки шкафа управления и рисунок мнемосхемы этого шкафа.
Есть правила. Часть их написала железка, перефразировав мысли пусконаладчиков, часть написал человек. Все правила я валидировал, прогнал на примерах.
AI агент пихает правила и JSONы в LLM, в данном случае DeepSeek chat, накрученный на минимальную креативность и минимальные штрафы за повторы, который отдает JSON с результатами проверок.
Процесс максимально простой. Ценность в промпте с правилами проверок, который понятен и людям и железке.
sunnybear
Mcp сервер можно и Claude написать. Не нужно программистов по ерунде отвлекать