JavaRush /Курсы /Claude Code SELF /План и режимы на практике

План и режимы на практике

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

1. Не пускаем агента в код без плана

Дело доходит до настоящей задачи портала. Месяц назад тут было бы так: кинул Сане строчку хотелки, отвернулся к чаю, ждёшь чуда. Чудо обычно случалось, Саня угадывал по причёсанной Лёхой постановке — и между «захотел» и «готово» для Тёмы не было никакой работы, только ожидание.

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

На руках у него уже всё, что собрал за день. Launch-портал лежит локально в папке проекта; рядом с витриной — legacy/old.js со старым промо-кодом прошлой кампании, замороженная зона, которую трогать нельзя. И собранный своими руками TASK_SPEC — с честным scope, с честными non-goals, где замороженная и прочие protected-зоны прямо помечены «не трогать».

Шаг первый — диктует задачу. Спокойно, как взрослый. Не «сделай красиво», а постановку вслух:

— Сань, на витрину портала надо добавить новую промо-зону — баннер с акцией и кнопку. Замороженную зону legacy/old.js не трогаем вообще, механику начисления очков не меняем. Готово, когда промо-зона на месте, старый промо-код цел, очки считаются как раньше.

Шаг второй — ставит режим планирования. Тем самым Shift+Tab, что утром казался непонятной кнопкой, а сейчас — рабочий жест:

Shift+Tab        # жать, пока внизу не встанет планирование

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

Шаг третий — читает замысел. Агент выкладывает план:

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

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

Тёма читает его не как пассажир красивую презентацию — а как водитель маршрут перед выездом. Каждую строчку сверяет со своим TASK_SPEC: не уехал ли замысел за заборы.

2. Поймал на стадии замысла

Тёма читает замысел построчно. Первая строка — витрина, промо-зона: так и просил. Вторая — страница акции: нужна, кнопка должна куда-то вести. Третья — стили: норм. А на четвёртой палец на тачпаде застывает.

Четвёртая строка — legacy/old.js, «заодно причешу старый промо-код». Замороженная зона. Та самая, что он утром своими руками вынес в non-goals. Агент про запрет не знал — увидел там старый промо-код прошлой кампании, решил, что его логично причесать заодно, и честно вписал в план.

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

И замирает на полпути.

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

— Ага, голубчик, — бормочет Тёма экрану. — В замороженную собрался? Нет уж.

Он не бежит ничего спасать. Он просто правит план — словами, пока тот ещё буква, а не действие:

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

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

Он удержал границу сам. Поймал лишнее на бумаге, не дал инструменту разнести проект вширь. Вчера разгребал поломку — сегодня не дал ей случиться. Тихо, буднично, но это сделал он, а не везение.

3. Ровно столько, сколько просили

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

Проверку дня Тёма делает руками — по своему же плану проверки. Не «гляну глазами», а по пунктам, что сам выписал утром.

Первый пункт — открыть портал в браузере. Открывает: на витрине баннер акции, под ним кнопка. Жмёт кнопку — ведёт на страницу акции. Есть, работает.

Второй — старый промо-код цел. Тёма спрашивает у самого агента, что тот вообще трогал:

Покажи списком, какие файлы ты изменил по этой задаче.

Агент возвращает список: pages/campaign/index.html, pages/campaign/promo.html, assets/css/portal.css. И всё. legacy/ в списке нет. Тёма всё равно открывает замороженную зону сам — старый промо-код на месте, никто его не причёсывал. Не тронул.

Третий — очки. Проходит путь пользователя: заявка, начисление. Считается как раньше.

Все три галочки сходятся.

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

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

4. Чего ещё не хватает для страховки

Вечером телефон звякает — Артём2036, и снова без тумана, без мема:

Артём2036
в сети

— Сегодня ты впервые по-настоящему сел за руль. Не порулил случайно, не починил после аварии — провёл задачу с руками на руле от начала до конца.

Тёма читает и невольно улыбается. Ни одной подколки. Первый раз за долгое время с того конца прилетело что-то вроде «молодец» — и, чёрт возьми, заслуженно. Сам удержал, от и до.
Он не успевает отложить телефон — в той же ниточке падает ещё пара строк. И улыбка медленно сползает:

— Ты удержал агента до правок. А если однажды — несмотря на план, на non-goals, на руль — всё равно понадобится вернуться по-взрослому? Откатиться не на словах, а по-настоящему, как те, кто работает всерьёз?

— Да блин, — выдыхает Тёма. — Ну хоть один вечер без новой загадки можно?

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

Он закрывает крышку. За окном темно, портал стоит целый, замороженная зона нетронута, промо-зона на месте — ровно то, что заказывали, и ни миллиметром больше.

1
Задача
Claude code, 12 уровень, 4 лекция
Недоступна
Запуск агента на small example и заполнение evaluation checklist
Запуск агента на small example и заполнение evaluation checklist
1
Задача
Claude code, 12 уровень, 4 лекция
Недоступна
Маленький canned example для `tester`
Маленький canned example для `tester`
1
Опрос
Права, изоляция и output contract агентов, 12 уровень, 4 лекция
Недоступен
Права, изоляция и output contract агентов
Права, изоляция и output contract агентов
Комментарии
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ