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. Глянули й поїхали далі.
Тьома пробує — і справді, після всіх цих тижнів команди дістаються самі, без напруги. Кермо вже в руках. Залишилося проїхати на ньому реальну задачу.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ