Skip to Content
ДизайнДизайн команды resolve

Дизайн команды resolve

Цель

Добавить команду @qwen-code /resolve, которую может запускать мейнтейнер, для pull request, заблокированных из-за конфликтов слияния с веткой по умолчанию.

Область применения

Первая версия намеренно консервативна:

  • Команда выполняется только в QwenLM/qwen-code.
  • У запрашивающего должны быть права write, maintain или admin.
  • Целевым объектом должен быть открытый pull request.
  • Ветка pull request должна находиться в базовом репозитории.
  • Pull request из форков помечаются как неподдерживаемые, и push в них не выполняется.
  • Агент не получает GitHub-токен. Он может только редактировать файлы и создавать коммиты локально.
  • Отдельный шаг публикации внедряет CI_DEV_BOT_PAT для выполнения push и добавления комментариев.

Рабочий процесс

  1. Существующий workflow команд для PR обрабатывает issue_comment или workflow_dispatch и разрешает целевой pull request.
  2. Задача авторизации проверяет права запрашивающего как соавтора с помощью CI_BOT_PAT.
  3. Задача resolve подтверждает триггеры в виде комментариев реакцией eyes.
  4. Задача считывает метаданные pull request и отклоняет закрытые pull request, draft-версии, pull request без конфликтов и pull request из форков.
  5. Для подходящих pull request задача переключается на ветку pull request с отключенным сохранением учетных данных, получает базовую ветку и проверяет, что ветка по-прежнему указывает на ожидаемый head SHA.
  6. Qwen Code запускается без учетных данных GitHub, сливает origin/<base>, разрешает конфликты, проверяет результат, создает коммит и записывает артефакт summary.
  7. Детерминированный шаг проверки завершается с ошибкой при наличии неразрешенных конфликтов, отсутствии summary или падении проверок.
  8. Шаг публикации выполняет push с флагом --force-with-lease относительно исходного head SHA и добавляет комментарий с summary по разрешению конфликтов.

Вне области применения

  • Автоматический push в pull request из форков.
  • Создание pull request на замену для внешних контрибьюторов.
  • Запланированное сканирование устаревших pull request с конфликтами.
  • Разрешение состояний, препятствующих слиянию, отличных от прямых конфликтов слияния.
Last updated on