Промышленная автоматизация не прощает грязи в коде. Когда я в очередной раз правил структурированный текст для контроллера Omron, пришлось вручную перебирать индексы массивов и проверять каждую ветку. Тогда я поймал себя на мысли: это давно можно отдать нейросети. Вопрос был в том, как встроить её в процесс без риска сжечь дорогое оборудование.
Сейчас я программирую Omron через ИИ-агента, и это не магия. Это связка из VS Code, расширения Cline, SSH в контейнер и двух файлов: agents.md и skills.md. Плюс строгие правила для модели и финальный контроль человека. В этой статье расскажу, как всё это настроил, где спотыкался и какие инструменты использую из России.
Почему обычный ChatGPT не подходит для программирования контроллеров
Чат-бот умеет рассуждать, но не умеет действовать. Попросите его поправить файл или выполнить команду в терминале, и он вежливо напишет инструкцию, как сделать это самому. У модели нет рук. ИИ-агент устроен иначе: это паттерн ReAct (Reason + Act). Языковая модель получает доступ к файловой системе, терминалу и API. Она строит план, выполняет шаги, видит результаты и корректирует поведение.
Один из самых полезных материалов по теме - статья «ИИ-агенты. Часть 1: Первые шаги» на Хабре. Там подробно разобрано, как поднять окружение и сделать первые промпты. Я по ней и начинал. Второй источник, статья на prikotov.pro, объясняет почти год выстраивания проекта под ИИ-агентов. Автор пришёл к выводу: важна не столько модель, сколько обвязка вокруг неё. Инструкции, правила, инструменты, короткие циклы обратной связи через тесты и ревью. Я с этим полностью согласен.
С чего начинается мой процесс: контейнер, SSH, Cline
Мой проект построен так: логика контроллера Omron вынесена в текстовые файлы на языках ST и Ladder. Да, Sysmac Studio для заливки в контроллер всё равно нужен, но правки я делаю в коде, а не мышкой по ладдер-диаграммам. Исходники лежат в Git, поэтому к ним может подключаться любой инструмент, включая нейросети.
Первым делом я поднял Docker-контейнер с рабочей средой. В Dockerfile, который я частично подсмотрел на Хабре, прописаны openssh-server, git, docker и базовые утилиты. Это позволяет изолировать процесс и не пачкать хост-систему. После запуска контейнера я подключаюсь к нему по SSH через встроенное расширение VS Code. Дальше открываю рабочую папку, активирую расширение Cline и устанавливаю его внутрь контейнера.
В настройках Cline добавляю API-ключ от OpenRouter и выбираю подходящую модель. Для первых экспериментов хватало среднего уровня, позже перешёл на флагманы. Обязательно включаю режим act: он позволяет агенту менять файлы и запускать команды. Авто подтверждение действий ставлю после того, как уже привык к его поведению и настроил правила. Сначала лучше всё подтверждать вручную.
Ключевой момент: агент работает не с виртуальным контроллером, а с текстовыми исходниками. Сборку, генерацию кода под конкретную модель Omron и заливку делаю я. Такое разделение обязанностей убирает 90 процентов страха.
agents.md и skills.md: как я настраиваю правила для ИИ
Перед первым серьёзным промптом я создал два файла. agents.md это конституция проекта для агента. Там перечислены условия разработки: используем контейнеры и .env, применяем механизм router, обязательное тестирование перед коммитом и push в ветку dev. skills.md это справочник приёмов: как структурировать файлы, какие типовые решения использовать для датчиков и приводов, где лежат нужные модули.
Интересная деталь: эти файлы писал не я, а другая модель. Взял одну из самых умных, загрузил в неё описание проекта и попросил составить инструкцию для коллеги-джуниора. Потом чуть подправил руками. Такой подход работает лучше, чем писать самому: модель учитывает даже те требования, которые я забыл озвучить.
Что конкретно попадает в agents.md, покажу списком:
- не менять файлы вне каталога src/
- не удалять комментарии с описанием протокола
- обязательно добавлять тесты для новых функций
- после каждого коммита делать push в ветку dev
- не пушить в main без указания пользователя
Дальше агент читает agents.md при каждом запуске. Это как онбординг для нового сотрудника. Если я хочу что-то поменять в правилах, просто редактирую файл, и следующая сессия уже работает по новым правилам. Никаких повторных объяснений в промпте.
Отдельно про Git. Я добавил в agents.md требование: перед каждым коммитом прогонять тесты, после этого обязательно push в dev. Так у меня всегда есть рабочая ветка и история изменений. Агент при этом не имеет права пушить в main. Только я мержу после ревью.
Маршрутизатор: почему один агент не справлялся
Сначала у меня был один агент на всё. В итоге он путался: мог вместо расчётной логики полезть в сетевые настройки, забывал про типы данных и на ровном месте ломал рабочую версию. Помог паттерн маршрутизатора, который я вынес из статьи в журнале «Код». Идея простая: на входе стоит быстрая модель-диспетчер. Она классифицирует запрос и передаёт его агенту-специалисту.
У меня появилось три специализированных агента. Первый отвечает за математику и алгоритмы, работает с массивами и формулами. Второй отвечает за коммуникацию: модули, протоколы, обмен данными. Третий отвечает за тестирование и рефакторинг, следит за стилем и покрытием. У каждого агента свой системный промпт и ограниченный набор инструментов. Например, агент-математик не имеет права трогать Git и менять сетевые конфигурации.
Сначала я боялся, что маршрутизация добавит лишней сложности. На практике это радикально снизило количество ошибок. Агент-диспетчер работает за миллисекунды, билеты уходят сразу. И даже если маршрут выбран неверно, специалист-агент сам переспрашивает, потому что видит задачу вне своей зоны.
Ещё один принцип из той статьи я повторяю как мантру: нельзя автоматизировать бардак. Если вы сами не знаете, как должен работать процесс, агент это не придумает. Он ускорит и углубит хаос. Поэтому перед автоматизацией я описал три рамки: какие файлы менять, какие команды выполнять и какой результат считать завершённым. Всё, что за рамками, уходит на подтверждение человеку.
Что агент реально делает с кодом Omron
Приведу пару примеров из практики. Недавно нужно было переписать блок обработки сигнала с энкодера. Агент перебрал несколько вариантов, показал мне diff, написал тесты для граничных значений и подсказал, где я раньше ошибался с переполнением целочисленного типа. Раньше на это ушло бы два дня, сейчас - четыре часа с учётом моего ревью.
Второй пример - рефакторинг повторяющегося кода. В проекте было полтора десятка почти одинаковых блоков настройки параметров для приводов. Агент убрал дублирование, выделил общую функцию и заменил вызовы. Я только проверил, что адресация в памяти не поменялась. Такое доверие пришло после трёх месяцев совместной работы.
Но есть и боль. Если проект слишком большой и контекст не помещается в окно модели, агент начинает выдумывать. Поэтому я разбиваю проект на изолированные модули и в agents.md храню ссылки на актуальные версии. Ещё помогает не держать в одном файле больше 300-400 строк кода. Модель так лучше видит структуру.
Где брать флагманские модели в России: 3GPT от 3SELLER
Для такой работы нужны самые умные модели, которые есть на рынке. Чат GPT 6, Claude Opus 5.5, Claude Fable 5. Хорошая новость в том, что подключаться к ним из России больше не проблема. Я пользуюсь сервисом 3GPT от 3SELLER. Это роутер, который даёт доступ сразу ко всем флагманским моделям по одной цене - 149 рублей. Оплата российской картой, через СБП или криптой, никаких иностранных аккаунтов.
В списке доступных моделей: Chat GPT 6 Astra, Chat GPT 5.5, Chat GPT 6.1 Sol, Claude Fable 5, Claude Fable 5.1, Claude Opus 5.5. Есть и Nano Banana для создания изображений, а также генерация видео. Я в основном работаю с кодом и текстами, поэтому чаще выбираю Claude Opus 5.5 для сложных архитектурных задач и Chat GPT 6 для быстрых правок. Переключаться между моделями можно прямо в интерфейсе или через API.
Вот как выглядит интерфейс, когда открываешь проект в 3GPT: 
Настроил один раз, и дальше просто выбираешь нужную модель под конкретную задачу. Для Cline я беру API-ключ от 3GPT и вставляю его в настройки вместо OpenRouter. Или можно вообще не заморачиваться с настройкой и использовать готовых ИИ-агентов от 3SELLER. Они уже упакованы под типовые сценарии, а модель внутри можно менять прямо в чате.
Вот скриншот раздела с агентами: 
Помимо программирования, я использую 3GPT и для повседневных рабочих задач. Создаю продающие тексты, каркасы сайтов, обрабатываю изображения через Nano Banana, иногда генерирую видео для презентаций. Для бизнеса это закрывает почти все потребности в контенте.
Получить доступ ко всем флагманским моделям нейросетей из России можно на официальном сайте 3GPT: https://3seller.com/3gpt. А готовые ИИ-агенты от 3SELLER лежат здесь: https://3seller.com/ai/agents.
Если вы программируете Omron и хотите попробовать ИИ-агента, начните не с покупки супердорогой модели, а с подготовки окружения. Поднимите контейнер, подключите Cline, напишите agents.md и skills.md, настройте Git. Дайте агенту сначала маленькие задачи и оставляйте за собой финальное ревью. Модели приходят и уходят, а правильно выстроенный процесс остаётся с вами.