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. Глянули й поїхали далі.

Тьома пробує — і справді, після всіх цих тижнів команди дістаються самі, без напруги. Кермо вже в руках. Залишилося проїхати на ньому реальну задачу.

Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ