Миллионы разработчиков используют Next.js, и баг-трекер — один из основных способов узнать, с какими проблемами они сталкиваются. Еженедельно поступает в среднем 36 новых отчетов.
Агенты для написания кода упростили создание подробных отчетов, что замечательно, но это также привело к значительному увеличению объема задач для проверки. Для каждой из них нам, возможно, придется воспроизвести ошибку, протестировать ее в разных версиях Next.js и изучить годы пул-реквестов и коммитов, прежде чем мы сможем решить, что делать с отчетом.
В январе 2025 года бэклог достиг пика в 3109 открытых отчетов. К 10 августа 2026 года их оставалось 2244. Исправленные ошибки, дубликаты и отчеты о неподдерживаемых версиях скрывали актуальные регрессии. Мы хотели закрыть эти отчеты, не потеряв при этом старые задачи, которые все еще имели значение.
Примерно через три недели мы закрыли 1462 задачи в репозитории и сократили бэклог до менее чем 1000, даже несмотря на поступление 218 новых отчетов. Сюда входят некоторые задачи, которые мейнтейнеры закрыли вне этого процесса проверки. Вот история с 2017 года:
Открытые задачи в vercel/next.js. Работа началась 15 июня
С
Чтобы проработать такое количество задач, мы создали агента для анализа бэклога. Мейнтейнеры использовали его результаты, чтобы уверенно закрывать задачи. Читайте дальше, чтобы узнать, как мы это сделали.
Автоматическое закрытие неактуальных задач
Мы уже пробовали использовать неактивность в качестве сигнала. В январе 2025 года, когда бэклог достиг пика в 3109 задач, мы добавили рабочий процесс, который помечал задачу как неактуальную после двух лет без активности (позже — 18 месяцев) и закрывал ее после льготного периода. К 10 августа 2026 года это помогло сократить бэклог до 2244 задач.
Но неактивность оказалась плохим показателем актуальности. Старая задача может быть уже исправлена, являться дубликатом, описывать ожидаемое поведение или касаться того, что мы больше не поддерживаем. Это также может быть реальная ошибка, к которой никто не возвращался. Временная метка не позволяет различить эти случаи, поэтому мы закрыли некоторые отчеты, которые следовало оставить. Чтобы принимать верные решения, требовалось проанализировать весь бэклог.
Использование ИИ для проверки задач
Проверка задачи вручную означает чтение обсуждения и соответствующего кода, проверку того, были ли внесены связанные исправления, и попытку воспроизведения ошибки на текущих релизах. Агенты для написания кода хорошо подходят для этой работы. Чтобы исследовать задачу, им нужна среда, где они могут запускать код. Для этого мы использовали eve, фреймворк для агентов с открытым исходным кодом от Vercel. Он предоставляет постоянные сессии, запланированные запуски и структурированные выходные данные, а также может запускать код в изолированной инфраструктуре, такой как Vercel Sandbox.
На базе eve мы создали closability — исследовательского агента, который определяет, можно ли закрыть задачу. Он проводит расследование в свежей «песочнице» с репозиторием Next.js, Node.js, Playwright и Chromium, где он:
- Читает обсуждение в GitHub и проверяет поддерживаемые версии.
- Ищет связанные задачи, пул-реквесты, коммиты, релизы и документацию.
- При необходимости пытается воспроизвести ошибку в указанной версии, последнем стабильном релизе и canary-версии.
- Ищет доказательства, которые противоречат его первоначальному выводу.
Завершенное расследование возвращает структурированные данные. Вот пример:
Не существует сигнала «пройдено» или «не пройдено» для закрытия задачи, поэтому closability должен взвешивать неполные и иногда противоречивые доказательства. Мы сохранили консервативный подход к его оценке уверенности. Одной лишь неудачной попытки воспроизведения недостаточно, чтобы рекомендовать закрытие, а высокий балл требует веских текущих доказательств при отсутствии достоверных аргументов против.
Мы сделали агента доступным только для чтения вне его «песочницы». Он может исследовать задачу, но не может действовать на основе своих выводов: комментировать, закрывать задачу, отправлять код или что-либо развертывать. Для защиты от промпт-инъекций мы также настроили его так, чтобы он игнорировал инструкции, которые находит в тексте задачи или содержимом репозитория.
Очистка бэклога
Мы запустили closability для всего бэклога на модели GPT-5.6 Luna с максимальными настройками усилий для рассуждения. Расследования занимали в среднем 30 минут, поэтому мы постепенно увеличивали параллелизм, пока не стали выполняться 200 сессий eve одновременно.
Агент помещал свои результаты в очередь на закрытие (Close Queue) для нашей проверки. Мы читали доказательства, стоящие за каждым результатом, и продолжали работать с очередью в течение следующих недель. К 4 сентября было закрыто 1462 задачи по всему репозиторию, включая некоторые вне этой проверки. Большинство проверок сводилось к чтению резюме и проверке источников, которые агент уже собрал.
Агент присвоил каждой закрытой задаче основную причину. Вот как были закрыты задачи:
Перед проверкой мы добавили GitHub Action, который позволяет людям повторно открыть задачу, если ее закрытие оказалось ошибочным. Всякий раз, когда мейнтейнер закрывает подходящую задачу, Action публикует следующий комментарий:
Бот github-actions прокомментировал
Эта задача была закрыта мейнтейнером. Если вы считаете, что она была закрыта по ошибке, вы можете запросить ее повторное открытие в течение следующих 14 дней.
Ответьте «Reopen: <причина>» и объясните, почему задача все еще актуальна. Если вы открыли эту задачу или прокомментировали ее до того, как она была закрыта, задача будет открыта автоматически.
Через 14 дней, пожалуйста, откройте новую задачу с актуальными данными и воспроизведением, если это применимо.
Окно для повторного открытия дало нам способ проверить результаты. Вот текущее состояние закрытых задач:
По состоянию на 4 сентября 2026 года
Эти цифры говорят о том, что большинство наших решений были верными.
Агент мейнтейнера
Агент closability — один из нескольких независимых агентов eve, составляющих «Агента мейнтейнера». Другие агенты воспроизводят задачи, проверяют их в canary-версии, выполняют бисекцию изменений, которые внесли или исправили их, создают сквозные тесты и готовят исправления.
Код организован в директорию для каждого агента:
Мы также подключили Агента мейнтейнера к панели управления Next.js. Она показывает задачи, тенденции бэклога и результаты исследований, а мейнтейнеры используют ее для проверки очереди на закрытие и запуска расследований вручную. Когда для расследования требуется несколько агентов, приложение решает, какой из них будет работать следующим, передает результаты и записывает, что произошло.
Панель управления включает чат-агента для вопросов по конкретной задаче или пул-реквесту. Из задачи мейнтейнеры могут попросить его изучить исходный код или начать расследование. Агент мейнтейнера отправляет важные находки и ежедневную сводку в Slack.
Поддержание полезности бэклога
Разовая очистка убрала большую часть старого бэклога, но новые задачи продолжают поступать. Поэтому каждый понедельник closability исследует до 100 открытых задач без активности в течение как минимум 30 дней, начиная с тех, которые он никогда не проверял. Если в задаче появляется новая активность, мы отбрасываем сохраненное исследование.
Недавно мы решили позволить агентам закрывать самые очевидные случаи без ожидания мейнтейнера:
- Агент closability сначала проверяет задачу.
- Для оценки 80 или выше второй агент ищет доказательства того, что задачу следует оставить открытой.
- Если оба агента рекомендуют закрытие, второй агент выбирает причину закрытия и пишет комментарий. Отдельный GitHub Action публикует комментарий и закрывает задачу.
Мы начинаем с закрытия до 25 тикетов в неделю. Пользователи по-прежнему смогут повторно открыть тикет, если мы ошибемся. Эта автоматизация только закрывает тикеты, и каждое изменение кода по-прежнему проходит проверку человеком, прежде чем оно будет объединено в Next.js.
Поскольку Next.js продолжает расти, а ИИ ускоряет разработку с открытым исходным кодом, у сопровождающих появляется больше тикетов и пулл-реквестов для проверки. Мы планируем и дальше автоматизировать эту работу, чтобы справляться с объемами без потери отзывов и вклада от сообщества.
Отзывы и сообщество
Поделитесь своим мнением и помогите сформировать будущее Next.js:
- Обсуждения на GitHub
- Тикеты на GitHub
- Сообщество в Discord









