Reasoning Lock: ИИ-агент в проде тратит токены и молчит — живой разбор бага

Wait 5 sec.

В прошлой статье (https://habr.com/ru/articles/1076084/) я рассказывал о скрытом баге: ИИ-агент в проде заказчика тратит токены, генерация закрывается со статусом "успех", а клиенту уезжает пустая строка. Тогда я обещал разобраться и починить. Обещание выполнено: причина найдена, правки встали в воркфлоу, счётчик пустых ответов уже 7 дней - чисто. Баг получил имя Reasoning Lock. Теперь подробно о нём: симптомы, "расследование по этажам", механика и "лечение" - в общём в стиле детектива))Напомню, что строю ИИ-агентов на self-hosted n8n. Герой статьи - агент в проде заказчика: по ночам принимает заявки в Instagram Direct, ведёт диалог, собирает анкету и создаёт/обновляет сделку в amoCRM. Стек агента: n8n + Redis + LangChain, LLM основная - DeepSeek V4 Pro через OpenRouter, резервная - недавно поменял на Qwen3.8 Flash. Предыстория: два периода, две природы отказовИстория началась задолго до самого бага. С конца июня (установил в прод агента в первых числах июня если точнее быть) отказы случались двух периодов, и разница между ними = ключ к пониманию.Период первый = тесты и запуск: инфраструктура. Первые "пропавшие ответы" пользователям имели вполне земную природу: ограничения Meta - потери вебхуков, окно ответов, двойные доставки. Как это чинилось (мгновенный 200 OK, буфер на Redis, дебаунс) - разобрано в первых двух частях. К продакшену этот класс закрыли.Период второй - последние два месяца: промпт. Система стабилизировалась, и правки от заказчика посыпались в системный промпт... (( Под живую бизнес-логику: инструкция по пересылке оплаты пользователем, отдельные сценарии ответов для VIP-клиентов (абзаца два , которые под каждое "фи" постоянного клиента меняли по несколько раз), уточнения формулировок после каждого спорного диалога. Каждая правка по отдельности естетсвенно правильная и рабочая. Суммарно же промпт разросся до где то 6.4k токенов, и плотность запретов ("КАТЕГОРИЧЕСКИ ЗАПРЕЩЕНО", "Отправь СТРОГО этот текст") стала максимальной за всю жизнь системы. Читать далее