JavaRush /Курсы /Claude Code SELF /Руль доверия: план и режимы

Руль доверия: план и режимы

Claude Code SELF
12 уровень , 3 лекция
Открыта

1. Как остановить агента ДО того, как он натворит

Тёма приходит к Лёхе с готовым TASK_SPEC и с самым больным вопросом, который у него засел после ночи:

— Слушай, ну ладно, задачу я написал. Но вот вчера он же снёс файлы — и я узнал об этом, когда уже было поздно. Как его остановить до того, как он натворит? Чтоб не после, а до.

— А вот для этого есть режим планирования, — Лёха открывает терминал. — Главная штука сегодняшнего дня. Смотри, как обычно устроен разговор с агентом: ты дал задачу — он сразу пошёл править файлы. Раз, и уже поменял. Ты узнаёшь, что он сделал, только когда он это уже сделал. Вчера ты на этом и погорел.

— Ну да. Он снёс, а я потом увидел.

— А в режиме планирования порядок другой. Ты даёшь задачу — и агент не притрагивается к коду. Вместо правок он сначала выкладывает замысел: какие файлы собирается тронуть, в каком порядке, что именно сделает в каждом. И встаёт. Ждёт. Ни одной правки, пока ты не скажешь «давай».

— То есть он сначала рассказывает, что собирается делать, — и только ждёт?

— Именно. И вот что тут важно понять до конца, — Лёха говорит медленно — Окно, в которое ты можешь его остановить, теперь открыто до первой правки, а не после. Вчера ты увидел беду, когда файлы уже снесены, — чинить пришлось руины. А тут ты видишь намерение снести — когда ещё ничего не снесено. Между «он собирается» и «он сделал» появляется пауза, и эта пауза — твоя. В ней ты и рулишь.

— Хитро. Он как бы вслух проговаривает план, а я слушаю и могу влезть.

— Ровно. И пока он в этом режиме — что бы ты ни увидел в его замысле, на диске не изменилось ничего. План можно спокойно читать, спорить с ним, править — файлы в это время целы и невредимы.

2. Как включить режим планирования

— Ладно, а как его включить-то? — Тёма уже тянется к клавиатуре.

— Способов три, под разные моменты. Давай по одному.

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

Shift+Tab        # переключает режим агента по кругу

— Одно нажатие перещёлкивает агента в следующий режим, как передачи в машине, — поясняет Лёха. — Режимов несколько, Shift+Tab гоняет по ним по кругу: обычный → правит-сам → планирование → снова обычный. Про все режимы скажу через минуту, пока тебе нужен один — жми, пока внизу не встанет планирование.

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

/plan            # включить режим планирования разово

— Одна команда — и агент в планировании, без клавишных танцев. Удобно, когда точно знаешь, что вот эту задачу хочешь провести через план.

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

claude --permission-mode plan

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

— А как понять, что я реально в нём, а не промахнулся? — резонно спрашивает Тёма.

— По статус-бару внизу. Активный режим всегда подписан там. Встало планирование — видишь соответствующую пометку. Не гадаешь, а смотришь: агент сейчас только планирует, код не трогает.

Тут Тёма цепляется за главное:

— Слушай, а он точно не тронет? Ну, «обещал не трогать», а сам возьмёт и... как ночью.

— Хороший вопрос. Не тронет, и не потому что честный, — Лёха усмехается. — В режиме планирования у агента сам инструмент правки выключен. Ему физически нечем изменить файл: он может читать код, разбираться, строить замысел — но рука, которой он правит, в этом режиме связана. Не «агент обещал подождать», а «агент не может, даже если захочет». Вот почему тут спокойно: дело не в его доброй воле.

Теперь даёшь задачу как обычно, словами:

Добавь на витрину портала новую промо-зону с баннером акции.

И вместо готовой правки получаешь замысел — вот как он выглядит:

План:
  1. pages/campaign/index.html — добавлю блок промо-зоны (баннер + кнопка)
  2. pages/campaign/promo.html — новая страница акции (куда ведёт кнопка)
  3. assets/css/portal.css      — стили баннера
  4. legacy/old.js              — заодно подчищу старый промо-код

Начинать? [показать полностью / изменить план / одобрить]

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

3. План правят, а не кивают

— А теперь привычка, которую нельзя упустить, — Лёха становится жёстче. — План — это не «прочитал и кивнул ОК». План правят.

Тёма не очень верит:

— Ну а чего его править? Он же мне сам всё расписал, я посмотрел — вроде нормально, погнали.

— А давай проверим, — Лёха не спорит, а показывает. — Ты план-то по строчкам прочитал? Пробегись ещё раз. Что он собрался трогать?

Тёма читает замысел построчно. Первая строка — витрина, добавить промо-зону: так и просил. Вторая — стили: логично. А на третьей спотыкается: legacy/old.js — «заодно подчищу старый промо-код». Замороженная зона. Та самая, которую он час назад своими руками вписал в NON-GOALS — «не трогать». Агент про запрет не знал, увидел там старый промо-код прошлой кампании, решил, что его логично причесать заодно, и честно вставил в план.

— Стоп, — Тёма аж выпрямляется. — Он лезет в замороженную зону! Я же её в non-goals писал, туда нельзя!

— Вот, — Лёха спокоен. — А теперь замечаешь, что ты не паникуешь? Ничего ещё не произошло. legacy/old.js цел — агент только собрался его тронуть, но в этом режиме тронуть не может. Так что ты спокойно правишь план словами, пока он ещё план:

План ок, но legacy/old.js не трогай — это замороженная зона,
она в non-goals. И добавь проверку, что промо-зона не задевает
соседний блок витрины.

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

— Чувствуешь разницу? — Лёха почти доволен. — Поправить замысел, пока он замысел, — одна фраза. Чинить готовую поломку — вчерашняя ночь.

4. Три положения руля доверия

— А теперь, — Лёха разворачивает картину шире, — про сам руль. Помнишь, Shift+Tab гонял по кругу несколько режимов? Планирование — только один из них. Всего их три, и это не случайный набор — это три положения руля доверия: сколько свободы ты даёшь агенту. Разберём по одному.

manual — агент спрашивает перед каждым действием.

— Это положение по умолчанию: всё вручную, отсюда и имя. Агент делает шаг — правку файла, запуск команды — и останавливается спросить: «сделать вот это? да / нет». Ты сидишь и подтверждаешь каждый ход руками.

manual        # перед каждым действием: «сделать? да / нет»
              # в командах он же default: --permission-mode default

— Занудно же, — морщится Тёма.

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

plan — агент только планирует, править не может.

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

plan          # только замысел, ни одной правки

— Это положение — «сначала покажи, что задумал». Для входа в важный или чужой код, когда сперва надо увидеть намерение, а уже потом пускать к файлам.

acceptEdits — агент правит, не спрашивая на каждую правку.

— А это в другую сторону. Тут агент не дёргает тебя подтверждением на каждую правку файла — правит сам и идёт дальше.

acceptEdits   # правит файлы без вопроса «сделать?» на каждый

— О, вот это по мне! Полная воля, красота, — оживляется Тёма.

— Стоп, не совсем, — осаживает Лёха. — Это не «делай что хочешь». Это узкая штука: агент перестаёт спрашивать именно про правки файлов — не переспрашивает «менять этот файл? да/нет» на каждый чих. Всё остальное настороже как обычно. Это не «отпустил вожжи совсем», а «в этой понятной рутине не тормози меня подтверждением каждой строчки». Понимаешь разницу? Не полный автопилот — просто снял один назойливый вопрос.

— А, то есть он не пойдёт вразнос, просто не спрашивает по мелочи.

— Вот именно. Для монотонной понятной работы, где стоять над каждой правкой — только терять время.

— И одна честная мелочь про имена, — добавляет Лёха. — Внизу в статус-баре режимы подписаны по-человечески: «спрашивать перед правками», «режим планирования», «править без подтверждения». Но само имя acceptEdits в настройке и во флаге пишется слитно, в одно слово. Чтоб ты потом не искал, почему «accept edits» через пробел нигде не находится.

Тёма впервые видит доверие не как «верю / не верю», а как рычаг:

— То есть «доверие» — это не про настроение? Не «сегодня я ему верю, завтра нет»?

— Вот именно не про настроение. Это настраиваемый регулятор на три положения. Чем выше цена ошибки — тем сильнее держишь руль к контролю (manual, plan). Где безопасная рутина — отпускаешь к скорости (acceptEdits). Это осознанный размен: скорость на контроль. А не кнопка, которую один раз нажал и забыл навсегда.

— И смотри, как это ляжет на наш утренний разговор про жанры, — продолжает Лёха. — Помнишь четыре жанра? Так вот, жанр прямо подсказывает положение руля. Разведка в незнакомом коде — крути к plan: смотрю, ничего не ломаю. Монотонная понятная рутина — можно и acceptEdits, не дёргай на каждом шаге. Чужой или важный код — manual с проверкой каждого хода. Как именно выбирать руль под каждую ситуацию — это ты ещё нащупаешь на практике, дальше по курсу разложим по полочкам. Пока держи связь в голове: какой жанр — такой и руль.

— Слушай, а кнопки эти не поменяются? — на всякий случай уточняет Тёма. — А то выучу, а оно переедет.

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

5. Команды режимов под рукой

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

/context    # что сейчас видит агент — его окно внимания
/model      # на какой модели сейчас едем
/memory     # что агент про проект запомнил

— Это уже не «новые команды», которые надо учить, — говорит он. — Это нормальные рабочие жесты. Как горячие клавиши в редакторе: ты их не вспоминаешь, ты их жмёшь. Захотел понять, что у агента в голове — /context. Сомневаешься, на сильной модели сидишь или на слабой, — /model. Глянул и поехал дальше.

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

1
Задача
Claude code, 12 уровень, 3 лекция
Недоступна
Явный output contract для reviewer
Явный output contract для reviewer
1
Задача
Claude code, 12 уровень, 3 лекция
Недоступна
Структурированный review через read-only субагента reviewer
Структурированный review через read-only субагента reviewer
Комментарии
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ