Автоисправление ошибок CI и комментариев PR с ИИ

ИИ-агент чинит упавшие запуски CI и обрабатывает комментарии к PR: что его запускает, какие ограничения действуют, как он сдаёт работу и что проверить до main.

Solviera Teknoloji 9 мин чтения

Возможность автоисправления ошибок CI с ИИ снимает с вас одну из самых однообразных рутин. Вы делаете push, а через десять минут GitHub Actions краснеет. Вы открываете лог, листаете двести строк, находите ошибку типов или устаревший снапшот, исправляете и пушите снова. С комментариями к PR то же самое: мелкие замечания вроде «переименуй эту переменную» или «здесь нет проверки на null» копятся, и каждое выдёргивает вас из текущего дела.

В статье: как передать эту работу ИИ-агенту, что его запускает, какие ограничения действуют, как он сдаёт работу и на что смотреть, прежде чем она попадёт в main.

Почему чинить вручную дорого

Починить красную сборку редко трудно. Дорого стоит переключение контекста:

  • Вы заняты другим. Уведомление о красном CI отрывает вас от дела.
  • Чтение логов занимает время. Настоящая ошибка спрятана среди сотен строк, а первая красная строка часто не настоящая.
  • Нужно воспроизвести локально. Найти команду CI, запустить её и разобраться с различиями окружения — это отдельная работа.
  • Комментарии приходят по частям. Ревью из шести комментариев значит прочитать все шесть и ответить на каждый.

Общее у этих задач — известный набор шагов. Работу с известными шагами можно отдать агенту.

Триггеры: когда агент стартует?

В AgentVera автоматизации находятся в Details → Automation → Automations. Правило само начинает работу, когда происходит событие. Здесь важны два триггера.

CI turned red

Этот триггер следит за провайдерами, добавленными на вкладке CI/CD: GitHub Actions, GitLab CI и Jenkins. Оставьте Branches пустым, чтобы следить за всеми ветками, или перечислите их, например main, release/*.

Некоторые запуски пропускаются намеренно. Запуски для pull request из форков и запуски merge request в GitLab правило не срабатывают. Ветка и лог форка принадлежат кому-то вне вашего репозитория, поэтому правило реагирует только на ветки, в которые вы можете запушить исправление.

PR got a comment

Новые комментарии ревью и обсуждения в открытых pull request читаются каждые 2 минуты с фильтрами:

  • Считаются только комментарии владельца, участников или соавторов репозитория. Случайный комментарий не запустит агента.
  • Комментарии ботов не считаются. Собственные ответы AgentVera помечаются и больше не подхватываются.
  • Если над этим PR уже работает агент, новые комментарии идут ему; второй агент не открывается.
  • Если дневной лимит исчерпан, комментарии не теряются; их прочитают позже.

Для триггеров комментариев к PR и issue origin репозитория должен быть на GitHub, а на вашем компьютере нужен вход в GitHub.

События отслеживает десктопное приложение, поэтому AgentVera должен быть открыт на вашем компьютере, чтобы правила работали.

Пресеты

Когда в проекте ещё нет правил, AgentVera предлагает пресеты. Два из них делают именно эту работу:

ПресетЧто делает
Fix CI when it breaksЧитает лог упавшего запуска и исправляет; пушит в ветки фич и открывает PR для главной ветки
Handle PR commentsПрименяет комментарии ревью в открытых PR, пушит в ветку PR и отвечает

Два других работают с issue с меткой «ajan» и обновляют зависимости каждый понедельник.

Что делает агент

Когда правило срабатывает, агент стартует в новом worktree на новой ветке, имя которой начинается с ajan/. Ветка создаётся от ветки события: ветки упавшего запуска или ветки PR. Ваша рабочая папка не затрагивается. Файлы .env, игнорируемые git, копируются в worktree, чтобы тесты могли запускаться, но никогда не пушатся.

Агент следует шагам из Playbook правила. Для CI плейбук по умолчанию — «Fix a CI failure»:

  1. Найти первую настоящую ошибку в логе.
  2. Запустить команду CI локально и воспроизвести ошибку.
  3. Исправить первопричину; если проблема в конфигурации CI (workflow, версия, переменная окружения), исправить её.
  4. Заново запустить команды CI локально и убедиться, что они проходят.

Для комментариев к PR по умолчанию используется «Address PR comments»: прочитать каждый комментарий и код, на который он указывает, применить верные, объяснить своё мнение там, где вы не согласны, запустить тесты и в ответе перечислить, что сделано по каждому комментарию.

Плейбуки можно менять. Сохраняйте свои на этом компьютере или в репозитории; плейбуки репозитория записываются в .agentvera/playbooks/, передаются команде через git и заменяют встроенный плейбук с тем же именем.

Используйте Extra instructions, чтобы сузить правило. Например: «Чини только тесты и ошибки типов; не меняй контракт API».

В поле Agent выберите Claude Code или Codex.

Ограничения: что останавливает агента?

Агента, который работает сам, нужно не просто хорошо настроить, а ограничить. В AgentVera ограничения такие:

  • Дневной лимит. У каждого правила есть значение Max per day от 1 до 50, по умолчанию 5, считается за последние 24 часа. Запуски вручную в него не входят.
  • Лимит на ветку. На ветку в день пробуется не более 2 автоисправлений CI, и одновременно выполняется или ждёт только одно исправление на ветку. Если исправление снова ломает CI, агент не крутится бесконечно.
  • Внешний текст не является инструкциями. Логи CI, комментарии к PR и текст issue передаются агенту как недоверенный внешний текст, который только описывает работу. Агенту сказано не раскрывать секреты, не запускать посторонние команды и не отправлять данные никуда ещё.
  • Агент не пушит. Он только коммитит. Push и открытие PR — дело AgentVera, которое выполняется после сдачи работы агентом.
  • Проверка на секретные файлы. Перед push каждый коммит и итоговое состояние проверяются на секретные файлы: .env, ключи вроде .pem и .key, id_rsa, .npmrc, .netrc, credentials.json и подобные. Файлы-образцы вроде .env.example допустимы. Если что-то найдено, ничего не пушится, а запуск завершается ошибкой.
  • Застрявший агент останавливается. Если агент просит помощи, замолкает или закрывается, запуск переходит в состояние «needs attention», и вы получаете уведомление.

Доставка: куда уходит работа?

Что происходит, когда агент закончил, задаёт On delivery:

ВариантЧто происходит
Automatic (push to the CI branch, PR to the main branch)Push, если падение было на ветке фичи, PR, если на ветке по умолчанию
Open a PRВсегда PR
Push to the same branchPush в ветку события; на ветке по умолчанию всё равно PR
Add to the merge queueВетка встаёт в очередь, и тестируется результат её слияния
Leave on the branchНичего не пушится; ветка остаётся у вас

Одно правило не меняется никогда: AgentVera не пушит напрямую в ветку по умолчанию. Если агент ничего не изменил, запуск завершается пометкой «no changes».

Для комментариев к PR работа пушится в ветку PR, а AgentVera оставляет в PR ответ с описанием того, что агент сделал по каждому комментарию.

Выбор очереди слияния означает, что исправление проверяется ещё раз поверх свежего main. О работе очереди я рассказываю в статье об очереди слияния.

Ревью до попадания в main

Автоматическое исправление не означает автоматического принятия. Проверить работу агента можно несколькими способами:

  • Сам pull request. Падения на main уже возвращаются как PR. Прочитайте diff, дождитесь зелёного CI и слейте, как любой другой PR.
  • Одобрение в очереди слияния. Опция Land passing branches automatically по умолчанию выключена, так что работа, прошедшая проверку, ждёт вас.
  • Leave on the branch. В первые недели работы нового правила самый осторожный вариант — выбрать Leave on the branch и проверять вручную.
  • Вкладка Runs. Здесь виден статус каждого запуска, его агент и открытый им PR.

Для ваших собственных агентов у AgentVera есть и автоматическое ревью кода: когда ход агента заканчивается, выбранная вами модель Claude проверяет код и сообщает находки с серьёзностью и file:line. Подробнее в статье ревью кода с ИИ.

При проверке особенно смотрите:

  • Исправили тест или код? Если агент поменял ожидаемое значение, чтобы тест прошёл, это тревожный знак. Запретить такое можно в Extra instructions.
  • Менялась ли конфигурация CI? Правка workflow может быть законной, а может быть пропущенным шагом.
  • Остался ли он в рамках задачи? Ошибка типов не должна возвращаться десятифайловым рефакторингом.

Исправления в один клик из центра CI/CD

Правило для каждого красного запуска может быть не нужно. Вкладка CI/CD показывает 25 последних запусков по каждому провайдеру; запуск можно повторить, повторить только упавшие задачи (не в Jenkins) или отменить. На красном запуске Have an agent fix it открывает агента с данными запуска и хвостами логов его упавших задач. На этот раз вы рядом с агентом.

Частые ошибки

  • Следить за main с «Push to the same branch» и ожидать прямого push. AgentVera не пушит в ветку по умолчанию; исправление всё равно приходит как PR.
  • Выставлять дневной лимит на максимум. Лимит — страховка. Держите его низким, пока правило не заслужит доверие.
  • Оставлять Extra instructions пустыми. Если сказать агенту, чего не трогать, результаты заметно сужаются.
  • Отдавать агенту нестабильные тесты. Для теста, который падает то и дело, агент может менять то, что менять не нужно. Сначала разберитесь с нестабильными тестами сами.
  • Хранить секреты в репозитории. Проверка остановит push, но настоящее решение — вообще не класть секреты в репозиторий.

Пример дня

Утро

Ночной коммит коллеги в main сломал CI. Правило «Fix CI when it breaks» это поймало: агент нашёл в логе ошибку типов, воспроизвёл её локально и исправил. Поскольку это была ветка по умолчанию, работа вернулась как PR. Вы читаете diff за кофе и сливаете.

Полдень

Коллега оставляет четыре комментария к одному из ваших PR. Через две минуты срабатывает правило «Handle PR comments». Агент применяет три, с одним не соглашается и объясняет почему. AgentVera пушит в ветку PR и оставляет ответ в PR. Вам остаётся лишь прочитать тот, с которым агент не согласился, и решить.

После обеда

CI продолжает падать на ветке фичи. Агент пробует дважды, и тесты оба раза остаются красными. Третьей попытки нет; статус виден на вкладке Runs. Лог показывает, что проблема в переменной окружения тестов, и вы исправляете её сами.

Чек-лист

  • Добавлен ли ваш провайдер CI на вкладке CI/CD?
  • Для репозиториев GitHub: выполнен ли вход в GitHub на этом компьютере?
  • Правильно ли заполнено поле Branches? Пустое значит все ветки.
  • Сказано ли в Extra instructions, чего агент не должен трогать?
  • Осторожно ли выставлен Max per day?
  • Соответствует ли On delivery тому, как вы любите проверять?
  • Секреты не хранятся в репозитории?

Подводим итоги

Передача ошибок CI и комментариев к PR ИИ-агенту возвращает вам самую прерываемую часть дня. Важна не скорость агента, а то, что он ограничен: в AgentVera он работает в собственном worktree, сам не пушит, никогда не пишет напрямую в ветку по умолчанию, не пушит работу с секретными файлами и получает ограниченное число попыток на ветку. Последнее слово остаётся за вами, в PR или в очереди слияния.

Читайте также:

Чтобы попробовать AgentVera, начните с главной страницы.

Вопросы

Может ли ИИ правда исправлять ошибки CI?

Часто да: сломанные тесты, ошибки типов, проблемы линтера и конфигурации CI вроде версии или переменной окружения. Агент находит первую настоящую ошибку в логе, воспроизводит её локально и исправляет. Результат вы всё равно проверяете.

Пушит ли агент прямо в main?

Нет. AgentVera никогда не пушит напрямую в ветку по умолчанию. Падение на main возвращается как pull request; падение на ветке фичи при доставке по умолчанию пушится в эту ветку.

Может ли агент застрять в цикле исправлений?

Нет. На ветку в день пробуется не более 2 автоисправлений, и одновременно выполняется или ждёт только одно исправление на ветку. У каждого правила есть и собственный дневной лимит.

С какими агентами это работает?

Правила автоматизации запускают Claude Code или Codex. Нужного агента вы выбираете в поле Agent правила.

Какие системы CI поддерживаются?

Триггер «CI turned red» следит за провайдерами GitHub Actions, GitLab CI и Jenkins, которые вы добавили на вкладке CI/CD. Для триггеров комментариев к PR и issue репозиторий должен быть на GitHub, а на вашем компьютере нужен вход в GitHub.

В какой тариф это входит?

Автоматизации доступны в тарифах Pro и Team. В десктопном приложении они находятся в Details → Automation → Automations.

Соберите своих агентов за одним столом.

Скачайте AgentVera бесплатно; ваши установленные CLI уже готовы к работе.

Другие статьи