qvib.pro
EN

~5 мин чтения · всем · Обновлено: 02.07.2026 · Read in English

Гейт 10/10: движок не галлюцинирует «готово»

Гейт 10/10: как движок доводит задачу и не галлюцинирует «готово»

Коротко

Главная болезнь AI-агентов — объявить «готово», когда не готово. Гейт 10/10 превращает готовность из ощущения в набор критериев, каждый из которых закрывается только выполненным доказательством: выводом команды, теста или скрином. Исходов ровно два: VERIFIED 10/10, где по каждому required-критерию есть доказательство, или честный отчёт о разрыве — что осталось и почему. Сфабрикованное «10/10» без доказательств запрещено, а честный отчёт — легитимный результат, не провал: именно это убирает у модели стимул врать. Критерии делятся на ENFORCED (проверяются кодом выхода) и ADVISORY (суждение, помеченное честно). Важно: гейт — слой конструктора; в базовый сид Quest он пока не входит, его собирают поверх.

Что это

Главная болезнь AI-агентов — объявить «готово», когда не готово. Гейт 10/10 (engine.doneCriteria) лечит это структурно: он превращает «готовность» из vibe-оценки в набор критериев, каждый из которых закрывается только выполненным доказательством.

VERIFIED 10/10Каждый required-критерий доказанВывод команды / тест / скрин приложенHONEST GAP REPORT±Что осталось и почему — честноРавноправный исход, не провал
Ровно два исхода — сфабрикованное «10/10» запрещено

Статус. Гейт 10/10 — это слой конструктора: он поддержан схемой и экспортёром, но в базовый флагманский сид Quest пока не входит (в разработке для флагмана). То есть купленный пакет Quest не приносит doneCriteria из коробки — это то, что вы собираете поверх, когда описываете свой движок в конфигураторе. Ниже — как этот слой устроен, а не «поведение установленного Quest».

Когда слой включён, в экспортируемый пакет попадает буквальный рецепт с жёстким правилом: ровно два исхода, третьего нет.

  1. VERIFIED 10/10 — по КАЖДОМУ required-критерию есть ВЫПОЛНЕННОЕ доказательство (вставь вывод команды/теста, скрин браузера). Без доказательства критерий НЕ закрыт.
  2. HONEST GAP REPORT — если хоть один required не доказан: честно перечисли, что осталось и почему. Это равноправный исход, а не провал.

BANNED — сфабрикованные 10/10: объявить «10/10» без выполненного доказательства запрещено. Нет вывода команды = нет закрытого критерия.

Честный отчёт о разрыве — не поражение, а легитимный второй исход. Именно это убирает стимул врать: модели не нужно притворяться, у неё есть разрешённый способ сказать «вот это не доказано».

ENFORCED vs ADVISORY критерии

У каждого критерия есть checker, и он делится на два класса:

  • ENFORCED (cmd / test / file / http) — доказывается кодом выхода: команда, тест, наличие файла, HTTP-ответ. Машина проверяет, а не суждение.
  • ADVISORY (behavior / human / rubric / reference) — доказывается суждением и помечается честно как advisory.

Это разделение прямо видно в пакете, так что никто не выдаёт «человек посмотрел, вроде норм» за машинно-проверенный факт.

Два класса checker'ов у критерия
ENFORCED
cmd · test · file · http
Доказывается кодом выхода: команда, тест, наличие файла, HTTP-ответ. Проверяет машина, а не суждение.
ADVISORY
behavior · human · rubric · reference
Доказывается суждением и честно помечается как advisory. Не гарантия — держится на добросовестности модели.
Разделение видно прямо в экспортируемом пакете

Пропорциональность

Гейт не давит церемонией на мелочь. proportionality: full (каждый required доказан) или light (для quest-fix — доказывай только required, без церемоний). В режиме auto мелкий фикс (kind: quest-fix) сам уходит в light.

Когда применять

  • Любая задача, где важно не «почти работает», а «доказано работает»: фичи, багфиксы, релизы.
  • Особенно ценно на слабой целевой модели, которая склонна рапортовать успех преждевременно.

Как это выглядит на слое конструктора

Пример ниже иллюстрирует форму слоя doneCriteria — как он был бы описан в конфигураторе. Это не сценарий из базового Quest; это то, во что превращается ваш собственный набор критериев после экспорта.

Вход: «добавь эндпоинт POST /login с rate-limit». Движок с doneCriteria.criteria:

  • [required] «Тесты авторизации зелёные» — checker test, detail npm test -- auth [ENFORCED]
  • [required] «Rate-limit срабатывает после 5 попыток» — checker http, detail curl -X POST /login × 6 [ENFORCED]
  • [required] «Секретов в диффе нет» — checker cmd, detail git diff | grep -E 'SECRET|TOKEN' [ENFORCED]
  • [additional] «Формулировки ошибок понятны новичку» — checker human [ADVISORY]

Что делает движок с таким слоем:

  1. Реализует эндпоинт.
  2. Идёт по required-критериям и исполняет проверки. Прогоняет npm test -- auth → 12 passed. Шлёт 6 запросов curl → 6-й возвращает 429. Грепает дифф → пусто.
  3. К каждому критерию прикрепляет вывод: лог тестов, тело 429-ответа, пустой результат грепа.
  4. Additional-критерий (advisory) отмечает как суждение, честно помеченное.

Результат: «VERIFIED 10/10 — все 3 required доказаны выполненным выводом» с приложенными артефактами.

Как закрываются критерии в примере с POST /login
ENFORCEDТесты авторизации зелёные — npm test -- authпруф: 12 passed
ENFORCEDRate-limit после 5 попыток — curl × 6пруф: 6-й запрос → 429
ENFORCEDСекретов в диффе нет — git diff | grepпруф: пустой вывод
ADVISORYФормулировки ошибок понятны новичку — humanсуждение, помечено честно
3 из 3 required доказаны выполненным выводом → VERIFIED 10/10

Альтернативный (честный) исход: если curl-проверка показала, что 6-й запрос всё ещё 200 — движку ЗАПРЕЩЕНО писать «готово». Он выдаёт HONEST GAP REPORT: «2 из 3 required доказаны; rate-limit не срабатывает (6-й запрос вернул 200 вместо 429), критерий не закрыт». Именно этот исход и защищает вас от галлюцинированного «done».

Честная оговорка

Сначала о статусе: гейт 10/10 — слой конструктора, а не встроенное поведение базового Quest. Схема и экспортёр его поддерживают, но во флагманский сид он пока не входит (в разработке). Всё, что описано выше, относится к движку, в который вы этот слой явно добавили.

Дальше о границе гарантии. Сила гейта — ровно там, где критерий ENFORCED (есть код выхода). ADVISORY-критерии держатся на добросовестности модели и помечены как advisory — они не гарантия. Полностью убрать возможность соврать нельзя, но BANNED — сфабрикованные 10/10 плюс равноправный HONEST GAP REPORT снимают у модели мотив это делать: честно признать разрыв — разрешённый и ожидаемый ход.

Читайте также