Открытый гайд · ИИ-офис

Отладка кодас Claude Code: ищем причину

«Почини, тут что-то сломалось» — и агент лепит заплатку, а баг возвращается. Отладка — это метод, а не угадайка. Разберём, что дать агенту на входе и как заставить его искать корневую причину, а не симптом.

@kir.player
~12 минут
июнь 2026

Когда что-то падает, рука сама тянется написать агенту «почини, тут ошибка». Иногда срабатывает. Чаще — Claude навешивает локальную заплатку, баг исчезает с экрана, а через день вылезает в другом месте, потому что настоящая причина так и осталась нетронутой. Отладка — это дисциплина: дать факты, найти источник, починить именно его, проверить. Этот гайд про то, как гонять Claude Code по этому маршруту, а не по угадайке.

Что узнаешь из гайда

  • Почему «почини» без фактуры даёт заплатки
  • Что дать на входе: ошибка, стек-трейс, шаги воспроизведения
  • Что такое корневая причина и почему симптом — не она
  • Воркфлоу из пяти шагов: от ошибки до проверенного фикса
  • Когда агенту отладку не доверяют

Часть 1 · Проблема

Почему «почини» не работает

Главное

Без фактуры агент гадает. «Почини, тут ошибка» не говорит, где упало и как повторить, поэтому Claude хватается за ближайшую заплатку, а не за источник.

Расшифруем пару слов для тех, кто из вайбкодинга. Баг — это поведение программы, которого ты не ждал: упало, выдало не то, зависло. Отладка (дебаг) — процесс поиска причины бага и его исправления. Стек-трейс — список вызовов функций в момент падения; он показывает точное место, где код споткнулся.

Когда ты пишешь голое «почини», агент видит только что «плохо», но не видит ни где, ни как воспроизвести. Дальше он делает разумное в условиях неизвестности: предполагает причину и лепит локальную защиту вокруг места, которое кажется виноватым. Симптом уходит — причина остаётся. Отсюда правило: отладка начинается не с просьбы починить, а с подачи фактов.

Агент чинит ровно то, что ты ему показал. Покажи симптом — получишь заплатку.


Часть 2 · Вход

Что дать Claude на входе

Главное

Три вещи решают почти всё: полный текст ошибки со стек-трейсом, команда воспроизведения и пометка, баг стабильный или плавающий.

Стек-трейс показывает, где упало. Команда воспроизведения даёт агенту способ повторить баг самому и проверить фикс. Пометка про стабильность подсказывает направление: стабильный баг — это логика, плавающий — часто гонка, состояние окружения или зависимость от данных. Вот как выглядит хороший промт на отладку:

чат Claude Code · промт на отладку
Падает при сохранении профиля. Ошибка и стек-трейс:

TypeError: Cannot read properties of undefined (reading 'id')
    at saveProfile (app/actions/profile.ts:42)
    at handleSubmit (components/profile-form.tsx:88)

Воспроизводится так: открыть /profile, очистить поле «город»,
нажать «Сохранить». Баг стабильный, повторяется каждый раз.

Найди корневую причину и почини её, а не симптом.
Сначала покажи, где источник, потом правь.

Заметь последние две строки: просьба найти именно корневую причину и показать источник до правки. Это и отделяет отладку от угадайки. Подробнее про то, как вообще формулировать задачи агенту, — в гайде про промптинг для Claude Code.

Важно

Не пересказывай ошибку своими словами — копируй текст и стек-трейс целиком. «Что-то с профилем не сохраняется» и точный TypeError с номером строки — это два разных уровня входных данных. Агент работает ровно настолько точно, насколько точен след, который ты ему дал.


Часть 3 · Причина

Корневая причина против симптома

Главное

Корневая причина — настоящий источник бага, а не место, где он проявился. Ошибка часто вылетает в одном месте, а виновата правка слоем выше.

Разберём на примере выше. Ошибка вылетает в saveProfile на строке 42: код читает .id у чего-то, что оказалось undefined. Соблазн — обернуть это место проверкой «если не undefined». Симптом уйдёт. Но почему туда вообще пришёл undefined? Может, форма отправляет пустой город как undefined вместо пустой строки, и корень — в компоненте формы, а не в экшене сохранения.

ПодходЧто делаетЧем кончится
ЗаплаткаГлушит симптом в месте паденияБаг вернётся в другом виде
Корневой фиксЧинит источник слоем вышеКласс багов закрыт

Поэтому в промт и зашивают «найди и почини корневую причину, заплатки в дочернем коде не предлагай». А чтобы агент не лез сразу править — просят сначала показать цепочку: вот источник, вот доказательство. Удобно делать это в режиме плана — пусть распишет диагноз до того, как тронет файлы.

На сложном баге проси Claude думать тщательнее — для этого в формулировку добавляют слова вроде «подумай как следует» (расширенное мышление). Агент выделит больше внимания на анализ цепочки вызовов и реже схватится за первую попавшуюся гипотезу.


Часть 4 · Маршрут

Воркфлоу отладки: пять шагов

Хорошая отладка идёт по одному и тому же маршруту — от ошибки до проверенного фикса. Это ровно тот путь, которым работает встроенный у Claude Code разбор багов: захватить ошибку, воспроизвести, изолировать, починить минимально, проверить.

  1. Захвати ошибку. Полный текст и стек-трейс — где именно упало. Это отправная точка, не пересказ.
  2. Воспроизведи. Дай команду или шаги, которыми баг повторяется. Агент должен уметь увидеть проблему сам.
  3. Изолируй источник. Сузить место: трассировка по коду от точки падения вверх по цепочке вызовов до настоящей причины.
  4. Минимальный фикс. Починить корень самым узким изменением, не переписывая половину проекта «заодно».
  5. Проверь. Повторить шаги воспроизведения и убедиться, что баг ушёл, а ничего соседнего не отвалилось.

Пример: отдельный «дебаггер»

Этот маршрут можно зашить в субагента-дебаггера: отдельный агент, который всегда работает по схеме «захвати ошибку → воспроизведи → изолируй → минимальный фикс → проверь» и в ответе даёт причину, доказательство и тест. Как заводить таких — в гайде про субагентов Claude Code.

Коротко

  • Маршрут: захвати → воспроизведи → изолируй → почини → проверь.
  • Каждый шаг опирается на факты, а не на догадку.
  • Повторяющийся разбор багов выноси в субагента-дебаггера.

Часть 5 · Проверка

Проверка фикса

Главное

Фикс не готов, пока не воспроизведён повторно: баг ушёл, соседнее не сломалось. «Должно работать» — это не проверка.

Главная ловушка — поверить агенту на слово. Он говорит «починил», но проверка — это прогон тех же шагов воспроизведения, что упали в начале. Поэтому команду воспроизведения дают не только для диагноза, но и для верификации: тот же путь, теперь без ошибки.

чат Claude Code · просьба проверить
# После фикса проси повторить тот же путь и прогнать проверки:
Повтори шаги воспроизведения и убедись, что баг ушёл.
Прогони тесты и линт. Покажи, что соседнее не отвалилось.

Когда отладку агенту не доверяют

Не отдавай агенту вслепую баги в чувствительных местах — оплата, права доступа, безопасность, удаление данных. Тут фикс читают глазами всегда, даже если тесты зелёные. И не принимай правку, где причина «непонятна, но теперь работает»: это не починенный баг, а отложенный. Работай на ветке, чтобы любую правку можно было откатить — об этом гайд про безопасный воркфлоу с Git.

Коротко

  • Отладка — метод: факты на входе, корневая причина, минимальный фикс.
  • Дай ошибку, стек-трейс и команду воспроизведения; проси чинить источник, не симптом.
  • Проверка = повторить воспроизведение + тесты. «Должно работать» не считается.

Вопросы

Частые вопросы

Как отлаживать код с Claude Code?

Отладка с Claude Code — это не «почини, тут что-то сломалось», а структурный разбор: даёшь агенту текст ошибки, стек-трейс и команду, которой баг воспроизводится, и просишь найти корневую причину, а не залатать симптом. Claude умеет трассировать проблему по коду от сообщения об ошибке до её источника, объяснить причину и предложить минимальный фикс. Чем больше фактуры на входе, тем точнее диагноз.

Что дать Claude Code, чтобы он нашёл баг?

Дай три вещи: полный текст ошибки со стек-трейсом, шаги или команду воспроизведения и уточнение, баг стабильный или плавающий. Стек-трейс показывает, где упало; шаги воспроизведения позволяют агенту повторить проблему; пометка про стабильность подсказывает, искать ли гонку или состояние окружения. Без этого агент гадает, с этим — трассирует по реальному следу.

Что такое корневая причина (root cause) и зачем её искать?

Корневая причина — это настоящий источник бага, а не место, где он проявился. Часто ошибка вылетает в одном месте, а виновата правка слоем выше: неверные данные, пропущенная проверка, сломанный контракт. Если чинить симптом локальной заплаткой, баг вернётся в другом виде. Поэтому Claude Code просят найти и исправить именно корневую причину, а заплатки в дочернем коде — отклонять.

Как не дать Claude Code залатать симптом вместо причины?

Прямо проси чинить корневую причину, а не симптом, и требуй объяснить диагноз перед правкой. Полезная схема — сначала режим плана: пусть агент покажет, где он видит источник и почему, и только потом правит. Так ты отлавливаешь случаи, когда он хочет повесить try/catch вокруг симптома вместо того, чтобы исправить причину уровнем выше. Фикс принимают только с понятной цепочкой «вот источник, вот доказательство».

Читать дальше

Соседние гайды

Сообщество · бесплатно
Чини баги методом, а не угадайкой

Отладка, промптинг, безопасный Git и субагенты — это рабочая база, на которой стоит ИИ-офис. Разборы реальных багов и живое сообщество вайбкодеров — в Telegram.

Зайти в Telegram ИИ-офиса

А готовые навыки для Claude Code — в маркетплейсе скилов.