Ревью 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 |
Следующий шаг¶
Пройдите Первое ревью за пять минут или откройте матрицу интеграций, чтобы увидеть статус коннекторов.