Coding Agents
Поиск и фикс багов
Неофициальный перевод раздела Cursor Learn. Мы переводим английский оригинал и чуть расширяем объяснения — это не материал от Cursor Inc.
Чем больше кода пишут agents, тем больше времени уходит на ревью и охоту за багами. Даже с помощью agents стоит освежить fundamentals debugging и понять, какие куски расследования можно делегировать.
Debugging fundamentals
Хороший debugging одинаков для человека и для agent’а:
- Надёжное reproduction — без воспроизведения нет проверки фикса. Запиши шаги, inputs, условия.
- Минимальный кейс — вырежи всё лишнее. Чем меньше repro, тем проще root cause.
- Изолируй переменные — меняй по одному. Поменял три вещи и « Magically починилось» — не знаешь, что сработало.
- Конкретные гипотезы — «баг где-то в payments» слишком широко. «
calculateTotal()не учитывает negative discounts» — уже можно проверить. - Инструментируй — логи на входах/выходах подозрительного участка, сравни expected vs actual.
- Regression test — нашёл и починил → напиши тест, который бы поймал баг. Чтобы он не вернулся.
Два подхода
Быстрый фикс простых ошибок
Если есть чёткий error message — часто хватает «вставь стек + контекст» и отпусти agent.
This test is failing:
TypeError: Cannot read properties of undefined (reading 'profile')
at getProfile (src/services/UserService.ts:45)
at UserController.show (src/controllers/UserController.ts:23)The error happens when a user created before we added the profile onboarding flow tries to view their profile. Find the root cause and fix it.
Работает, когда причина видна в ошибке. Не всегда — тогда нужен более системный подход.
Debug Mode: сначала evidence
Для хитрых багов Debug Mode идёт от доказательств, а не от угадывания фикса:
- Генерирует гипотезы
- Ставит targeted logging
- Просит тебя воспроизвести баг, пока собирает данные
- Анализирует логи и находит root cause
- Делает точечный фикс по evidence
Checkout is failing intermittently for some users. No consistent error message. Sometimes the order goes through, sometimes it silently fails and the user sees a blank confirmation page.
По сути Debug Mode автоматизирует тот же цикл fundamentals, который ты делал бы руками.
Несколько моделей параллельно
На сложных багах разные модели иногда находят разное. В Cursor можно прогнать один debugging brief по нескольким моделям одновременно — каждая в изоляции.
Workflow:
- Чёткий brief: repro + гипотезы
- Выбери несколько моделей
- Отправь prompt — работают независимо
- Сравни предложенные фиксы
- Оставь подход с самым сильным evidence
Cursor может подсказать «лучший» вариант, но оценивай reasoning, не только итоговый патч. Попроси модель отдельно верифицировать свой фикс.
Неси runtime data в loop
Agent иногда находит perf-проблемы одним чтением кода. Но с runtime evidence копает глубже.
Начни с вопроса
The order history page takes 4 seconds to load for users with lots of orders. Why is this slow?
Иногда этого хватает — agent находит N+1 или тяжёлый query прямо в коде.
Корми evidence
Когда анализа кода мало — кидай реальные данные: terminal output, query plans, профили.
This query is taking 1.2 seconds in production. Here’s the EXPLAIN ANALYZE output:
Seq Scan on orders ... Filter: (user_id = 'usr_abc123')
Rows Removed by Filter: 2341856
Execution Time: 1203.298 msFind why it’s doing a sequential scan and fix it.
Тот же паттерн работает для app logs, profiling data, output тестов и билдов.
Browser для фронта
Встроенный browser даёт agent’у доступ к приложению: console, network, DOM. Можно попросить открыть страницу, воспроизвести баг и проследить путь до исходников — без ручного копипаста из DevTools.
MCP к monitoring
MCP подключает Sentry, Datadog, БД, Linear/GitHub Issues. Вместо ручной вставки данных agent сам тянет нужное.
We’re getting a spike in checkout errors since yesterday’s deploy. Can you pull the details from Sentry and check the Datadog logs to figure out what’s going on?
Можно даже выстроить workflow, где алерт сам заводит тикет и запускает agent-расследование — иногда баг чинят до того, как его заметили пользователи.
Частый fail: принять фикс, который не понимаешь
Не понял фикс — не можешь валидировать. Agent мог воткнуть null-check: ошибка пропала, а data inconsistency осталась.
Спрашивай, пока не станет ясно: почему значение null? что изменилось? это root cause или маскируем симптом? Помни foundations: модели умеют правдоподобно hallucinate объяснения. Сверяй их рассказ с данными расследования.
Что дальше
Баги ловить научились. Дальше — ревью и системное тестирование, чтобы изменения не притащили регрессии.