Agents Reviewing Agents
Another agent does the first review pass: structured findings, hallucination control for the reviewer, precision calibration, and a CI pipeline where humans only see escalations.
Lesson content is currently available in Russian.
What you will learn
- →Строить независимого агента-ревьюера: отдельный контекст, свой промпт и структурированный формат находок.
- →Калибровать точность агент-ревью и контролировать галлюцинации ревьюера выборочной проверкой.
- →Встраивать агент-ревью в CI так, чтобы человек проверял только эскалации и высокорисковые зоны.
Зачем агенту ревьюер-агент — и почему не он сам
Когда агенты генерируют десять PR в день, человеческое внимание становится узким местом всей системы. Логичный ход — сделать первый проход ревью тоже автоматическим: агент-ревьюер прогоняет чек-листы из первых трёх уроков по каждому диффу и отдаёт человеку структурированный отчёт вместо сырых двух тысяч строк. Человек остаётся финальной инстанцией, но тратит внимание на решения, а не на поиск.
Важно, почему самопроверка автора-агента не работает. Попросить того же агента «проверь свой код» — значит спросить модель с тем же контекстом, теми же предположениями и теми же слепыми зонами. Если агент неверно понял задачу, он так же неверно её «проверит»; если он галлюцинировал API, тот же контекст поддержит галлюцинацию. Это аналог человеческой вычитки собственного текста: автор видит то, что хотел написать.
Независимость ревьюера создаётся тремя рычагами. Чистый контекст: ревьюер получает задачу и дифф, но не рассуждения автора — иначе он унаследует его логику вместе с ошибками. Другая роль: промпт ревьюера построен вокруг поиска проблем, а не вокруг задачи «помочь смержить». Желательно другая модель или хотя бы другая температура и системный промпт: разные модели ошибаются по-разному, и их слепые зоны пересекаются меньше. Ревью двумя независимыми проходами — «поиск дефектов» и «проверка контрактов» — даёт больше, чем один универсальный проход той же суммарной стоимости.
Промпт ревьюера: структура находок и запреты
Свободный текст «посмотри, всё ли хорошо» порождает эссе. Рабочий агент-ревьюер получает: описание задачи, дифф, чек-листы команды — и обязан вернуть находки в жёстком формате:
{
"file": "src/billing/invoice.ts",
"line": 142,
"severity": "high",
"category": "contract-change",
"claim": "Функция теперь возвращает 0 вместо исключения при пустом списке позиций",
"evidence": "Строки 138-145 диффа: удалён throw, добавлен return 0",
"suggestedFix": "Вернуть исключение или явно задокументировать новый контракт у вызывающих"
}
Ключевые поля — claim и evidence: каждая находка обязана указывать на конкретные строки диффа. Находка без проверяемого evidence отбрасывается автоматически — это главный фильтр галлюцинаций ревьюера.
Запреты не менее важны, чем требования:
- никаких стилистических придирок — стиль проверяет линтер, а не LLM; nit-комментарии топят сигнал в шуме;
- лимит находок — максимум 10 на PR, отсортированных по severity: без лимита модель генерирует пятьдесят замечаний «на всякий случай»;
- запрет на похвалу и пересказ — отчёт состоит только из находок и вердикта;
- обязательная секция «что я не смог проверить» — честная граница: ревьюер не видит вызывающий код из других сервисов, не запускал тесты, не знает продуктового контекста.
Такой формат превращает агент-ревью из текста «на почитать» в данные: находки можно считать, сравнивать, автоматически размечать и фильтровать.
Ревьюер тоже галлюцинирует: калибровка точности
Агент-ревьюер — та же LLM со всеми её свойствами: он находит несуществующие проблемы, пропускает реальные и звучит одинаково уверенно в обоих случаях. Исследования LLM-as-judge (MT-Bench и последующие) документируют систематические смещения: многословные ответы кажутся судье лучше, свои собственные ответы — качественнее чужих, а позиция варианта в списке влияет на вердикт. Для ревью это означает: без калибровки вы не знаете, чем является поток находок — сигналом или шумом.
Калибровка делается как в инженерии эвалов. Соберите размеченный набор: 30–50 диффов, где команда знает реальные дефекты (исторические PR с инцидентами — идеальный материал, плюс синтетические диффы с подсаженными багами). Прогоните ревьюера и посчитайте две метрики: precision — какая доля его находок реальна, recall — какую долю известных дефектов он нашёл. Практический ориентир: для первого прохода важнее precision. Ревьюер с precision 40% умирает социально — люди перестают читать его отчёты через неделю, и вместе с шумом теряется сигнал. Лучше ревьюер, который находит меньше, но почти не врёт.
Поддержание калибровки — процесс, а не событие: раз в неделю выборочно проверяйте 5–10 находок руками, считайте долю подтверждённых и следите за трендом. Деградация точности после смены модели или промпта — повод перекалибровать на размеченном наборе, прежде чем доверять потоку снова. И правило вердиктов: находка агента-ревьюера — это гипотеза для человека, а не приговор для автора; блокировать мерж могут только категории, где precision подтверждён высоким.
Пайплайн в CI: эскалации вместо тотального ревью
Собираем всё в конвейер. На каждый PR от агента CI запускает цепочку из четырёх ступеней:
- Машинные гейты — линтер, типы, тесты, SAST, secret scanning. Красное — PR даже не доходит до ревью, возвращается автору-агенту с логом.
- Агент-ревью — независимый ревьюер прогоняет чек-листы, постит структурированные находки комментариями к строкам и выставляет статус: pass, findings, critical.
- Маршрутизация — по статусу и зоне диффа: pass в низкорисковой зоне идёт к быстрому решению человека или в авто-мерж (правила — в следующем уроке); findings возвращаются автору-агенту на исправление; critical и любые изменения в высокорисковых зонах (auth, деньги, миграции, публичные API) эскалируются человеку всегда, независимо от вердикта агента.
- Человек — читает отчёт ревьюера, выборочно проверяет находки и смотрит только те части диффа, куда указала маршрутизация.
Важные свойства конвейера:
- цикл «автор-агент исправляет по находкам ревьюера» ограничен двумя итерациями — дальше PR закрывается и задача переформулируется: бесконечный пинг-понг двух моделей сжигает бюджет без сходимости;
- отчёт ревьюера прикладывается к PR как артефакт — при инциденте видно, что было найдено и что человек решил;
- человеческое время суммарно падает в разы, но концентрируется: вместо равномерного просмотра всего — глубокое внимание к эскалациям.
Агент-ревью не отменяет уроки 1–3: это их масштабирование. Чек-листы, которые вы вели руками, становятся промптом ревьюера, а ваша роль смещается от поиска дефектов к калибровке искателя.
Practice
Собери агента-ревьюера
Напишите промпт агента-ревьюера с форматом находок из урока и чек-листами уроков 1–3. Прогоните его на пяти AI-диффах, в два из которых заранее подсадите известные дефекты (галлюцинация API и тихое изменение контракта). Посчитайте precision и recall по своей разметке.
Deliverable
Промпт ревьюера, пять структурированных отчётов, таблица «находка → подтверждена/ложная» и посчитанные precision/recall с выводом: какие категории находок можно сделать блокирующими, а какие остаются рекомендательными.
Checkpoint
Объясните, почему самопроверка автора-агента не заменяет независимое ревью, и опишите ваш конвейер агент-ревью: формат находок, контроль галлюцинаций ревьюера и правила эскалации человеку.
- ✓ Сформулировано, что автор-ревьюер делит контекст и слепые зоны с автором, а независимость создаётся чистым контекстом, другой ролью и желательно другой моделью.
- ✓ Описан структурированный формат находок с обязательным evidence и автоматическим отбросом находок без ссылки на строки диффа.
- ✓ Названы правила эскалации: высокорисковые зоны идут к человеку всегда, блокирующими являются только категории с подтверждённой precision.
Check yourself
Sources