Skip to main content

Command Palette

Search for a command to run...

Агенты для программирования

Разработка функций

Теперь, когда вы разобрались в кодовой базе, пора создавать что-то новое.

Чтобы выпускать функции с помощью агентов, разбивайте работу на этапы, которые агент может проверять самостоятельно. Начинайте разработку каждой крупной функции с плана, а затем задавайте нужные ограничения, чтобы агент мог находить и исправлять собственные ошибки.

Начните с плана

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

Перед написанием кода нужно принять множество решений. Если у вас есть идея для функции, возможно, сначала стоит создать её простую версию, а затем дорабатывать её. Или, возможно, нужно учесть конкретные решения по дизайну.

Вы можете использовать кодовых агентов, чтобы продумать эти решения перед написанием кода. В Plan Mode Cursor агент изучит вашу кодовую базу, задаст уточняющие вопросы и составит пошаговый план, который вы сможете редактировать и изменять.

Когда вы отправляете промпт в режим планирования, агент сначала задаёт вопросы, чтобы определить требования:

Questions
Где следует хранить настройки уведомлений?

После ваших ответов агент создаёт структурированный план с этапами, которые он сможет проверять и подтверждать в процессе создания функции. Этот план можно редактировать, поэтому вы можете внести изменения, если что-то выглядит не так:

Plansnotification-preferences.md

Настройки уведомлений

Обзор

Добавить страницу настроек уведомлений в пользовательские настройки. Пользователи могут включать и отключать уведомления по email, push и в приложении для каждой категории (маркетинг, обновления продукта, предупреждения безо��асности). Настройки хранятся в базе данных с оптимистичными обновлениями UI.

Подход

Следовать существующей структуре страницы настроек в src/pages/Settings.tsx
Использовать таблицу UserPreferences с колонкой JSONB для конфигурации уведомлений
Повторно использовать существующий компонент Toggle из библиотеки UI

Задачи

Добавить колонку notification_preferences в таблицу UserPreferences
Создать компонент NotificationPreferences по образцу Settings.tsx
Добавить API route в app/api/user/notifications/route.ts
Настроить оптимистичные обновления с помощью существующего хука useOptimistic
Добавить тесты для переключения настроек и проверки API

Cursor делает планы полезными, разбивая крупные запросы на более мелкие, независимо проверяемые шаги. На каждом шаге агент может оценить свой прогресс, подтвердить успешное завершение шага и продолжить.

Когда стоит начать заново

Иногда Agent создаёт не совсем то, что нужно. Вместо того чтобы пытаться исправить результат последующими промптами, вернитесь к плану. Откатите изменения и сделайте план более конкретным, прежде чем запускать его снова.

Например, если вы упустили важную деталь архитектуры или проектирования системы, план может привести к неправильному результату. Начать заново с плана может показаться нелогичным, но зачастую это быстрее, чем исправлять подход, изначально заданный в неверном направлении.

Разработка через тестирование с агентами

Агенты работают лучше всего, когда могут определить, правильно ли работает их код. Если тест не проходит, агент видит, что пошло не так, и может попробовать ещё раз.

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

  1. Сначала напишите тесты. Попросите агента написать тесты на основе ожидаемых входных и выходных данных. Явно укажите, что вы используете TDD, чтобы он не создавал функции-заглушки для кода, которого ещё нет.
  2. Убедитесь, что тесты не проходят. Попросите агента запустить тесты и проверить, что они завершаются ошибкой. На этом этапе вы не пишете код функции.
  3. Закоммитьте тесты. Когда вас устраивают покрытие тестами и их качество, закоммитьте их. Так вы фиксируете требования, на основе которых агент будет писать код.
  4. Попросите агента написать код. Скажите ему, чтобы он добился прохождения всех тестов, не изменяя сами тесты. Продолжайте итерации, пока все тесты не будут проходить.
  5. Закоммитьте код. Проведите ревью результата, убедитесь, что он работает как ожидается, и закоммитьте его.
Agent example: TDD: сначала написать тесты
Напиши тесты для функции discountCode(), которая:
Возвращает цену со скидкой при передаче действительного кода
Выбрасывает InvalidCodeError для просроченных кодов
Корректно применяет скидки на фиксированную сумму (например, "10OFF" = скидка $10)
Никогда не возвращает отрицательную цену (минимум $0)
Следуй шаблонам тестов в src/__tests__/pricing.test.ts. Пока НЕ пиши функцию.

После коммита тестов попросите агента написать код. Явно укажите, что он должен добиться прохождения всех тестов, не изменяя их.

Agent example: TDD: добиться прохождения тестов
Добейся прохождения всех тестов в src/__tests__/discountCode.test.ts. Следуй шаблонам сервисов в src/services/PricingService.ts. НЕ изменяй тесты.

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

Этот подход особенно ценен для backend-кода, где нельзя проверить корректность, просто посмотрев на экран. Вы описываете ожидаемое поведение в тестах, а агент пишет код в соответствии с ним.

Почему в процессе TDD с агентами следует закоммитить тесты, прежде чем просить агента написать код?

От дизайна к коду

Агенты могут обрабатывать и понимать изображения. Вставьте скриншот или макет прямо в поле промпта — агент сможет воспроизвести дизайн по изображению.

Это работает для:

  • Макетов: Вставьте вайрфрейм или экспорт из Figma и попросите агента создать компонент
  • Визуальной отладки: Сделайте скриншот неожиданного состояния UI и попросите агента разобраться
  • Итераций: Сделайте скриншот текущего результата и опишите, что нужно изменить

Вы также можете подключить сервер MCP для Figma, чтобы агент мог получать токены дизайна, переменные и спецификации компонентов прямо из файлов Figma.

Встроенный браузер позволяет просматривать изменения по мере того, как агент их вносит. В нём агент может переходить между страницами, делать скриншоты и проверять собственный визуальный результат. Это избавляет от необходимости вручную передавать скриншоты агенту.

Распространённая ошибка: разработка без проверки

Главный риск быстрой разработки функций — пропустить проверку. Агент может быстро генерировать много кода, но скорость без корректности может привести к дополнительной работе в дальнейшем.

Вот несколько способов помочь агенту проверить свою работу:

  • Тесты для проверки логики и поведения
  • Проверка типов для проверки структуры
  • Линтеры для соблюдения стиля кода и шаблонов
  • Инструменты браузера или MCP‑серверы для получения обратной связи об изменениях в UI

Если агент не может проверить свои выходные данные, вам придётся потратить больше времени на исправления.

Что дальше

Вы выпустили функцию. Но в ПО бывают баги, и некоторые из них сложно найти. В следующей главе вы узнаете о систематических подходах к поиску и исправлению багов с помощью агентов.

Вы прошли эту главу