Месяц рендерил планировки без нейросети. Не видел

Держу парк из нескольких десятков автономных агентов на собственном сервере, каждый со своей ролью. Архитект-агент помогал инженерам анализировать планы, рисовать варианты расстановки, считать сметы. По этому проекту нет нареканий, все работает. Ровно до момента, когда я залез в логи месяц спустя.

OAuth-токен протух. Архитект месяц рендерил в режиме fallback. Никаких криков, никаких алертов, никакой очевидной поломки. Система молча перешла на дефолтное поведение, когда AI умер, и продолжала работать как ни в чем не бывало. Рисовала планировки с дефолтной раскраской, без анализа, как будто это нормально.

Ловушка была в архитектуре: when API request fails, catch exception try fallback return default silently. Дефект скрывался в одной функции. Она ловила 401 Unauthorized, не поднимала шум, и система деградировала в режим «работает, но без AI». Я смотрел на health-check, видел зеленый статус от getMe (его можно вызвать без контекста), и верил, что все в порядке. На деле архитект жил в режиме заглушек тридцать один день.

Когда нашел, мог бы закрыть issue и двигаться дальше. Вместо этого рефакторил архитектуру. Мигрировал на embedded-провайдер (авторизация уже встроена в ОС), удалил все guard if not API_KEY (которые скрывали дефекты), добавил в doctor-агента (мониторинг) явные алерты на деградацию. Сейчас, когда что-то ломается в пути обращения к LLM, система кричит в течение минут, не часов и не месяцев.

Вывод как правило на класс задач: silent fallback - это мина замедленного действия. Если критичный компонент падает молча, дефект будет скрываться недели и месяцы, потому что с пользовательской точки зрения ничего не ломается. Работает же. Поломка, которая не кричит, это не дефект - это техдолг из будущего, который лежит в ваших логах. Деградация должна быть видна немедленно, иначе она превращается в тихую регрессию.

#автоматизация #LLM #мониторинг #архитектура #OpenClaw #разработка #fallback #надежность