1. План — не «когда сложно», а всегда
Открыв задачу, Тёма по привычке прикидывает вслух:
— Задача-то простая вроде. Тут можно и без плана, сразу править. План я обычно на сложное включаю, когда чую, что запутаюсь.
— Вот, поймал тебя, — отвечает Лёха. — «Когда вспомню», «когда сложное». А помнишь режим плана — тот самый, с уровня про руль доверия?
— Ну да. Когда агент сперва выкладывает замысел — что тронет, какими шагами, — и ждёт, пока я одобрю. А сам ничего не правит, пока не скажу.
— Он самый. Так вот вся штука в том, когда ты его берёшь. Ты его дёргаешь по случаю, на страшное. А брать надо всегда.
— Прям на всё? Даже на ерунду?
— На любую нетривиальную задачу — до первой правки. Не потому что авария напугала, а потому что так работает мастер. Сегодня и превратим план из «иногда вспоминаю» в рефлекс.
Тёма хмыкает — а ведь и правда, режим-то он знает, но на простом до сих пор бросается сразу, без плана. Старая жульская привычка срезать там, где «и так понятно».
— А смысл-то? — он всё ещё немного упирается. — На пустяке план — это лишний шаг. Время трачу, а толку ноль, и так бы починил.
— Ноль — пока пустяк правда пустяк, — отвечает Лёха. — А ты вспомни, сколько раз «простая правка» оказывалась не такой простой и тянула за собой соседнее. Половина твоих прошлых аварий начиналась со слов «да тут на минуту». План на пустяке стоит тебе тридцать секунд. Пропущенный план на «пустяке», который оказался не пустяком, стоил тебе целой ночи. Вот и вся математика.
Тёма не находит, что возразить. Потому что та ночь как раз и началась с «да тут на минуту».
2. Зашить план по умолчанию: defaultMode: plan
— И чтоб не полагаться на «вспомню», можно зашить план прямо в проект, — Лёха показывает настройку. — Кладёшь одну строчку в файл настроек проекта, .claude/settings.json, — и каждая сессия стартует в режиме плана сама.
// .claude/settings.json
{
"permissions": { "defaultMode": "plan" }
}
— Это тот же файл, где у тебя лежат правила проекта и права, — поясняет Лёха по словам, не давая Тёме утонуть. — defaultMode — «режим по умолчанию», с которого всё начинается. Ставишь plan — и агент с порога не лезет править, а сперва выкладывает замысел. Ты ничего не нажимал, а он уже в плане. Механика та самая, что ты знаешь с «руля в руки», ничего нового тут нет. Новое — что теперь это включено всегда, само.
Тёма даёт агенту финальную задачу — как обычно, словами:
Почини начисление в reward-flow.
Обычно после такой фразы агент кинулся бы сразу править файл. Но сессия из-за defaultMode: plan стартовала в режиме плана — поэтому вместо правки в терминал сперва падает замысел:
План:
1. Прочитать src/reward-flow.js и src/rules.md — понять формулу начисления.
2. Найти место, где очки считаются неверно.
3. Исправить формулу согласно rules.md.
4. Прогнать существующие тесты начисления.
Приступать к изменениям?
Тёма даже кнопку не нажимал, чтоб «включить план», — окно само остановилось до первой правки. Вот оно, зашитое defaultMode: plan в деле: не «агент сам придумал остановиться», а настройка заставила его сперва показать замысел и спросить.
3. План правишь, а не киваешь
Тёма читает замысел — и не штампует его. Старое правило держится: план не для того, чтоб кивнуть, а для того, чтоб поправить. И он видит, чего плану не хватает: агент собрался просто «прогнать существующие тесты», а Тёма после вчерашнего знает цену слепому тесту. Дописывает границы:
План ок, но добавь тест на честную проверку (падает на сломанном) и не трогай /legacy.
— Вот это и есть владелец, а не пассажир, — отмечает Лёха. — Ты не «согласен-согласен», ты ставишь границы. Тест на честную проверку — чтоб потом доказать. /legacy не трогать — чтоб не разнести соседнее. Агент подстраивает замысел под твои рамки ещё до первой правки. Дешевле спорить с планом на бумаге, чем разгребать сделанное.
Тёма ловит, что делает это уже на автомате. Не вспоминает «ага, надо план поправить» — просто читает и сразу видит, где замысел жидковат. Рефлекс.
4. Чистое окно перед новой задачей
Core fix Тёма закрывает спокойно. И вот тут, прежде чем вообще думать о живой добавке, он сам — уже без Лёхи — командует чистку:
/clear # core fix закрыт; окно набело перед add-on
— А чего ты сейчас сделал, я даже не успел сказать, — пишет Лёха.
— Так очевидно же, — отвечает Тёма. — Я фикс дозакрыл, окно у агента после часа возни забито под завязку. Если я сейчас на этом хламе начну add-on лепить, он опять начнёт тащить старое и путаться. Чищу набело — и захожу в добавку на свежую голову.
— А ведь раньше бы и не вспомнил, — пишет Лёха.
— Да я и сейчас не вспоминал. Рука сама. — Тёма пожимает плечами. Чистка набело легла рядом с планом в одну привычку: любая нетривиальная работа — сперва план, по ходу держи окно чистым, не вали лишнего. Не процедура, через которую себя заставляешь, а просто способ не захлебнуться самому и не утопить агента в шуме.
5. Постановка стала привычкой
«Без ТЗ результат ХЗ» — с этого всё начиналось. Тогда задачу за Тёму формулировал кто-то другой, а он хотел «по-быстрому, постановка потом». Потом авария научила больно: без постановки и плана агент тебя подведёт, и виноват будешь сам.
А сейчас он пишет постановку и начинает с плана потому что умеет и хочет, а не потому что припекло. Никто не стоит над душой. В этом вся разница между тем, кем он был, и кем стал.
— Знаешь, что смешно, — пишет Тёма Лёхе. — Раньше я был «дай по-быстрому, ТЗ как-нибудь потом». А теперь «сначала ставлю задачу и план» — это просто мой нормальный способ работать. Я даже не думаю об этом как о правиле. Оно само.
— Вот и петля замкнулась, — отвечает Лёха. — Постановка перестала быть требованием снаружи и стала твоим рефлексом. ТЗ пишет мастер — не потому что заставили, а потому что иначе уже не работает.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ