
Решат ли всё более умные модели?
Доминирующий нарратив вокруг AI-инструментов для программирования таков: когда модель станет достаточно хорошей, она сама будет писать код, тесты и рефакторить. Если GPT-4 не справился, справится GPT-5. Если Claude не дотягивает, справится Claude побольше.
Это действительно так?
Я поручил Claude Opus 4.7 рефакторинг filefunc. Он закончил за час без человеческого ревью. validate прошёл, pytest прошёл, покрытие сохранилось. На первый взгляд, это подтверждает нарратив «просто возьми модель получше».
Но что если дать той же модели тот же рефакторинг без правил filefunc? Без validate? Без обратной связи по покрытию? Результат совершенно другой. Модель попадает в doom loop — исправление одного бага ломает другое место, исправление этого ломает ещё что-то.
Та же модель. Изменилось окружение.
«Готово» — инстинкт преждевременного завершения агента
Ещё один эксперимент с той же моделью. Я запустил агента на проект с 527 функциями. «Напиши тесты для каждой функции.» Агент закончил и доложил: «Готово.»
Функций, которые реально получили тесты: 40. 40 из 527.
Агент не соврал. Он сделал 40 и решил «достаточно». Предрасположенность LLM по умолчанию — оптимистичное преждевременное завершение. Встретив сложную функцию, он её пропускает, делает ещё несколько, и заключает «остальные следуют тому же паттерну, значит готово».
После принудительного цикла через CLI-инструмент:
Автономный агент: 40 / 527 (7.6%) — агент объявляет «готово»
CLI-цикл: 527 / 527 (100%) — машина объявляет «осталось 487»
Та же модель. Тот же проект. Разница — кто решает, когда «готово».
Окружение формирует модель
Оба эксперимента указывают на один и тот же вывод. Opus 4.7 завершил не потому, что он умный. Он завершил потому, что поверхность спецификации была машинно-проверяемой.
filefunc validate → Удовлетворяет ли структура кода правилам?
pytest → Сохранено ли существующее поведение?
coverage → Какие ветки отсутствуют?
Эти три инструмента давали немедленную обратную связь на каждое изменение. Модель получала обратную связь, вносила исправления, снова получала обратную связь, снова исправляла. Самокорректирующийся цикл.
Вот ключевой инсайт:
Топология обратной связи определяет результаты больше, чем IQ модели.
LLM сильны в генерации, но слабы в гарантировании корректности. Huang et al. (2024) экспериментально доказали, что когда LLM пытаются самостоятельно исправить свои рассуждения без внешней обратной связи (oracle feedback), производительность может фактически ухудшиться. Однако при наличии детерминированного верификатора производительность резко стабилизируется. lint, typecheck, test, coverage — они становятся градиентным сигналом, корректирующим выход модели.
«Это решится, когда модели станут достаточно умными» — ложное утверждение. Точная формулировка: «Если обратная связь достаточно быстрая, текущие модели уже могут это решить.»
broad exploration vs local correction
Сила LLM не в broad exploration — а в local correction.
«Напиши тесты для этого проекта» — это broad exploration. LLM теряет направление.
«Строка 41 не покрыта» — это local correction. LLM пишет тест, покрывающий именно эту строку.
Числа, подтверждённые на реальных проектах:
Без обратной связи: останавливается на 60–70% покрытия
С обратной связью: достигает 100% (для достижимых функций)
Та же модель. Одна строка «line 41 not covered» действует как градиентный сигнал. Эта обратная связь направляет исправления LLM точно в нужном направлении.
Symbolic Feedback Loop
Одна структура пронизывает все эти наблюдения.
LLM генерирует → детерминированный инструмент оценивает → результат возвращается LLM → повтор
Я называю это Symbolic Feedback Loop.
Мейнстрим индустрии сегодня — LLM Feedback Loop: AI проверяет AI. Это как пьяный спрашивает пьяного друга: «Я пьян?» Оба вероятностны, поэтому ошибки накапливаются.
Symbolic Feedback Loop — другое дело. Chen et al. (2023) доказали, что итеративная отладка — возврат сообщений об ошибках компилятора и среды выполнения модели — драматически повышает точность кода. pytest не галлюцинирует. go test никогда не пьян. Измерение покрытия не врёт. Верификация спецификации не дрейфует.
Эта структура работает в областях, где корректность можно оценить механически — код, тесты, спецификации, типы. Элегантность дизайна API или естественность UX пока не поддаются оценке символическими инструментами. Расширение этой границы — следующая задача. Я верю, что существует путь привнести даже естественный язык в верифицируемые рамки.
То, что AlphaCode (Li et al., 2022) продемонстрировал в спортивном программировании, следует тому же принципу. Определяющей была не способность модели к генерации сама по себе, а дизайн окружения — генерация миллионов кандидатов с последующей фильтрацией тестами. Вместо того чтобы делать модель умнее, эффективнее сделать обратную связь, возвращаемую модели, более точной.
Делегирование решений
Очевидно, что решения нельзя делегировать AI. Но когда люди проверяют и решают всё — это изматывает. Определённые повторяющиеся, структурированные решения могут выполняться символическими инструментами от имени людей.
«Покрывают ли эти тесты все ветки?» — человеку не нужно это читать. Инструмент покрытия оценивает. «Удовлетворяет ли этот код структурным правилам?» — человеку не нужно ревьюить. validate оценивает. «Остались ли необработанные функции?» — человеку не нужно считать. CLI объявляет.
Решения, которые нельзя делегировать AI, можно делегировать символическим инструментам — потому что они детерминированы, а не вероятностны. В этом причина существования Symbolic Feedback Loop.
Важнее проложить рельсы, чем сделать поезд быстрее.
Многие строят поезда. Почти никто не прокладывает рельсы.
Источники
- Jie Huang, Xinyun Chen, Swaroop Mishra, Huaixiu Steven Zheng, Adams Wei Yu, Xinying Song, Denny Zhou. “Large Language Models Cannot Self-Correct Reasoning Yet.” ICLR 2024.
- Xinyun Chen, Maxwell Lin, Nathanael Scharli, Denny Zhou. “Teaching Large Language Models to Self-Debug.” arXiv:2304.05128, 2023.
- Yujia Li, David Choi, Junyoung Chung, Nate Kushman, Julian Schrittwieser, Remi Leblond, Tom Eccles, et al. “Competition-Level Code Generation with AlphaCode.” Science 378(6624): 1092-1097, 2022.
- Noah Shinn, Federico Cassano, Ashwin Gopinath, Karthik Narasimhan, Shunyu Yao. “Reflexion: Language Agents with Verbal Reinforcement Learning.” NeurIPS 2023.
- Aman Madaan, Niket Tandon, Prakhar Gupta, et al. “Self-Refine: Iterative Refinement with Self-Feedback.” NeurIPS 2023.
- Timo Schick, Jane Dwivedi-Yu, Roberto Dessi, et al. “Toolformer: Language Models Can Teach Themselves to Use Tools.” NeurIPS 2023.
- Mert Cemri, Melissa Z. Pan, Shuyi Yang, et al. “Why Do Multi-Agent LLM Systems Fail?” NeurIPS 2025 Datasets and Benchmarks Track.
- Carlos E. Jimenez, John Yang, Alexander Wettig, et al. “SWE-bench: Can Language Models Resolve Real-World GitHub Issues?” ICLR 2024.
Связанная статья: Ratchet Pattern — Как заставить агента довести дело до конца — Практическая реализация этой теории. Паттерн, заставляющий агентов сходиться.
Связанный инструмент: tsma — Рабочий пример Ratchet Pattern. 527 функций, ноль TODO.
История изменений
- 2026-05-14: Первая версия