Чек-лист отладки
Проходите по этим пунктам по порядку. Прыжок сразу к «почини это» как раз и заставляет AI ходить кругами.
- Воспроизведите ошибку надёжно. Найдите точные шаги, которые вызывают баг каждый раз. Баг, который вы не можете воспроизвести, — это баг, исправление которого вы не можете подтвердить: вы будете лишь вечно гадать, исчез ли он. Если он проявляется время от времени, охотьтесь за переменной, которая его переключает: конкретный ввод, состояние «вошёл в систему» против «вышел», медленная сеть.
- Прочитайте саму ошибку. Не пробегайте глазами. Сообщение об ошибке и верхушка стека вызовов обычно называют файл и строку, где всё пошло не так. Новички часто проматывают самое полезное предложение на экране, потому что оно выглядит пугающе.
- Соберите контекст. Соберите текст ошибки, стек вызовов, релевантный код и одно предложение с описанием того, чего вы ожидали.
- Передайте AI полную картину. Вставьте всё перечисленное выше в одно сообщение. Дайте ему сформировать гипотезу.
- Формулируйте гипотезу, а не исправление. Спросите «что могло это вызвать?» прежде чем «почини это». Неверное исправление по неверной теории — пустая трата времени — а иногда оно добавляет второй баг поверх первого.
- Добавьте логирование, чтобы проверить гипотезу. Подтвердите, что код действительно делает, прежде чем менять его.
- Применяйте двоичный поиск к проблеме. Сужайте место, где всё ломается, многократно деля подозрительную область пополам.
- Исправляйте первопричину, а не симптом. Убедитесь, что исправление устраняет причину поломки, а не только видимый сбой.
- Проверьте исправление и проверьте на регрессии. Заново выполните шаги воспроизведения. Затем убедитесь, что соседние функции по-прежнему работают — регрессия это когда исправление тихо ломает то, что раньше работало, как если бы вы заделали одну течь, а рядом прорвало трубу.
Этот чек-лист на самом деле — один цикл, по которому вы катитесь, пока баг не исчезнет. Каждый блок передаёт улики следующему, а неудачная проверка просто отправляет вас на новый круг с тем, что вы узнали:
┌──────────────┐
│ ВОСПРОИЗВЕДИ │ делай так, чтобы повторялось каждый раз
└──────┬───────┘
▼
┌──────────────┐
│ ЧИТАЙ ОШИБКУ+│ что она на самом деле говорит?
│ СОБЕРИ │ собери трассу + код + контекст
└──────┬───────┘
▼
┌──────────────┐
│ ГИПОТЕЗА │ "что могло это вызвать?"
└──────┬───────┘
▼
┌──────────────┐
│ ПОДТВЕРДИ │ добавь лог, получи улику
│ ЛОГОМ │
└──────┬───────┘
неверн.│ верная
┌──────┘ догадка ▼
│ ┌──────────────┐
│ (новая │ ИСПРАВЬ │ не симптом
│ теория) │ ПРИЧИНУ │
│ └──────┬───────┘
│ ▼
│ ┌──────────────┐ сбой / регрессия
└────────────┤ ПРОВЕРКА │──────────┐
│ +регрессии │ │
└──────┬───────┘ │
│ проходит │
▼ ◀───────┘
✔ ГОТОВО (новый круг)
Порядок не случаен. Каждый шаг производит улики, которые нужны следующему шагу. Воспроизведение даёт вам что читать; чтение даёт контекст для сбора; контекст даёт AI материал для гипотезы. Пропустите шаг — и вы скармливаете следующему дыру.