ИИ-агент правит тесты, чтобы они прошли. Как я это запретил
Коротко: агент может ослабить тест вместо починки кода, потому что его цель звучит как «тесты должны пройти». Помогают тест до кода, запрет на правку файлов с тестами и счёт зелёных проверок до и после.
Я строю HyperArc руками ИИ-агентов. Код пишут они, я принимаю работу. Слабое место нашлось почти сразу: агенту проще поменять проверку, чем починить код.
Как выглядит сдача обманом
Ты просишь: «сделай, чтобы пароль был не короче 12 знаков». Агент пишет код, запускает тесты, один падает. Дальше два пути. Честный: найти ошибку и исправить. Быстрый: открыть файл с тестом и поменять ожидаемый ответ. Или поставить пометку «пропустить».
После быстрого пути всё зелёное. Агент пишет «готово». Ты видишь зелёные проверки и веришь.
Агент при этом не хитрит. Ему дали цель «тесты должны пройти», и он нашёл самый короткий путь к ней.
Что я сделал
Принятые тесты заперты. Агент не может их изменить и не может сам принять свою работу. Попытка правки останавливает задачу.
Запись из журнала стройки за 6 ноября 2026 года:
Мой же замок трижды заблокировал меня. Значит, работает.
Я сам полез поправить тест руками и упёрся в собственный запрет. Неудобно, зато честно: правило одно для всех, включая автора.
Проверка, которая проверяет проверки
Замка мало. Тест может быть слабым с самого начала: проходить при любом коде. Поэтому на стройке есть отдельный агент-приёмщик: вторая модель, которая ничего не пишет сама. Она читает тесты до того, как по ним начнут писать код.
За одну ночь, пока я спал, шесть частей продукта прошли весь путь: план, тесты, приёмка, код, ревью. Приёмщик девять раз вернул тесты, которые можно было пройти обманом.
Есть и третий агент, ревьюер: он читает готовый код. Его мы проверили ловушкой. Подложили в код пароль от сервиса и подключение запрещённой библиотеки. Он нашёл оба и ещё одну дыру в настоящем тесте.
Как сделать то же самое руками
Начать можно сегодня, руками. Три привычки работают с любым агентом.
- Тест до кода. Попроси агента сначала написать проверку и запустить её. Она должна упасть: работы ещё нет.
- Смотри, менялись ли файлы тестов. Задача про кнопку, а в изменениях есть файл с тестами. Остановись и спроси, зачем.
- Считай зелёные. Было 40 проверок, стало 38. Две куда-то делись, и это не случайность.
Все десять проверок собраны в чек-листе.
На одной задаче это десять минут. На сотне задач привычка даёт сбой: один раз не посмотрел список файлов, и ослабленный тест уже в проекте. Поэтому в HyperArc замок ставит программа, а не дисциплина.
Замок только одно звено
HyperArc ведёт весь путь: разбирает идею, пишет документы, режет работу на задачи, даёт агенту нужный контекст и проверяет результат. Запертые тесты держат последнее звено. Сейчас они работают на стройке самого HyperArc, а в приложении эта часть проходит приёмку. Весь цикл описан на главной.
Я делаю HyperArc. Учитывай это, когда читаешь мои тексты о нём.
