JavaRush /Курси /Claude Code SELF /Чому агент тупіє наприкінці дня

Чому агент тупіє наприкінці дня

Claude Code SELF
Рівень 16 , Лекція 2
Відкрита

1. Опис арсеналу за функцією, а не за новизною

Перед останнім завданням частини Льоха зупиняє Тьому просто біля входу.

— Стривай, не кидайся, — пише він. — Сьогодні останнє, але важливе завдання, тож перед роботою розкладемо все, що ти назбирав за цей місяць. Ти ж місяць хапав інструмент за інструментом: скіли, агентів, Git, тести, diff, плани, кермо довіри. Усе звалено в одну купу. Перш ніж іти в бій, корисно разок витрусити скриню й подивитися, чим ти взагалі воюєш.

Тьома вже відкриває рота, щоб похвалитися кількістю — дивіться, скільки я всього вмію, — але Льоха обриває:

— Тільки не рахуй трофеї. Розкладаємо не за новизною — за тим, навіщо це. Три кошики: що лагодить, що перевіряє, що підстраховує.

Він ненароком кидає назву схеми — TOOLBOX_MAP, опис арсеналу за функцією — і далі вже не розжовує. Тьома сідає розкладати сам, по одній штуці за раз.

— Браузер куди? — уточнює він спірний випадок. — А, у «перевіряє», коли він доводить, що гра прохідна. Відкат — це лагодить чи підстраховує?

— Підстраховує, — киває Льоха.

Тьома розкладає — і що далі, то більше його самого це захоплює. Він же думав, що набереться всього зо два пункти. А воно все сиплеться й сиплеться: скіли, плагіни, агенти, міст до даних, хуки, голос, Git із його командами, тести, логи, diff, браузер, плани, кермо, гігієна вікна… Рука не встигає. Наприкінці на екрані — три забиті стовпці:

⚙️ TOOLBOX_MAP — арсенал за Частину I

🔧 Лагодить · рухає завдання 🔍 Перевіряє · дає доказ 🛡️ Підстраховує · стелить соломку
агент у CLI (не чат) тест: червоний / зелений git init · add · commit
скіл: поставити готовий чесний тест (червоний → зелений) git checkout · log · diff
скіли: комбінувати /diff — переглядати правки гілка під завдання
плагін: набір фіч одразу тріаж: зайве / небезпечне / ± /rewind — відмотати сесію
субагент-помічник логи й стек-трейс як доказ режим планування (defaultMode)
MCP-міст до даних браузер: прохід за сценарієм керування довірою (manual/accept)
хук: подія → дія скріншот + vision-модель TASK_SPEC — постанова завдання
голос до агента (s2t) success marker (прапорець «пройдено») scope — заборонений блок
@точкова подача файла EVIDENCE_LOG — пакет доказів /context — подивитися вікно
goal-lite — ціль за рецептом DELIVERY_REPORT — зведення /compact · /clear
середовище: IDE + плагіни «готово = доведено» CLAUDE.md + памʼять проєкту

Тьома відкидається на спинку й мовчки дивиться на ці три стовпці. Він не рахував на ходу — а тепер бачить усе разом, і це якось… багато. Він же памʼятає себе місяць тому: один голий термінал і «та що там, ШІ сам усе зробить».

— От халепа, — виривається у нього. — Це я все вмію? Місяць тому я взагалі нічого не вмів.

— Умієш, — коротко підтверджує Льоха. — І зауваж: тут ще немає всілякої теорії, яку ти попутно нахапав. Як улаштований веб, що таке API, тести, читання чужого коду. Самі лише інструменти.

А під інструментами — другий шар, який Тьома теж пройшов, але який у кошики не лягає: не «чим я роблю», а «що я тепер розумію про саму розробку».

📚 Що я тепер розумію про розробку (DEV)

Тема Що зрозумів
як улаштований веб HTML / CSS / JS — каркас, вигляд, поведінка
як живе сайт сервер · IP · домен · деплой («працює в мене» ≠ «працює в усіх»)
звідки беруться дані API — віконце сервісу; JSON-відповідь; MCP — міст до нього
подієва модель подія → дія (хук як датчик руху)
що таке перевірка прохід за сценарієм · тест червоний → зелений · скріншот як доказ
що таке світ Git main · гілка · коміт · diff — історія, а не склад копій
симптом ≠ причина лог/стек-трейс веде до причини, а не лише до місця вибуху
читання чужого коду обʼєкт читання = зміна (diff); scope як контракт
види завдань фіча / багфікс / рефакторинг / розвідка — у кожного свій підхід
вікно уваги агент бачить не весь репозиторій, а лише вікно; контекст виносимо назовні

І коли все склалося, Тьома дивиться на обидві карти й на мить губиться — але вже інакше. Тієї ночі на першій карті в нього була заповнена тільки ліва колонка. «Лагодить». А «перевіряє» і «підстраховує» — порожні. Нічого толком не перевіряв, соломки ніде не підстелив.

— Слухай, — пише він Льосі. — Так ось чому все так легко завалилося. У мене ж був один суцільний «лагодить». Гнав і гнав, а противаги — нуль. Будь-який збій валив усе насмерть, ловити було нічим.

— От тепер бачиш свій арсенал як систему, — відповідає Льоха. — Не як купу різнокольорової магії, а як набір для трьох різних завдань. Це поки груба карта, стартова. Повну науку про те, що й коли діставати, залишимо на потім. Але головне ти вхопив.

2. Забите вікно — агент тупіє

Тьома сідає за фікс — і зависає надовго. Баг із нарахуванням нагород виявився розмазаний по кількох місцях: спершу разом з агентом лізе в reward-flow.js, потім зʼясовується, що правила лежать у rules.md, потім спливає, що на нарахування впливає ще й таблиця лідерів — відкривають leaderboard.js. Файл за файлом, кожен агент прочитав цілком. Попутно Тьома проганяє варіанти: «а як так?» — не те, відкотили; «а може, ось так?» — теж повз, повернули. Десяток підходів, три відкриті файли, гора відкинутого — і все це висить у розмові.

І наприкінці години він помічає дивне. Агент, який зранку був бадьорий і точний, починає тупити. Пропонує варіант, який вони пів години тому разом відкинули. Плутає rules.md з leaderboard.js. На просте запитання відповідає так, ніби вперше бачить завдання.

— Слухай, — пише Тьома Льосі, — а чого це він поглупішав? Модель, чи що, зламалася? Чи в мене якийсь ліміт скінчився?

— Ні те, ні інше, — відповідає Льоха. — У нього забилося вікно уваги.

— Той самий, що й на рівні про великий портал?

— Саме він. Памʼятаєш, ми говорили: агент бачить не весь проєкт магічно, а тільки те, що влізло у вікно — вашу історію розмови, подані файли, правила. Вікно не гумове.

— І що?

— А те, що ви за цю годину натягали у вікно три файли цілком плюс десяток відхилених спроб. Усе це там висить упереміш — і потрібне, і мотлох. Агент тепер на кожне твоє запитання перечитує всю цю купу. Не «він поглупішав» — він захлинувся. Симптоми саме такі: тягне старе, плутає файли, сперечається сам із собою.

— І що, нічого не зробити?

— Зробити. На це є окрема навичка — гігієна уваги, саме нею сьогодні й займемося. Річ контрінтуїтивна: інколи, щоб агент «порозумнішав», треба не додати йому контексту, а викинути зайве. Давай спершу глянемо, що в нього там у вікні.

3. Зазирнути у вікно: /context

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

/context        # показати, що зараз лежить у вікні уваги

Тьома набирає — і в термінал вивалюється довгий опис. Не «модель втомилася», а буквальний список того, чим набите вікно:

Вікно контексту: 78% використано (156k / 200k токенів)

  Системний промпт ............ 3k
  Правила проєкту (CLAUDE.md) . 4k
  src/reward-flow.js .......... 12k   ← потрібний
  src/rules.md ................ 6k    ← потрібний
  src/leaderboard.js .......... 18k
  Історія діалогу ............. 108k  ← 47 повідомлень
  ...відхилені варіанти, старі правки, вже прочитані файли

Тьома дивиться на це й половини не розуміє — цифри, відсотки. Що тут багато, а що мало, йому ще не збагнути.

— Ну, набито й набито, — пише він. — І що мені це має сказати?

— А ти пройдися зі мною по рядках, — відповідає Льоха. — Ось reward-flow.js і rules.md — це, по суті, те, що й треба було подати. А тепер дивись нижче. leaderboard.js — вісімнадцять тисяч, цілий файл, який ти відкрив на хвилину й давно закрив. Він тут досі висить. Далі — сто вісім тисяч на історію: сорок сім повідомлень, і добра половина — це твої «а як так?» і наші відкати, які вже неактуальні. Бачиш? Із ста пʼятдесяти шести тисяч по суті — якщо пощастить, чверть. Решта — мотлох, який агент волоче за собою на кожне твоє запитання.

Тьома водить оком по списку — і до нього доходить.

— Зачекай. Тобто він не дурний. Він просто завалений. — Він усміхається. — Як я сам наприкінці дня, коли в браузері сто вкладок відкрито і я в них тону.

— Один в один, — відповідає Льоха. — І тепер ти не «віриш мені на слово», а сам бачиш купу. Далі — як її розгрібати.

4. Два важелі: /compact і /clear

— Засмітилося — чистимо, — продовжує Льоха. — І тут є два різні інструменти для двох різних ситуацій, не плутай.

Перший — стиснути:

/compact                       # ущільнити історію, залишивши суть і викинувши шум
/compact focus on reward-flow  # стиснути, але зберегти важливе про нарахування нагород

/compact бере вашу роздуту розмову й резюмує, — Льоха розкладає по словах. — Залишає суть, викидає шум, а сесію продовжує — ви далі працюєте з тією самою справою, просто без мотлоху. І зауваж другий варіант: можна підказати, що саме зберегти. focus on reward-flow — «стисни, але нічого важливого про нарахування нагород не загуби». Це коли суть розмови ще потрібна, але вона розпухла.

Тьома ганяє /compact і знову відкриває /context — подивитися, що стало:

Вікно контексту: 22% використано (44k / 200k токенів)

  Системний промпт ............ 3k
  Правила проєкту (CLAUDE.md) . 4k
  src/reward-flow.js .......... 12k
  src/rules.md ................ 6k
  Історія діалогу (стиснута) .. 15k   ← було 108k

— О, — пише Тьома. — Було сімдесят вісім, стало двадцять два. І цей дурнуватий leaderboard.js зник, і переписка стислися. А справа ж уся на місці: нарахування, правила.

— Ось. Розмова та сама, тільки без зайвого. Агент знову бачить потрібне й перестає плутатися.

Другий важіль — скинути, і він тобі теж уже знайомий:

/clear          # чисте вікно, нова сесія (стара збережеться, до неї можна повернутися)

/clear не стискає — він обнуляє вікно й починає нову сесію з чистого аркуша. Даси /clear — і /context покаже майже порожнє вікно: тільки системну частину та правила проєкту, без файлів і без історії. Усе, що було, піде. Стара сесія збережеться — повернешся до неї за потреби.

— А в чому тоді різниця, коли який? — уточнює Тьома.

— Просте правило, — відповідає Льоха. — /compact продовжує ту саму розмову, тільки стислу. /clear починає нову з нуля. Історія ще потрібна, але роздулася — тисни /compact. Завдання закрите, попереду зовсім інше — /clear, щоб мотлох попереднього не тягнувся в наступне. Одне — ущільнити, друге — обнулити.

5. Точкова подача файлів через @файл

— І є ще профілактика, щоб вікно взагалі не засмічувалося так швидко, — додає Льоха. — Дивись, із чого ти сьогодні потонув. Ти ж як зайшов у фікс? За звичкою новачка: «на, агент, прочитай увесь проєкт і розберися». Звучить солідно — нехай, мовляв, вникне в усе. А на ділі ти цією однією фразою затягнув у вікно десятки файлів, з яких до нарахування належать два. Решта — верстка, лідерборд, бонус-гра, чужа partner-зона — агенту зараз не потрібні, але вони вже у вікні й уже заважають. Ти сам, своїми руками, забив йому вікно мотлохом ще до першого запитання.

— А як треба?

— Подавати точково. Не «прочитай усе», а «ось рівно ці файли». І для цього є зручна штука. Починаєш друкувати @ — і термінал сам показує список файлів проєкту, обираєш потрібний, не набираючи шлях цілком:

Виправ @src/reward-flow.js, спираючись на @src/rules.md.

— Собачка @ — це не просто «згадав імʼя», — розбирає Льоха. — Друкуєш @, спливає список, тицяєш у потрібний файл — він підставляється й точно потрапляє у вікно, без помилок у шляху. Даєш два-три потрібних, і все. Не «оглянь увесь проєкт», а «ось зона роботи, ось правила». Дешевше, швидше, менше шуму — агент тримає в голові тільки те, що стосується справи, а не весь репозиторій.

Тьома пробує інакше: скидає вікно й подає через @ тільки reward-flow.js і rules.md. І одразу відчуває різницю — агент відповідає зібрано, точно, без блукань чужими файлами.

— О, він одразу пішов по суті, — пише Тьома. — Слухай, чим менше я йому даю, тим розумніше він відповідає. Жадібність — і та вигідна.

6. Подвійна ціна набитого вікна та контрінтуїтивність дня

— А навіщо взагалі так морочитися? — Тьома хоче до кінця зрозуміти. — Ну, висить зайве у вікні й висить.

— Тому що набите вікно бʼє по тобі одразу з двох боків, — Льоха пояснює на пальцях. — Перше — дорого. Кожен запит оплачує все вікно. Чим воно товстіше, тим дорожчий кожен твій хід. Друге — шумно. Чим більше у вікні всього, тим гірше агент фокусується, тим частіше плутається. Тобто брудне вікно робить роботу і дорожчою, і тупішою одночасно.

— А чисте — навпаки, — Тьома ловить думку сам. — Виходить, гігієна вікна — це не жадібність, не «економлю на запитах». Це спосіб зробити його і дешевшим, і розумнішим за один захід.

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

— І це не разова кнопка, — додає Тьома, уже сам. — Це чуття. Я тепер на ходу відчуваю: тут подати точково, тут стиснути, тут почати з чистого аркуша. Вбудована звичка, як мити руки.

— Нову навичку опанував, — киває Льоха. — Залишилося закріпити головну звичку всього навчання — саме з неї все й починалося.

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