Ни один агент не должен проверять свою собственную работу
Вы просите Claude проверить ваш код. Он говорит, что код выглядит чистым. Конечно, так и есть. Он сам написал этот код пять минут назад. Вы попросили автора оценить свою работу, и он поставил себе «отлично».
AI-ревью кода работает. Оно дает сбой, когда вы просите автора проверить свою собственную работу. Качество обеспечивается архитектурой, в которой ни одна роль не проверяет саму себя.
Исследования 2024 года показывают наличие предвзятости к собственным результатам (self-preference bias). Модель оценивает свои собственные результаты выше, чем результаты других моделей аналогичного качества. Модель узнает свой собственный стиль и отдает ему предпочтение.
Цикл «напиши, а затем проверь то, что только что написал» сломан. Вы получаете не ревью, а оправдание. Агент уже решил, что код хорош. Повторный запрос лишь подтверждает это решение.
Следуйте этим правилам, чтобы создавать лучшие рабочие процессы для агентов:
- Рецензент никогда не должен быть автором. Используйте другое семейство моделей для рецензирования, чтобы разорвать узнавание стиля.
- Используйте чистый контекст. Рецензент не должен видеть исходный промпт для реализации или ограничения, установленные автором.
- Уберите идентификацию. Не говорите рецензенту, кто написал код. Личность автора провоцирует предвзятость.
- Избегайте избыточного обнаружения ошибок (over-flagging). AI-рецензенты часто выдумывают проблемы, чтобы казаться полезными. Из-за этого вы перестаете к ним прислушиваться.
Используйте «правило квитанции» (receipt rule), чтобы избежать ложных срабатываний. Каждое найденное замечание должно сопровождаться доказательством, прежде чем вы его увидите.
Если рецензент заявляет о риске SQL-инъекции, он должен предоставить:
- grep пользовательского ввода.
- трассировку потока запроса.
Если значение является константой, отклоните замечание. Если оно поступает из HTTP-запроса, оставьте его. Сначала доказательство, затем суждение.
Для критических находок используйте «панель скептиков». Их задача — не подтвердить баг, а опровергнуть его. Они должны попытаться доказать, почему найденная проблема не является багом. Только если большинство не сможет разбить это замечание, оно считается подтвержденным.
Истина рождается из противоречий, а не из самодекларации.
Создайте систему, в которой роли никогда не пересекаются:
- Автор пишет код.
- Тестировщик пишет тесты, основываясь только на спецификации.
- Рецензент не писал код.
- Объективные проверки, такие как линтинг и тесты, должны быть пройдены до того, как код увидит человек или LLM.
Корректор, который исправляет сам себя, не исправляет ничего. Качество AI-ревью зависит от того, сколько раз вы не даете ему ставить оценки самому себе.
Source: https://dev.to/ohugonnot/no-agent-grades-its-own-homework-8lb
Optional learning community: https://t.me/GyaanSetuAi
