Автор статьи на Habr описывает ситуацию, знакомую многим, кто работает с ИИ-агентами: агент, который писал текст, сам поставил ему статус «принято», закрыв все пункты чек-листа. На следующий день автор прочитал работу и отклонил её целиком. С кодом происходит то же самое: один и тот же агент пишет и проверяет, поэтому вердикт оказывается самооценкой, а не результатом независимой проверки.

Проблема в том, что в большинстве инструментов — Cursor, Claude Code, Codex — субагенты стали штатным механизмом, но разводить проходы почти никто не разводит. Один чат делает работу и сам объявляет её готовой. Автор предлагает концепцию harness — обвязки вокруг модели: правила, роли, права на запись, журнал прогонов. В этой обвязке ключевая часть — гейт: место, где работа не идёт дальше без вердикта другого прохода. Это не совет ревьюера, который можно учесть или не учесть: пока строки вердикта нет, следующего файла не появляется.

ВопросОдин чатЦепочка с гейтом
кто исполняетон жеотдельный проход
кто выносит вердиктон жедругой проход, без памяти первого
где живёт факт между шагамив перепискев файле, который следующий открывает сам
что при сбоеправка тем же ходомотказ строкой, работа возвращается автору

Схема с гейтом держится на трёх условиях. Вердикт ставит не тот, кто делал, иначе «принято» остаётся самооценкой. Следующий проход открывает файл, а не читает пересказ, потому что в пересказ уже вложено мнение того, кто его писал. У каждого файла один хозяин, иначе два прохода правят одно место и результат потом не свести.

Решение — гейты: места, где работа не идет дальше без вердикта отдельного проверяющего прохода.

Автор различает три прохода: управляющий раздаёт задачи и ветвится по вердикту, исполняющий правит рабочие файлы, проверяющий читает только переданные пути и пишет вердикт. Контур одинаков для кода, документа и конфига. Если правка одна или скрипт разовый, гейт добавит только минуты и токены, а ревьюер в пул-реквесте закроет ровно то же самое. Цепочка с гейтом начинает окупаться, когда ошибка дорогая или незаметная, а шагов уже столько, что условия первого никто не помнит.

В статье приведён минимальный контур на три промпта для Cursor. Первый промпт создаёт субагента-ревьюера с правами: он не трогает проверяемые файлы, пишет только файл вердикта, проверяет три вещи — заявленное сделано, проверки прогнаны, ничего вне названной зоны не тронуто. Второй промпт убеждается, что проверяющего вообще позовут: если verifier нет в списке доступных субагентов, гейта нет. Третий промпт прогоняет задачу двумя проходами и показывает два разных обращения и файл вердикта.

Автор подчёркивает, что файлы роли должны быть настроены под конкретные сбои пользователя, иначе скопированная роль либо не сработает, либо будет ловить воображаемое. Это практическое руководство для тех, кто хочет внедрить гейты в свою работу с ИИ-агентами, чтобы избежать дорогостоящих ошибок.