Claude Code: работа с coding-агентом4. Контекст под контролем
Plan mode: пауза перед кодом, но ещё не согласие
Засчитывается, когда отвечены все вопросы квиза
Вы попросили агента сделать звёздный рейтинг курсов в Cadence. Он прочитал код, сразу начал писать и через десять минут отчитался: таблица, сервис, компонент, тесты. Работает — почти. Но ни разу за эти десять минут агент не спросил, то ли он строит. Можно ли ставить оценку своему курсу? Что показывать, пока оценок нет? Он решил это сам, молча.
Зачем это нужно
Агент склонен сразу производить результат: вы назвали, что хотите, — он это делает. Оригинал курса называет эту черту sycophancy: агент соглашается и выдаёт, вместо того чтобы сначала договориться с вами. На маленькой фиче это сходит с рук. На большой агент уверенно строит не то, и вы узнаёте об этом, когда код уже написан.
Первое, что предлагает Claude Code против этой спешки, — plan mode. Документация советует разделять исследование и реализацию, чтобы не решать не ту задачу.
Как это устроено
Plan mode — один из permission modes. В нём Claude читает файлы, запускает команды, чтобы исследовать проект, и пишет план, но не правит ваш код, пока вы не одобрите план.
Войти можно тремя способами:
- нажимать
Shift+Tab, пока в строке состояния не появится⏸ plan mode on; клавиша перебирает режимыdefault→acceptEdits→plan; - начать промпт с
/plan, например/plan add star ratings to courses; - запустить сессию сразу в этом режиме:
claude --permission-mode plan.
Когда план готов, Claude спрашивает, что дальше. Варианты: одобрить и дать агенту править файлы без запросов, одобрить с ручным подтверждением каждой правки (Yes, manually approve edits) или No, keep planning — остаться в plan mode и сказать, что изменить. Ctrl+G открывает план в вашем текстовом редакторе, чтобы поправить его руками. Одобрение выводит сессию из plan mode, и Claude начинает писать код.
Теперь главное. Запустите ту же задачу про рейтинги в plan mode — агент исследует код и вернёт план: таблица в базе, имена функций сервиса, компоненты, изменения маршрутов, стратегия тестов. Несколько решений вынесено отдельно: одна оценка на пользователя, среднее считается при чтении, без оценок показываем «пока нет оценок».
Решения разумные. Проблема в другом: агент снова торопится к результату, только теперь результат — план. Он расписан до уровня реализации, все решения уже приняты и записаны, а разговора, в котором вы с агентом пришли к одной картине фичи, не было. Вам остаётся проверить чужой документ, а не договориться.
Фредерик Брукс в «The Design of Design» называет такую общую картину design concept: представление о том, что строим, которое живёт в голове у каждого участника и становится чётче по ходу разговора. Это не документ. Plan mode его не создаёт: он сразу выдаёт документ.
Сама документация тоже не считает план обязательным: для задачи, где diff можно описать одним предложением, план не нужен. Он полезен, когда вы не уверены в подходе, когда изменение задевает много файлов или когда вы плохо знаете этот код.
Практика
Откройте Claude Code в репозитории Cadence и включите plan mode через Shift+Tab. Дайте короткую задачу:
Students should be able to rate a course from 1 to 5 stars.
Show the average rating on the course list and on the course page.
Когда агент покажет план, не одобряйте его. Пройдите по плану и выпишите каждое решение, которое агент принял за вас: кто может ставить оценку, что видно без оценок, можно ли изменить свою оценку. Посчитайте, сколько из них он вынес на обсуждение, а сколько просто записал. Выйдите из plan mode без одобрения: нажмите Shift+Tab ещё раз.
Подводные камни
- Подробный план выглядит как согласованный. Чем конкретнее план, тем легче его одобрить не читая. Но конкретность значит только, что решения уже приняты, — не то, что приняты вашими.
- Одобрение сразу включает правки. Вариант с auto mode или auto-accept edits после одобрения даёт агенту писать файлы без запросов. Если хотите видеть каждую правку, выбирайте Yes, manually approve edits.
- План на мелочь — лишние расходы. Переименовать переменную или добавить строку в лог проще прямой просьбой.
Вывод: plan mode ставит паузу между исследованием и кодом, но в этой паузе агент снова сам принимает решения. Договориться с ним о том, что строим, нужно отдельно, — об этом следующий Bite.
Проверь себя
Вы дали задачу в plan mode. Агент исследовал код и вернул план: таблица, функции сервиса, компоненты, стратегия тестов. Что с этим не так?
Ctrl+G
. Проблема в том, что все решения приняты до того, как у вас с агентом появилось общее понимание фичи.
Вы хотите, чтобы Claude только исследовал проект и предлагал план, а код не трогал. Что из этого сделает именно это?
claude --permission-mode acceptEdits
Shift+Tab
, пока не появится
⏸ plan mode on
/compact
перед задачей
Shift+Tab
перебирает permission modes, и в
plan
правки заблокированы до одобрения плана.
acceptEdits
наоборот разрешает правки без запросов, просьба в промпте ничего не блокирует, а
/compact
сжимает контекст и с режимами не связан.
Задача: переименовать функцию getRating в getAverageRating в одном файле. Нужен ли plan mode?
Вы с коллегой обсудили фичу и оба представляете её одинаково, хотя ничего не записали. Что у вас есть?
Источники
- Anthropic, Choose a permission mode
- Anthropic, Best practices for Claude Code
- Anthropic, Commands
- Anthropic, Interactive mode
- По мотивам AI Coding Crash Course, AI Hero: «Build a Feature», «Why Plan Mode Sucks»
Текст подготовлен с помощью LLM и может содержать неточности.