В первой статье я рассказал, как поднял Hermes Agent с нуля на своём сервере. Четыре часа на установку, Telegram-бот, Caddy, Firecrawl, gbrain, отдельный профиль copywriter — всё встало.

Что меняется после установки#

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

Для бизнеса это ближе к инженерному исполнителю, чем к справочнику. Но такой исполнитель должен работать в рамках: с логами, ограничениями, понятным доступом и обязательной проверкой результата.

Теперь давайте поговорим о том, что происходит после. Потому что настоящая ценность агента проявляется не тогда, когда ты ему говоришь «напиши красиво». А когда даёшь ему чёткую инженерную задачу, доступ к живому контуру, инструменты и жёсткие границы.

Я дал Hermes доступ к приватному GitHub-репозиторию с ops/CI/CD одного клиентского SaaS-проекта. Задача была конкретная: оптимизировать бэкенд под нагрузку, провести нагрузочные тесты через k6, подтвердить p95 и долю ошибок, починить всё, что мешает, и оставить доказательства.

Вот как это выглядело на практике.

Агент — не планировщик, а исполнитель#

Первое, что я заметил: пока у агента нет доступа к реальному серверу и репозиторию, он пишет красивые планы. Как только появляются SSH, gh CLI, compose-файлы и проверки состояния в живом контуре — поведение меняется кардинально.

Hermes начал с того, что принял приглашение в приватный репозиторий через gh CLI, проверил права, склонировал код. Потом сравнил то, что лежит в репозитории, с тем, что реально крутится на сервере: compose, Caddy-конфиг, метки контейнеров, ревизию и точки проверки состояния.

Вывод номер один: без доступа к живому контуру агент будет рассказывать уверенные сказки. С доступом — начинает работать как нормальный инфраструктурный инженер: смотрит реальность, а не только README.

Доступы — это не «дай всё навсегда»#

Очень важный момент, который я теперь записал в gbrain как правило.

Агенту нельзя давать секреты в чат. Ни ключи, ни токены, ни пароли. Нужно давать путь к ключу или ссылку на хранилище, а не сам секрет. В одном моменте агент попросил «сохранить ключик» — я его поправил: «дай путь, а не сам ключ». Это теперь железное правило.

GitHub-доступ, SSH-ключи, токены и серверные учётки — всё выдаётся временно под задачу. После завершения этапа — ротация. Это не паранойя. Это нормальная гигиена после того, как агент интенсивно коммитит, деплоит и смотрит метрики.

Как выглядела реальная работа#

Процесс был такой:

  1. Агент зашёл в приватный ops-репозиторий.
  2. Сравнил состояние сервера и кода.
  3. Начал делать изменения в бэкенде: нашёл место, где tenant context setup происходил по одному запросу, перевёл на batching и кэширование горячих read-path'ов.
  4. Коммитил, пушил, следил за GitHub Actions.
  5. После деплоя проверял revision label, health-check, docker stats, pg activity.
  6. Запускал k6-тесты через публичный Caddy-контур. Важно: не в обход reverse proxy — тест должен идти тем же путём, что и реальный трафик.
  7. Смотрел k6 summary, Grafana, Influx.

Одним из первых ограничений оказался лимит Caddy на один IP. Один k6-runner выглядел как один клиент — ограничение срабатывало раньше, чем бэкенд показывал свою настоящую ёмкость. Агент это увидел, перекалибровал лимиты под ожидаемую нагрузку и проверил их повторным полным прогоном. Итоговые значения стали постоянной конфигурацией, а не временным обходом для теста.

В итоге API-путь уложился в требуемый p95, а доля ошибок осталась нулевой. Финальные прогоны подтвердили SLO. Сырые k6-отчёты и доказательства остались в приватном ops-репозитории.

Где агент ошибся (и это нормально)#

Была одна серьёзная ошибка.

Агент самостоятельно поднял Grafana + Influx на клиентском сервере, хотя я этого явно не просил. Просто «чтобы было удобно смотреть». Я отреагировал резко: наблюдаемость и демо-инфраструктура по умолчанию живут в лабораторной или собственной среде. Размещать их на клиентском сервере можно только если это заранее явно согласовано с клиентом и входит в согласованный объём работ.

Агент быстро исправился: удалил публичный маршрут и вспомогательные контейнеры с клиентского сервера, запушил исправляющий коммит в ops-репо и записал правило в gbrain.

Вывод номер два: границы полномочий важнее скорости. У меня с клиентом эти границы тоже выставлены: «можно трогать сервер» — не значит «можно разворачивать на нём любую вспомогательную инфраструктуру». По умолчанию графики и сбор метрик для нагрузочных тестов живут в своей среде; клиентский сервер — только если это отдельно согласовано.

Среда выполнения самого агента — тоже инфраструктура#

Ещё один момент, который легко упустить.

Hermes работает в собственной среде выполнения: на сервере агента остаются фоновые процессы, worktrees, логи, туннели, уведомления о завершении команд. Нельзя в процессе работы сломать этот контур.

Долгие задачи — нагрузочные тесты, большие миграции, сканирование — нужно запускать через background=true + notify_on_complete=true. И всегда проверять результат не по чату, а по живым артефактам: health, revision label, метрики, diff после деплоя.

Практический чек-лист: как давать задачу агенту-инженеру#

Если хочешь, чтобы агент реально работал, а не просто красиво планировал, проверь перед стартом:

  • Чёткая измеримая цель (SLO, метрики, health, revision).
  • Доступ к GitHub-репозиторию (временный WRITE).
  • SSH к целевому серверу (с путём к ключу, а не самим ключом).
  • Доступ к живому контуру (compose, Caddy, docker stats, health endpoints).
  • Отдельный контур для графиков и вспомогательной инфраструктуры нагрузочных тестов; клиентский сервер — только по отдельному согласованию.
  • gbrain с правилами и уроками предыдущих этапов.
  • Критерии приёмки: что именно считается «сделано».
  • План ротации доступов после завершения этапа.

Без этого получается «ещё один умный чат-бот». С этим — инженерный исполнитель, который коммитит, деплоит, тестирует и исправляет ошибки.

Итог#

Hermes Agent не заменил меня как инженера. Он стал хорошим исполнительным инженером, когда я дал ему рамку, критерии успеха, временные полномочия и возможность видеть реальный контур, а не только код из репозитория.

API-путь оптимизирован и подтверждён нагрузочными тестами. Ошибка с клиентской наблюдаемостью исправлена и зафиксирована как урок. Отдельный Pi/printer delivery path остаётся следующей задачей — текущие тесты его не покрывали.

Если вы хотите допустить AI-агента к реальным DevOps-задачам, деплою, тестам или внутренним инструментам, начинать нужно с рамок и проверки, а не с полного доступа. Напишите мне в Telegram или на почту — помогу разобрать, где агент может безопасно ускорить работу, какие права ему давать и как проверять результат до продакшена.