Ошибка 3 — большая задача одним промптом

Тема 5/5: День 5. Главные ошибки новичков и следующий шаг Урок 3/9

«Сделай мне сервис целиком — главная, регистрация, ИИ-генерация, оплата, панель» — частая команда новичков. По мере работы агент теряет нить, ломает то, что сделал в начале, и контекст переполняется. В этом уроке — как правильно нарезать задачу на этапы.

Почему «всё сразу» не работает

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

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

Правильное разбиение — небольшие итерации

Хорошая единица работы — это задача, которая решает одну конкретную проблему, помещается в один коммит и не требует держать в голове всю архитектуру сразу. Если расписать проект ИИ-сервиса такими шагами, получается понятная последовательность.

Сначала создаётся сам проект на Next.js с базовым макетом и файлом CLAUDE.md. Затем — главная страница с первым экраном и призывом к действию, потом страница тарифов. Дальше подключается Postgres и Auth.js v5 с регистрацией через magic-link, появляется защищённый раздел /dashboard, таблица пользователей и проверка авторизации в API. Следующими шагами идут форма для ИИ-генерации и API-маршрут для неё с подключением OpenRouter, затем списание кредитов с блокировкой строки, чтобы не было гонок при параллельных запросах. И в самом конце — подключение эквайринга T-Банка (Init и обработка webhook), автоматическое продление подписок и выкат проекта с настройкой домена. Каждый из этих шагов — отдельная сессия с чистым контекстом.

Когда переходить к следующей задаче

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

Очистка контекста между задачами

Переходя к новой задаче, не продолжайте старый чат. В Claude Code для этого есть команды /clear и /compact, а более грубая альтернатива — закрыть терминал и открыть новый. После этого агент заново перечитает CLAUDE.md и начнёт с чистого листа, не таща за собой предыдущие ошибки и неудачные попытки.

Промежуточные планы как приём

Если задача всё-таки большая — например, целый модуль платежей, — полезно сначала попросить агента составить план, а не сразу писать код:

Я хочу подключить T-Банк эквайринг с подпиской и авто-продлением. Перед началом — составь план: какие файлы создаются, какие меняются, какая БД-схема, какие API-эндпоинты. План в виде чек-листа, не пиши код. После того как я одобрю — начинай.

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

Когда задача всё ещё слишком большая

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

Антипаттерн «продолжай»

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

Что в следующем уроке

Большую задачу мы разбили. Но даже на коротком этапе нельзя оставлять агента совсем без присмотра. На следующем уроке разберём ошибку «не следим за агентом» и то, как настроить контроль.