Возможность автоисправления ошибок 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»:
- Найти первую настоящую ошибку в логе.
- Запустить команду CI локально и воспроизвести ошибку.
- Исправить первопричину; если проблема в конфигурации CI (workflow, версия, переменная окружения), исправить её.
- Заново запустить команды 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 branch | Push в ветку события; на ветке по умолчанию всё равно 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 или в очереди слияния.
Читайте также:
- Автоматизации
- Центр CI/CD
- Ревью кода
- Конвейер рабочего процесса ИИ-агентов
- Параллельные кодинг-агенты
Чтобы попробовать AgentVera, начните с главной страницы.