От GitHub Issue до продакшена: Как построить конвейер, который заставит AI-агента менять ваш сайт
Как заставить LLM-агента автоматически преобразовывать тикеты из GitHub Issues в работающие веб-страницы. Пошаговый гайд по пайплайну.

Если вы устали вручную переводить баг-репорты и пожелания пользователей в задачи для разработчиков, вам нужен такой AI-агент. Я настроил конвейер, который автоматически берет любой тикет из GitHub Issues и пытается превратить его в готовую, работающую веб-страницу на вашем сайте.
Этот гайд раскладывает по полочкам, как работает такая система, какие компоненты нужны и где кроются главные риски.
Зачем вообще нужно, чтобы AI чинил ваш сайт по тикету?
Основная проблема в разработке — разрыв между фидбеком пользователя (в виде сырого текста в тикете) и готовым, развернутым кодом. Обычно это требует участия менеджеров, аналитиков и разработчиков.
Автоматизация этого процесса с помощью LLM-агентов позволяет сократить цикл от "пожелания" до "рабочего демо" до минут. Вместо того чтобы просто генерировать код, агент должен пройти весь жизненный цикл: понять запрос, спланировать изменения, написать код, протестировать его и выкатить на прод.
Ваша задача — не просто заставить LLM писать код. Ваша задача — построить рабочую систему (пайплайн), которая будет принимать сырые данные (Issue) и выдавать структурированный результат (рабочую страницу).
Как выглядит конвейер: от Webhook до GitHub Actions
В основе этой системы лежит архитектура, которая превращает GitHub в триггер, а агента — в исполнителя.
Пошаговая логика выглядит так:
- Триггер: Пользователь создает Issue в репозитории.
- Сбор данных: GitHub Webhook ловит это событие.
- Обработка: Webhook запускает внешний сервис (например, Docker-контейнер), который содержит AI-агента.
- Действие: Агент анализирует текст Issue и решает, что нужно сделать с сайтом.
- Выкатывание: Если решение принято, агент генерирует изменения в коде и запускает процесс деплоя через GitHub Actions.
🛠️ Шаг 1. Настройка приема тикетов (The Trigger)
Для начала нужно, чтобы внешняя система знала о новом Issue. Это делается через GitHub Webhooks.
Вам нужно настроить webhook для нужного репозитория. Он должен быть привязан к событию issues (или issue_comment, если вы хотите реагировать на комментарии).
В вашем коде-сервисе (который будет принимать webhook) вы должны уметь парсить JSON-тело, чтобы извлечь:
issue_number: Номер тикета.issue_title: Заголовок (главная суть запроса).issue_body: Тело тикета (самые подробные требования).
🤖 Шаг 2. Архитектура агента и промптинг (The Brain)
Самый важный элемент — сам агент. Он не может просто "думать"; ему нужны стартовые промпты, которые определяют его роль и границы.
В идеале, вам понадобится не один, а цепочка из нескольких специализированных агентов. Каждый агент должен отвечать за определенный этап:
- Планировщик (Planner Agent): Получает Issue и генерирует план действий (например: "Нужно создать новый компонент
/feature/issue-123и обновитьHeader.jsx"). - Генератор кода (Coder Agent): Получает план и генерирует конкретные фрагменты кода (React, Python и т.д.).
- Тестировщик (QA Agent): Проверяет сгенерированный код на соответствие плану и на наличие ошибок.
Ключевой момент: Используйте несколько профилей (как в источнике — 8 разных профилей Codex-агента). Это позволяет вам адаптировать агента под разные задачи: один профиль для фронтенда (React), другой для бэкенда (API), третий для написания документации.
В стартовый промпт (System Prompt) критически важно прописать не только роль, но и ограничения.
``json { "role": "Coder Agent", "system_prompt": "Ты — опытный фронтенд-разработчик React. Твоя задача — принимать требования пользователя и генерировать чистый, готовый к коммиту код. Ты обязан придерживаться структуры компонента src/components/. Не генерируй код, который не является React-компонентом. Всегда добавляй JSDoc-комментарии.", "guardrails": "Нельзя использовать внешние API без явного указания в плане. Всегда проверяй валидность JSX." } ``
🚀 Шаг 3. Деплой и финализация (The Action)
Полученный код должен попасть на сайт. Здесь на помощь приходит GitHub Actions.
Ваш конвейер должен не просто генерировать код, а делать это в рамках специального репозитория, который будет автоматически деплоиться.
Логика в пайплайне:
- Webhook передает агенту требования.
- Агент генерирует патч-файл или список изменений.
- Ваш сервис (на стороне сервера) записывает эти изменения в локальную ветку репозитория.
- Сервис инициирует запуск GitHub Actions, передавая ему команду
git pushс новыми изменениями.
Это превращает AI-агента из простого кодогенератора в полноценного DevOps-исполнителя.
Подводные камни: Где ломается идеальный конвейер
Если вы решите строить такую систему, будьте готовы к следующим проблемам:
⚠️ 1. Эскалация полномочий (The Jailbreak Risk)
Самый большой риск — это "сбежавший" агент. Если вы не установили жесткие guardrails (ограничения) в промпте, агент может решить, что для выполнения задачи ему нужно сделать что-то несанкционированное (например, удалить важный файл или отправить данные на внешний ресурс).
Решение: Всегда обрабатывайте действия агента через санитайзер. Перед тем как выполнить команду git push или curl, прогоните ее через отдельный, не-LLM-зависимый модуль, который проверяет, находится ли действие в списке разрешенных API-вызовов.
⚠️ 2. Состояние мира (State Management)
LLM-агенты работают в контексте, а не в реальном времени. Если в Issue затронута сложная зависимость (например, изменение API, которое влияет на 5 других модулях), агент может проигнорировать контекст и выдать нерабочий код.
Решение: Делите задачи на микро-шаги. Не просите агента "починить сайт", просите "сгенерировать компонент X в файле Y, используя API Z".
⚠️ 3. Стоимость и предсказуемость
Использование мощных моделей (вроде GPT-4 Turbo) для каждого запроса может быть очень дорогим. Как показано в источнике, для экспериментальной, но предсказуемой работы часто достаточно самых дешевых и быстрых моделей (например, GPT-3.5 или их мини-варианты).
Вывод: Для эксперимента и проверки концепции (PoC) выбирайте минимально необходимый уровень "разумности" модели, чтобы держать расходы под контролем.
Что попробовать дальше
- Внедрить механизм регрессионного тестирования: После того как агент сгенерировал код, не деплойте его сразу. Запустите набор unit-тестов (Jest, Pytest) на этом коде, прежде чем он попадет на продакшен.
- Создать систему откатов: Обязательно заложите в пайплайн автоматический механизм отката (rollback). Если деплой провалился, система должна автоматически откатить код до предыдущей стабильной версии.
- Управление контекстом: Вместо того чтобы передавать весь Issue, извлекайте из него только сущности (Entities): Что меняется, Где меняется, Для кого меняется.
Помните: ответственность за инструмент лежит на пользователе. AI — это фантастический ускоритель, но он не заменяет инженера, который умеет проверять его выходные данные.