Соблазн при баге — вставить агенту сообщение об ошибке и попросить «почини». Иногда срабатывает, чаще — агент правдоподобно правит не то, маскирует симптом или ломает соседнее. Отладка с агентом работает, когда идёт системно, теми же шагами, что и хорошая отладка вообще, — просто агент выполняет их быстрее.
Сначала воспроизвести, потом чинить
Нельзя надёжно починить то, что не умеешь стабильно вызвать. Первый шаг — не правка, а воспроизведение:
- Соберите с агентом точные шаги, при которых баг проявляется, и данные, на которых он возникает.
- В идеале — падающий тест, который воспроизводит проблему. Это золото: теперь у агента (и у вас) есть objective-критерий «починено = тест зелёный».
Пока баг не воспроизводится стабильно, любая «починка» — гадание. Плавающий баг так и говорите агенту: «воспроизводится примерно в одном случае из трёх» — это меняет подход.
Гипотеза и локализация — по коду
Дальше — не «почини», а «найди причину». Просите агента рассуждать и опираться на код:
- «Где формируется это значение и почему тут оно неверное?»
- «Проследи путь этих данных от входа до места ошибки».
- «Какие есть гипотезы, почему падает именно так, и как каждую проверить?»
Требуйте ссылок на конкретные места в коде, а не общих рассуждений. Агент, который читает файлы напрямую, локализует причину надёжнее, чем модель, отвечающая по памяти. И держите в голове, что уверенная гипотеза может быть галлюцинацией — проверяйте её, а не принимайте.
Чинить причину, а не симптом
Найдя причину, добивайтесь минимальной правки, которая устраняет её, а не обходного костыля, который прячет симптом. Частые анти-паттерны, за которыми стоит следить:
- заглушка, гасящая ошибку, вместо исправления того, что её вызвало;
- «на всякий случай» правка в пяти местах, когда причина в одном;
- подгонка под конкретный случай вместо исправления общей логики.
Хорошая правка объяснима: понятно, почему она чинит баг.
Проверить, что ушло и ничего не сломалось
Починка не закончена, пока не проверено двумя вопросами:
- Баг ушёл? Прогоните тот самый воспроизводящий тест/шаги — теперь должно быть чисто.
- Не сломалось ли рядом? Прогоните остальные тесты. Правка могла задеть соседнее — это регресс, и агент про него сам не вспомнит.
Это часть общей приёмки результата ИИ: исправление — такой же результат, который проверяется, а не принимается на веру.
Что это значит на практике
Отладка с агентом — это дисциплина, а не заклинание «почини». Продукт-инженер ведёт агента по шагам: стабильно воспроизвести (лучше тестом) → найти причину по коду → минимально исправить причину → проверить, что баг ушёл и регресса нет. Агент даёт скорость на каждом шаге, но порядок и суждение — за человеком; иначе получаешь быстро сделанную не-починку.
Дальше
Когда код написан и починен, его качество закрепляют: ревью и тестирование кода, а затем — настройка агента, чтобы часть этих проверок он делал сам.