Пару месяцев назад руководительница инженерной команды поделилась разочарованием в ИИ-инструментах после попытки отрефакторить восьмилетний Django-монолит с помощью Claude. Агент выдавал чистые патчи, которые незаметно ломали интеграции с внешними сервисами. После нескольких откатов и поисков неочевидных регрессий команда свернула эксперимент и вернулась к ручному подходу. Похожие истории обсуждаются на reddit в ветке r/vibecoding.
Проблема, по мнению автора статьи, не в ограничениях моделей, а в нехватке структуры в унаследованных системах. Новые кодовые базы имеют чёткие границы и минимум скрытых зависимостей, тогда как легаси-код накапливает странности и неявные контракты. Без защитных ограничений агенты видят только код, но не контекст системных интеграций. Выход — наращивать структуру постепенно, начиная с плотного контроля.
Первый принцип — тесты как границы системы. Прежде чем трогать продакшен-код, линтинг, проверка типов и E2E-тесты создают петли обратной связи. В одной недавней миграции (перевод инструмента для медицинской визуализации с ванильного JavaScript на React) автор быстро написал более 120 Playwright-тестов с помощью Claude. Агент изучил HTML и JavaScript, определил структурные маркеры и действия, а затем Playwright проверил побочные эффекты кликов. Тесты дают отрицательную обратную связь, не дающую поведению дрейфовать.
Автоматизированные тесты (E2E, линтинг) создают обратную связь для агента, предотвращая дрейф поведения.
Второй принцип — документация как контекст. Тесты говорят агенту, что что-то сломалось, а документация объясняет, почему всё устроено именно так. Рекомендуется вести файлы CLAUDE.md или AGENTS.md с обзорами архитектуры, картами интеграций и описанием неявных контрактов. Автор использует команду /learn: когда агент спотыкается, он анализирует сбой и предлагает обновления для документации.
Третий принцип — инкрементальный подход как управление рисками. Сложные системы сопротивляются переделке целиком. Миграции разбивают на отдельные обратимые этапы. В случае с медицинской визуализацией запросы включали до 10 файлов, каждый этап проходил тесты и проверку перед тем, как перейти к следующему. Когда агент допускал ошибку, её откатывали и уточняли инструкции. Это позволяет постепенно повышать автономность.
Таким образом, ключ к безопасному внедрению ИИ-агентов в легаси — не ждать следующего поколения моделей, а создавать структуру, которая нужна агентам для безопасных действий.



