JavaRush /Курсы /Claude Code SELF /Почему агент тупеет к концу дня

Почему агент тупеет к концу дня

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

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

Перед последней задачей части Лёха притормаживает Тёму у самого входа.

— Стоп, не бросайся, — пишет он. — Задача сегодня последняя, важная — давай перед работой разложим всё, что ты за этот месяц нажил. Ты ж месяц хватал инструмент за инструментом: скилы, агентов, git, тесты, дифф, планы, руль доверия. Свалено всё в одну кучу. Прежде чем идти в бой, полезно разок вытряхнуть ящик и посмотреть, чем ты вообще воюешь.

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

— Только не считай трофеи. Раскладываем не по новизне — по тому, зачем оно. Три корзины: что чинит, что проверяет, что страхует.

Он роняет имя бланку между делом — TOOLBOX_MAP, опись арсенала по функции — и больше не разжёвывает. Тёма садится раскладывать сам, по одной штуке за раз.

— Браузер куда? — уточняет он спорный край. — А, в «проверяет», когда он доказывает, что игра проходима. Откат — это чинит или страхует?

— Страхует, — кивает Лёха.

Тёма раскладывает — и чем дальше, тем больше его самого забирает. Он-то думал, всего пара штук наберётся. А оно всё сыплется и сыплется: скилы, плагины, агенты, мост к данным, хуки, голос, git с его командами, тесты, логи, дифф, браузер, планы, руль, гигиена окна… Рука не поспевает. К концу на экране — три забитых столбца:

⚙️ 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); scope как контракт
жанры задач фича / багфикс / рефакторинг / разведка — у каждого свой руль
окно внимания агент видит не весь repo, а окно; контекст выносим наружу

И когда всё легло, Тёма смотрит на обе карты и осекается — но уже по-другому. В ту ночь у него из первой карты была заполнена только левая колонка. «Чинит». А «проверяет» и «страхует» — пустые. Ничего толком не проверял, соломки нигде не стелил.

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

— Вот теперь видишь свой арсенал как систему, — отвечает Лёха. — Не как кучу разноцветной магии, а как набор под три разные работы. Это пока грубая карта, стартовая. Полную науку «что когда вытаскивать» оставим на дальше. Но главное ты ухватил.

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

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

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

— Слышь, — пишет Тёма Лёхе, — а чего это он поглупел? Модель, что ли, сломалась? Или у меня лимит какой кончился?

— Ни то, ни другое, — отвечает Лёха. — У него забилось окно внимания.

— Это которое с уровня про большой портал?

— Оно самое. Помнишь, мы говорили: агент видит не весь проект магически, а только то, что влезло в окно — вашу историю разговора, поданные файлы, правила. Окно не резиновое.

— И что?

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

— И что, ничего не сделать?

— Сделать. Есть на это отдельный навык — гигиена внимания, как раз им сегодня и займёмся. Штука контринтуитивная: иногда, чтоб агент «поумнел», надо не добавить ему контекста, а выкинуть лишнее. Давай сперва глянем, что у него там в окне.

3. Заглянуть в окно: /context

— Первое правило, когда что-то поехало: не чини вслепую, сперва осмотрись, — пишет Лёха. — Как в чужом коде не лезут править, пока не поняли, что там. С окном так же: прежде чем чистить, глянь, чем оно вообще забито. Команду ты знаешь ещё с портала:

/context        # показать, что сейчас лежит в окне внимания

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

Context window: 78% used (156k / 200k tokens)

  System prompt ............... 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 — глянуть, что стало:

Context window: 22% used (44k / 200k tokens)

  System prompt ............... 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. Двойная цена набитого окна и контринтуитив дня

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

— Затем, что набитое окно бьёт по тебе сразу с двух сторон, — Лёха объясняет на пальцах. — Первое — дорого. Каждый запрос оплачивает всё окно целиком. Чем оно толще, тем дороже каждый твой ход. Второе — шумно. Чем больше в окне всего, тем хуже агент фокусируется, тем чаще путается. То есть грязное окно делает работу и дороже, и тупее одновременно.

— А чистое — наоборот, — Тёма ловит мысль сам. — Получается, гигиена окна это не жадность, не «экономлю на запросах». Это способ сделать его и дешевле, и умнее за один заход.

— Ты ухватил. И отсюда главный фокус дня, — Лёха формулирует. — Иногда, чтоб агент поумнел, надо не докинуть ему контекста, а выкинуть лишнее. Звучит наоборот, а работает.

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

— Новый навык освоил, — кивает Лёха. — Осталось закрепить главную привычку всей учебы — с неё всё и начиналось.

1
Задача
Claude code, 16 уровень, 2 лекция
Недоступна
Сбор diff signals по двум конфликтующим tracks
Сбор diff signals по двум конфликтующим tracks
1
Задача
Claude code, 16 уровень, 2 лекция
Недоступна
Перенос trusted output и safe merge в target branch
Перенос trusted output и safe merge в target branch
Комментарии
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ