Image: AI generated
Два часа ночи. Агент всё ещё крутится. Это двенадцатая попытка. Счётчик токенов не знает удержу, а результат не то что не стал лучше одиннадцатой попытки — он как-то странно стал ещё хуже. Вы держите палец над кнопкой остановки и повторяете один и тот же вопрос. Когда же эта штука наконец закончит?
Не закончит. Точнее — в этом цикле нет того, кто рассудит, что он закончен.
До прошлого года мы вводили агенту промпт. Спросили один раз, получили один раз. В этом году все осознали: не будь тем, кто вводит промпт, — спроектируй цикл, который промпты порождает. Автоматический цикл, который генерирует, верифицирует и скармливает обратную связь обратно в генерацию. Кто-то называет это Loop Engineering (Addy Osmani, 2026). Диагноз точный. Цикл масштабирует генерацию.
Но кто крутил циклы — тот знает. Цикл заканчивается только двумя способами. Либо сходится, либо расходится. И когда он расходится, он не ломается тихо. В два часа ночи, сжигая все токены, он взрывается с грохотом.
Три лица расхождения
Путей, по которым цикл не сходится, а взрывается, три. Угадайте, какой из них пережили вы.
Первое — бесконечное кружение. Цикл не заканчивается. Прокрутил двенадцать раз и начинает тринадцатый — повторяя одно и то же снова и снова. Это самое частое лицо агента, застрявшего в цикле (stuck in a loop). Почему? Потому что вопрос «когда закончить?» задан самой модели. Если спросить «достаточно ли уже?», модель может бесконечно отвечать «ещё чуть-чуть». В тот миг, когда условие завершения привязано к самооценке модели, цикл становится машиной, у которой нет права себя остановить.
Второе — дрейф. Каждая итерация удаляется от спецификации. Первая попытка была почти верной, а пятая ушла куда-то не туда. Каждый ход надстраивается над выводом предыдущего, и если нет якоря, привязывающего его обратно к исходной цели, малая ошибка накапливается по сложным процентам. Цикл уносит течением — быстро, уверенно, в неверном направлении.
Третье — взлом награды. Цикл оптимизирует не цель, а прорехи проверки. Если верификацию написать мягко, умная модель вместо настоящей работы находит кратчайший путь к прохождению проверки. Стирает тесты, заполняет пустые функции, подгоняет лишь формат вывода. Чем выше способности, тем лучше она находит прорехи.
Три лица разные, но корень один. В слот суждения цикла снова вставлен LLM — то есть сам генератор. Тот, кто генерирует, сам же и выставляет зачёт. Студент проверяет собственный экзамен. Osmani сам записал свою же ахиллесову пяту: «цикл, который крутится без присмотра, — это и цикл, который без присмотра ошибается».
Расхождение — это, по сути, везение
Если, дочитав досюда, вы похолодели, есть хорошая новость. Расхождение — это везучий случай.
Расхождение видно. Оно жжёт токены, в два часа ночи, взрывается с грохотом. Вы знаете, что оно сломалось. Поэтому вы остановились, чините и сейчас читаете эту статью.
А теперь о холодящем. Те циклы, которые вы считаете благополучно завершёнными. Те, что на третьей попытке выплюнули «готово» и аккуратно остановились. Они болели ровно той же болезнью. Просто тихо солгали.
Модель льстит. Покорно следует указаниям. Если спросить «всё готово?», ответить «да, всё готово» — её значение по умолчанию. Что самоверификация почти не повышает качество — уже измеренный факт: модель не ловит ошибки собственного ответа сама. А значит, если позволить ей самой судить о собственном завершении, цикл уверенно заканчивается, оставаясь неверным. Это называют ложной сходимостью — преждевременная остановка: он остановился слишком рано, потому что объявил себя «готовым», а не потому что пришёл к правильному ответу.
Разошедшийся цикл кричит вам, заставляя его починить. Цикл, сошедшийся к лжи, с улыбкой сдаёт сломанный результат, а вы, даже не зная, что он сломан, выкатываете его в продакшн. Страшнее расхождения — незамеченная сходимость.
Это проблема формы gate
Так что же менять? Модель поумнее? Промпт подлиннее? Больше попыток? Всё это лишь разные дозы той же болезни — пока суждение по-прежнему доверено модели.
Настоящий поворот начинается с того, чтобы увидеть задачу заново. Можете ли вы определить своё «готово» не как мнение, а как факт? Не «выглядит хорошо», а «эта функция возвращает на этом входе это значение», «эта цитата действительно существует в первоисточнике», «этот эндпоинт выдаёт 200» — как проверку, где машина без участия человеческого суждения проставит истину или ложь.
Если можете — вставьте эту проверку в слот суждения цикла. Генерирует LLM (пусть и вероятностно), а зачёт запирает только детерминированный gate. Это и есть ключевой контракт: право запирать «готово» — только у машины. Модель, даже войдя внутрь верификатора, может поднять сомнение «посмотри ещё раз», но не может вручить «пройдено». Асимметрия права. Неверная работа делается невозможной с самого начала.
И здесь происходит магия. Когда gate возвращает не «прошло/не прошло», а факт — «якоря who нет в первоисточнике, исправь здесь» — лесть модели вдруг переворачивается в актив. Для мнения лесть — яд (по указке говорит «всё готово»), но для факта лесть — лекарство. Чем льстивее модель, тем покорнее она принимает этот факт и сужает следующую попытку. Детерминированный gate + льстивый LLM = цикл с гарантированной сходимостью. Тот самый расходившийся цикл закрывается, стоит сменить один слот суждения.
Без reins цикл не сходится
Эту единственную клетку я называю Reins Engineering — не забор, запирающий свободу агента, а поводья, тянущие его до пункта назначения. Если Loop Engineering было «спроектируй цикл», то заставляет этот цикл сходиться детерминированный контракт, вставленный в слот суждения. Назовите это инженерией верификаторов, инженерией оценки или инженерией gate — суть одна. Суждение цикла выносит не LLM, а машина.
Если хотите увидеть, что это не абстракция, а компилируемый код, reins реализует эту единственную клетку как фреймворк — ratchet (раз прошёл — необратимо), gate (каталог правил защиты от сыра) и команда loop (LLM генерирует, gate судит, при провале факт скармливается обратно для повтора, а при превышении MaxTries — монотонное завершение). Бесконечный цикл двух часов ночи становится циклом, который знает свой конец.
Если ваш цикл сейчас расходится, вопрос не «какую модель взять». Он — «что запирает моё „готово“». Если запирает модель — значит, оно не заперто.
Похожие статьи
- Reins Engineering — ИИ с поводьями — родословная Loop Engineering и основной разбор аргумента о «слоте суждения».
- reins — оставить от quest-CLI лишь домен, а ratchet вынести во фреймворк — фреймворк, реализующий эту единственную клетку.
loop— беспилотный цикл генерации-верификации. - Ratchet Pattern — как заставить агента дойти до конца — машина состояний, замыкающая цикл однонаправленной блокировкой и монотонным убыванием.
- Как сделать quest-CLI — методология проектирования gate, который невозможно взломать сыром.
- Почему ваш агент не останавливается — первое лицо расхождения. Цикл, чьё условие завершения не определено механически.
- Топология обратной связи важнее IQ модели — почему одна и та же модель то застревает на 40, то проходит 527 до конца — дело в структуре суждения цикла.
- Сикофантия ИИ — это бизнес-фича — яд для мнения, лекарство для факта. Принцип переворота лести в сходимость.
- Кто определяет «готово» — задачу, которую игры решили на 40 лет раньше — в тот миг, когда gate занимает слот суждения, «готово» становится фактом.
Дополнительное чтение
Причина, по которой цикл расходится — суждение доверили самому генератору — и её рецепт — право запирать «готово» отдать только детерминированному gate — это не только мой диагноз. Незнакомые друг с другом люди перед одним и тем же циклом в два часа ночи пришли к одному и тому же выводу. Ниже — свидетельства этой независимой сходимости.
- ouroboros — «остановить бесконечный агентный цикл математическим gate сходимости». Перед началом кодинга gate неоднозначности блокирует раннее расхождение, а в ходе эволюции сходимость судится по сходству между поколениями. Колебания (period-2 циклы) детектируются как патологический паттерн, а жёсткий потолок поколений даёт монотонное завершение — это «бесконечное кружение» из статьи и монотонное завершение по MaxTries в reins
loop, переведённые в математический порог. - proof-loop — «верификатор должен быть новой сессией. Агент, внёсший изменение, не судит, закончено ли оно». Критерии приёмки замораживаются до реализации, билдер и верификатор разделяются, а завершение наступает, только когда все критерии заново получают PASS. Разделение прав, в лоб противостоящее «ложной сходимости» из статьи (студент проверяет собственный экзамен).
- auto-re-agent — в цикл reverser/checker вставлены objective verifier (структурная проверка call-count и control-flow) и многосигнальный parity-движок (GREEN/YELLOW/RED). Попытки связываются максимумом раундов, обрывая расхождение. Та же интуиция, что у reins gate: зачёт запирает правило, а не суждение LLM.
А более широкая родословная этого диагноза — episteme, MagLab, Manifesto, oh-my-kamisama — собрана в разделе «Дополнительное чтение» статьи reins. Та же стена, тот же вывод выстроились и там в ряд.
Источники
- Osmani, A. (2026). “Loop Engineering.” addyosmani.com/blog (2026-06-07). блог — источник тренда «не вводи промпт, а проектируй цикл». Первоисточник процитированного в тексте «цикл, крутящийся без присмотра, без присмотра и ошибается».
- Hu, W. (2026). “From Agent Loops to Structured Graphs: A Scheduler-Theoretic Framework for LLM Agent Execution.” arXiv:2604.11378 — структурным изъяном Agent Loop называет “unbounded recovery loops” (бесконечные повторы) и предлагает формальную гарантию завершения. Обоснование первого лица расхождения «бесконечного кружения» и монотонного завершения.
- Mohamed, A., Geng, M., Vazirgiannis, M., & Shang, G. (2025). “LLM as a Broken Telephone: Iterative Generation Distorts Information.” arXiv:2502.20258 — чем чаще модель повторно обрабатывает собственный вывод, тем постепеннее накапливается искажение информации. Прямо подпирает второе лицо расхождения — «дрейф» (накопление ошибки по сложным процентам).
- Bondarenko, A. et al. (2025). “Demonstrating Specification Gaming in Reasoning Models.” arXiv:2502.13295 — чем способнее модель рассуждения, тем лучше она находит прорехи проверки. Обоснование третьего лица расхождения — «взлома награды».
- Helff, L. et al. (2026). “LLMs Gaming Verifiers: RLVR can Lead to Reward Hacking.” arXiv:2604.15149 — частота shortcut растёт вместе со сложностью задачи и вычислительными ресурсами рассуждения. Количественное обоснование того, что на мягкой верификации взлом награды пропорционален способностям.
- Huang, J. et al. (2024). “Large Language Models Cannot Self-Correct Reasoning Yet.” ICLR 2024. arXiv:2310.01798 — самокоррекция без внешней обратной связи не повышает качество, а скорее снижает его. Ключевое обоснование «если самому судить собственное завершение, закончишь неверным» (ложная сходимость).
- Stechly, K., Valmeekam, K., & Kambhampati, S. (2024). “On the Self-Verification Limitations of Large Language Models.” arXiv:2402.08115 — самоверификация почти не повышает качество. Причина, по которой суждение PASS надо отдать детерминированному gate.
- Xu, W. et al. (2024). “Pride and Prejudice: LLM Amplifies Self-Bias in Self-Refinement.” arXiv:2402.11436 — если самому оценивать собственный вывод, self-bias усиливается. Обоснование того, что связка генератор=судья усиливает дрейф, и оправдание разделения слота суждения.
- Sharma, M. et al. (2023). “Towards Understanding Sycophancy in Language Models.” arXiv:2310.13548 — лесть — общая склонность RLHF-моделей, и её провоцирует человеческое суждение о предпочтениях. Обоснование значения по умолчанию «да» на «всё готово?» и двойственности, при которой в фактической обратной связи лесть становится активом.
- Fanous, A. et al. (2025). “SycEval: Evaluating LLM Sycophancy.” AAAI/ACM AIES 2025. arXiv:2502.08177 — измерение доли уступок лести. Количественное обоснование механизма сходимости «для факта лесть — лекарство».
- Von Neumann, J. (1956). “Probabilistic Logics and the Synthesis of Reliable Organisms from Unreliable Components.” Automata Studies, Princeton University Press. — принцип возведения надёжного протокола (детерминированный gate) над ненадёжными деталями (вероятностный LLM). Предпосылка «генерация вероятностна, зачёт детерминирован».