Ітерації, дебагінг та відновлення

Збої AI-розробки, ліміти та аварійне відновлення

Діагностика регресійних помилок, подолання зациклення мовної моделі, стратегії швидкого відкату версій та робота в умовах вичерпання квот інструментів

Збої AI-розробки, ліміти та аварійне відновлення

🎯 Мета розділу

  • Навчитися своєчасно розпізнавати критичні збої у процесі AI-розробки: регресії та зациклення моделі.
  • Опанувати алгоритм безпечного відкату кодової бази до останньої стабільної точки відновлення.
  • Засвоїти техніку «ручного втручання» (Manual Intervention) для розриву нескінченних циклів помилок.
  • Підготувати стратегію безперервності розробки в умовах вичерпання безкоштовних лімітів або квот AI-інструментів через експорт у GitHub.

🔑 Ключові терміни

  • Регресія (Regression): дефект, за якого раніше перевірена та стабільна функція несподівано ламається після внесення нових змін до коду.
  • Зациклення моделі (Error Loop / Hallucination Loop): стан, коли AI на кожну наступну вимогу виправити баг генерує новий варіант коду з тією самою або ще глибшою помилкою.
  • Відкат версії (Rollback): повернення вмісту файлів проєкту до стану раніше збереженого знімка (Snapshot) або коміту.
  • Квота використання (Rate Limit / Quota): обмеження на кількість безкоштовних повідомлень або обчислювальних ресурсів, встановлене AI-платформою.

Діагностика регресії: коли зникає те, що працювало

Найбільш підступний тип помилок у швидкій розробці — це регресія. Ви попросили AI змінити радіус заокруглення кнопок, а після оновлення помічаєте, що клік по кнопці взагалі перестав викликати функцію розрахунку.

Причини регресій типові:

  1. AI повністю переписав функцію замість точкового оновлення одного параметра.
  2. Модель випадково перейменувала ID елемента у розмірці або слухачі подій.
  3. Було видалено виклик функції ініціалізації або затерто глобальний обробник.
Перше правило при виявленні регресії: НЕ просіть AI «полагодити назад» у наступному повідомленні. Якщо система вже знаходиться в нестабільному стані, спроба виправлення поверх пошкодженого коду зазвичай множить хаос. Єдине правильне рішення — миттєвий відкат (Rollback).

Проблема зациклення AI на помилці (Error Looping)

Часто виникає ситуація, коли консоль видає специфічну помилку (наприклад, TypeError: Cannot read properties of null). Розробник відправляє текст помилки асистенту, той вибачається, переписує код... і консоль видає ту саму помилку. Розробник знову надсилає повідомлення — і знову отримує непрацююче рішення.

Це явище називається зацикленням моделі. Коли модель двічі поспіль не впоралася з дефектом, вона «застрягає» у локальному оптимумі свого контексту.

Loading diagram...
@startuml
skinparam style plain
skinparam backgroundColor #FFFFFF
skinparam activityBorderColor #1E293B
skinparam activityFontSize 13

start
:Виявлення зациклення (2 невдалі спроби AI виправити баг);

fork
  :Стратегія А: Звуження задачі;
  note right #FEF3C7
    Виділити 1 проблемний рядок,
    заборонити чіпати решту коду
  end note
fork again
  :Стратегія Б: Ручне втручання;
  note right #FEF3C7
    Знайти помилку очима в консолі
    та самостійно змінити назву ID
  end note
fork again
  :Стратегія В: Відкат та зміна промпту;
  note right #DCFCE7
    Rollback до Snapshot,
    переформулювання завдання
  end note
end fork

:Стабілізація системи;
stop
@enduml

Три правила розриву циклу:

  1. Звузьте фокус: вкажіть конкретний рядок: «Помилка виникає у рядку 14, тому що елемент #user-name не знайдено в DOM. Додай перевірку if (!element) return;».
  2. Перевірте очевидне самостійно: у 80% випадків зациклення причина банальна — в HTML написано id="pageCount", а в JS асистент шукає #page-count. Одне ручне виправлення назви рятує від годин безплідної генерації.
  3. Почніть із чистого аркуша: зробіть Rollback до попередньої версії та сформулюйте промпт принципово іншими словами.

Безперервність розробки: подолання лімітів і квот

Усі сучасні платформи швидкої розробки (Bolt.new, Replit, v0) мають обмеження безкоштовного тарифу: денні ліміти запитів, вичерпання токенів або блокування до наступного місяця. Професійний інженер завжди повинен мати план дій на випадок, якщо платформа раптово покаже повідомлення: «You have reached your daily limit».

Рятівним мостом для забезпечення безперервності розробки є GitHub.

Loading diagram...
@startuml
skinparam style plain
skinparam backgroundColor #FFFFFF
skinparam sequenceMessageAlign center

actor "Розробник" as Dev #DBEAFE
participant "AI IDE A (наприклад, Replit)" as IDE1 #FEF3C7
participant "Репозиторій GitHub" as Git #E2E8F0
participant "AI IDE B (наприклад, Bolt.new)" as IDE2 #DCFCE7

Dev -> IDE1 : Робота над проєктом (досягнуто ліміту квоти)
IDE1 -> Git : 1. Експорт / Push у репозиторій GitHub
Dev -> Git : 2. Перевірка наявності файлів (index, style, main)
Dev -> IDE2 : 3. Імпорт репозиторію за посиланням
IDE2 -> Dev : Готове середовище, розробку продовжено без втрат!
@enduml

Алгоритм безпечного перенесення проєкту:

  1. Регулярний експорт: підключіть ваш проєкт до GitHub або регулярно завантажуйте ZIP-архів із робочою версією файлів.
  2. Автономність коду: оскільки наш проєкт не використовує специфічних закритих бібліотек платформи, а побудований на стандартному клієнтському стеку (HTML/CSS/JS), він гарантовано запуститься у будь-якому іншому середовищі.
  3. Миттєвий імпорт: якщо ліміти вичерпано на Replit — ви просто імпортуєте репозиторій у Bolt.new або відкриваєте його локально у VS Code / Cursor і продовжуєте роботу без жодної втрати прогресу.

Практичні завдання та запитання для самоконтролю

Copyright © 2026