Перейти к содержанию

Ревью merge request

Результат

Вы узнаете, что делает ревью merge request в Threadory и чего не делает, какой контекст оно использует, как и когда публикует комментарий и какие настройки меняют его поведение.

Что делает ревью

Для каждого merge request (GitLab) или pull request (GitHub) в подключённом проекте Threadory читает diff и пишет в нём один сводный комментарий: краткий разбор изменения, замеченные риски и список находок с файлом и строкой для каждой. Рецензент начинает со сводки, а не с сырого diff.

Ревью не:

  • одобряет, блокирует и мержит — это только комментарий;
  • пушит коммиты и не меняет ветку; если исправление мелкое и точное, в комментарии показаны заменяющие строки в блоке suggestion, а применяет их автор;
  • создаёт треды, привязанные к строкам diff. Находки перечислены внутри одного сводного комментария со ссылками на файл и строку;
  • заменяет ревью человеком. Находки — утверждения для проверки, а не вердикты.

Какой контекст используется

Ревью читает больше, чем diff. Перед написанием комментария оно собирает:

  • Связанные рабочие элементы. Тикеты, issues и соседние merge request'ы, которые Threadory связал с этим изменением по ссылкам в заголовке, описании или комментариях. Явно связанные элементы весят больше найденных только по схожести: совпадения по схожести ревью считает непроверенными догадками и не требует от изменения их выполнения. Если связанный тикет описывает критерии приёмки, а diff их не закрывает, комментарий об этом скажет.
  • Связанные знания проекта. Заметки встреч, решения, документы и другие элементы, уже синхронизированные в проект, — их находит поиск.
  • Прежние треды. Ревью, которое бот уже публиковал в этом merge request, и обсуждение вокруг него. Находка, которую автор оспорил и ревью приняло его довод, и любой resolved-тред считаются закрытыми и не поднимаются снова, пока новый diff не даст новых доказательств.
  • Сам репозиторий — для крупных изменений. Если в вашем развёртывании настроен sandbox runner и изменение достаточно большое, ревью клонирует ветку в изолированную песочницу и читает окружающий код, а не только diff. Малые изменения ревьюятся по одному diff. Если песочницы нет, ревью без ошибки переходит на путь «только diff».

Если связанные элементы есть, комментарий заканчивается разделом Linked context с их списком — видно, что ревью было сообщено.

Как публикуется

  • Сводный комментарий. Ревью публикуется обычным комментарием к merge request от имени токена, которым подключён GitLab (на GitHub — от имени Threadory GitHub App).
  • По умолчанию — без аппрува. Ревью сразу попадает в merge request. Если нужен человеческий шлюз, выключите Publish without approval (см. Настройки): тогда каждое ревью ждёт в Approvals, пока кто-то его не одобрит.
  • Бот отвечает на реплики. Когда человек отвечает под ревью бота, Threadory может опубликовать один ответ. В GitLab ответ идёт в тот же тред обсуждения и, если закрывает вопрос, разрешает (resolve) тред. В GitHub ответ — обычный комментарий pull request, потому что у комментариев уровня issue нет тредов, которые можно разрешить. Ответы подчиняются Auto-post ticket reviews & replies: при выключенной настройке каждый ответ ждёт аппрува. Бот не отвечает на собственные и системные комментарии.
  • Повторное ревью на push. Новый коммит в ветке даёт свежее ревью для нового head. Ревью видит предыдущее, отмечает, что новый diff закрыл, и сосредоточено на изменившемся и ещё не закрытом. Если пуш не даёт ничего достойного упоминания, бот молчит.
  • Что запускает ревью. Ревью стартует, когда merge request открыт или открыт заново, меняется его head-коммит или правится описание. Комментарии, аппрувы, правки меток и заголовка, merge и закрытие ревью не запускают — merge request должен быть открыт.
  • Одно ревью на head. Повторные webhook'и для одного коммита не создают дубликатов.
  • Force-push. GitLab часто присылает force-push, не сообщая, что изменилось. Threadory не считает это «ничего не произошло»: если нового head ещё не ревьюили — он будет проревьюен; если уже ревьюили — событие игнорируется.

Подключение источника

Источник Как подключается Что нужно ревью
GitLab self-managed или gitlab.com Project access token или personal access token плюс webhook проекта. См. Подключение GitLab. Scope api: он нужен, чтобы публиковать комментарии и ставить webhook. Для одного чтения достаточно read_api.
GitHub Threadory GitHub App, установленный на репозиторий; при подключении вы авторизуетесь в GitHub и выбираете репозитории. Beta. В развёртывании должен быть настроен GitHub App. Если коннектор не предлагает GitHub — спросите администратора.

Без webhook GitLab работает через почасовой polling, и ревью приходит с задержкой. Пошаговый сценарий — в Первое ревью за пять минут.

Настройки, которые есть сегодня

Откройте Settings → Review. Менять настройки может роль admin.

Настройка По умолчанию Эффект
Review merge requests Вкл. Главный выключатель. Выключено — бот вообще не заходит в merge request'ы проекта: ревью не генерируется и расходов на модель нет.
Publish without approval Вкл. Включено — ревью публикуется сразу в merge request. Выключено — каждое ревью идёт через очередь аппрувов.
Audit rate 0% Доля опубликованных ревью, которые всё равно идут через аппрув как выборочная проверка.
Confidence floor 50% Ревью с уверенностью ниже порога отбрасывается, а не публикуется. 0% публикует всё, включая незавершённое ревью, ничего не нашедшее.
Reply to human follow-ups Вкл. Бот отвечает человеку, который комментирует под его ревью.
Auto-post ticket reviews & replies Вкл. Публикует ревью тикетов и ответы бота без аппрува. У ревью merge request есть свой выключатель выше.
Say so when a review does not finish Выкл. Оставляет заметку, когда запуск остановился, не дойдя до вердикта, вместо молчания.
Verify findings against the diff Вкл. Финальный проход убирает утверждения, которые diff не подтверждает.
One-click suggestion blocks Вкл. Разрешает ревьюеру писать блоки suggestion для ясных механических правок.
Agentic-exploration review Вкл. Разрешает ревью читать репозиторий в песочнице (см. выше). Дополнительные поля — модель, максимум вызовов инструментов и запросов, минимальный размер изменения — появляются при включении.
Review guidelines, Review tone hint, Reply tone hint, Learnings Пусто Свободный текст, который ревью читает как контекст проекта. Guidelines — правила вашей команды, learnings — короткие правила из прошлой обратной связи, по одному в строке.

Settings → Review Health показывает, завершаются ли ревью.

Лимиты тарифа

Действуют лимиты Free-плана; тарифы — на threadory.ai. План вашей организации и текущее использование видны в Settings → Plan & Usage.

Ограничения ревью

  • Очень большой diff обрезается до того, как попадает в модель, поэтому ревью такого изменения может не охватить все файлы. Лучше делать merge request'ы поменьше.
  • Ревью видит только подключённое и синхронизированное. Неподключённый тикет или решение со встречи, которую не импортировали, ревью не учтёт.
  • Оно может ошибаться. Если находка неверна — ответьте под ней: обсуждение прочтёт следующее ревью того же merge request.

Частые проблемы

Симптом Вероятная причина Что делать
Комментария на новом merge request нет Нет webhook, выключен переключатель ревью или ревью ждёт аппрува Проверьте webhook на карточке коннектора, Review merge requests и Approvals
Ревью приходит примерно через час Проект работает на polling Установите webhook из меню карточки коннектора
Push не запустил новое ревью Push не изменил head или ревью этого head уже есть Запушьте новый коммит; правки меток и заголовка ревью не запускают
В комментарии нет упоминания связанного тикета Тикет не связан или не синхронизирован Сошлитесь на него в заголовке или описании и нажмите Sync now
Публикация не удаётся У токена нет прав на запись Переподключите с scope api

Следующий шаг

Пройдите Первое ревью за пять минут или откройте матрицу интеграций, чтобы увидеть статус коннекторов.