Reasoning Lock: как разросшийся промпт заставил ИИ-агента тратить токены впустую и молчать
Автор строит ИИ-агентов на self-hosted n8n + Redis + LangChain c LLM DeepSeek V4 Pro (основная) и Qwen3.8 Flash (резервная). Агент обрабатывает заявки в Instagram Direct, ведет диалог, собирает анкету и обновляет сделку в amoCRM. В проде заказчика возник баг: генерация закрывается со статусом «успех», но клиенту приходит пустая строка, хотя токены сгорают.
Первый период отказов (тесты и запуск) был вызван ограничениями Meta — потеря вебхуков, окно ответов, двойные доставки. Их закрыли мгновенным 200 OK, буфером на Redis и дебаунсом. Второй период начался последние два месяца: заказчик постоянно правил системный промпт — менял инструкции для VIP-клиентов, переписывал формулировки после спорных диалогов. Промпт разросся до ~6.4K токенов, плотность запретов («КАТЕГОРИЧЕСКИ ЗАПРЕЩЕНО», «Отправь СТРОГО этот текст») стала максимальной.
Механика Reasoning Lock: LLM застревает в итерациях саморефлексии, перебирая варианты, но не находит инструкцию, которая удовлетворяет всем противоречивым требованиям. Генерация завершается с кодом 200, токены потрачены, ответ пуст. Правки автора (упрощение промпта, разбивка на логические блоки, сокращение числа запретов) решили проблему — за 7 дней после внедрения ни одного пустого ответа.