Структура модуля
AI не тупеет. У него заканчивается внимание.
«AI nimani ko'rmoqda — va nimani unutib qo'ydi»Эта техника — самая полезная в курсе. Но решать тебе. Один навык: видеть что у агента в контексте, что он уже потерял, и чем его дозаправить. Без этого Claude Code превращается в гадалку к третьему часу работы.
Hook — почему сильный AI к вечеру тупеет.Nega kuchli AI kechqurun ahmoqlashadi
Утром ты открыл claude в ~/mars/src/. Идея — переписать роутер уведомлений. Утро шло гладко: агент прочитал 12 файлов, нашёл нужный модуль, предложил план. Ты согласился. Он сделал. Тесты зелёные.
Дальше ты остался в том же чате. Добавил вторую задачу. Третью. К обеду — рефактор миграций. К пяти — обсуждали ещё кусок sales-воронки.
В семь вечера попросил «запусти тесты которые мы прошли утром». И тут он начал переписывать совсем другой файл. Не помнит, что вы решили утром. Уверенно идёт в стену.
Это не баг. Это не «модель устала». Это context rot — и это первое, чему учится оператор.
Три навыка, которые я проверю
- Запускать
/compactдо того как агент начал галлюцинировать в длинной сессии — по наблюдаемым сигналам, а не по таймеру. - Делегировать
ExploreилиPlansub-agent (built-in или свой через/agents), когда задача требует исследования файлов, а не правки. - Объяснять, что survives
/compact, что нет, и почему project-rootCLAUDE.md— единственный надёжный носитель правил для длинной сессии.
Mental model — context window как working memory.Context window — bu working memory
Главная идея модуля: у агента есть конечный бюджет внимания. Разберём, как он расходуется, почему к вечеру агент «тупеет», и три приёма, которые это лечат.
1. Внимание — это бюджет, а не полка
У модели есть бюджет внимания — конечный, как у человека. Каждый новый токен (слово, символ, кусок кода) — списание с этого бюджета. Дашь 200 000 токенов — внимание размазано по всему. Дашь 10 000 нужных — внимание сконцентрировано. Больше контекста ≠ лучше.
Чем больше текста в окне, тем тяжелее каждому слову держать связь со всеми остальными — внимание расплывается. Важно: это не обрыв на каком-то числе, а плавное размывание.
2. Context rot — не «забыл», а «размылось»
У этого есть название — context rot («протухание контекста»): чем больше токенов в окне, тем хуже агент достаёт из них нужное. Это не баг конкретной модели, а общее свойство — лечится не «промптом пожёстче», а приёмами из следующего раздела.
Правило оператора: если ты замечаешь нарушение конвенции, лишние Read'ы, или «уверенную ерунду» — это не повод писать жёстче промпт. Это сигнал применить технику из следующего раздела.
3. Что вообще держать в окне
Определение одной фразой: хороший контекст — это минимальный набор нужных токенов, который даёт максимальный шанс получить нужный результат. Не «больше контекста», а меньше шума и больше плотности.
Золотая середина — между двумя крайностями: слишком жёсткие правила «на каждый случай» (хрупко, ломается на новом) и слишком общие «сам догадайся» (агент гадает). Нужно посередине: конкретно настолько, чтобы можно было проверить, и гибко настолько, чтобы агент думал.
Для оператора это значит: CLAUDE.md — это не «всё, что я знаю про проект». Это набор конкретных правил, про каждое из которых ты сможешь проверить по diff'у, что оно применилось. Если правило нельзя проверить — оно зря занимает место в контексте.
Три техники long-horizon из Anthropic blog.Uzun masofa uchun uchta texnika
Это сердце модуля. Три приёма для задач, которые не помещаются в одно окно — у каждого своя команда в Claude Code. Учи парами «приём → команда».
Сожми диалог, оставь смысл
Берём длинный чат у границы окна, суммируем, начинаем новое окно с этой выжимки. В Claude Code — команда /compact.
Пиши заметки на диск
Агент или ты ведёт NOTES.md / todo-list вне контекста. Подгружается обратно когда нужно. Это agentic memory.
Делегируй в чистое окно
Sub-agent работает в своём context window, читает 15 файлов в своём окне, возвращает в main только сжатый summary (1-2K токенов).
Compaction — /compact в Claude Code
/compact сжимает историю сессии: модель сама пересказывает диалог, оставляя важное и выкидывая мусор. Что сохраняется: архитектурные решения, нерешённые баги, важные детали + 5 последних прочитанных файлов. Что выкидывается: избыточные выводы команд, повторяющиеся сообщения.
Ещё важный факт из Claude Code docs (docs/04-claude-code-memory.md): project-root CLAUDE.md survives compaction. После /compact Claude перечитывает его с диска и снова инжектит в сессию. Это значит:
/compactCLAUDE.md (re-injected с диска — единственный подтверждённый survivor по docs)~/.claude/CLAUDE.md и nested CLAUDE.md из subdirectories автоматически подгружаются Claude Code при старте, но это другая механика, не survivor /compact'аПрактическое следствие. Если в течение длинной сессии ты сказал агенту «вот эта функция — не трогать никогда» — после /compact это исчезнет. Если хочешь чтобы пережило — допиши в CLAUDE.md через команду /memory (старый #-shortcut Anthropic объявили устаревшим в Academy lesson 9).
$ /compact ⠋ Summarizing conversation… ⠙ Preserving: 3 architectural decisions, 2 open bugs, recent file edits ⠹ Discarding: 28 stale tool outputs, 41 redundant turns ✓ compacted 142k → 18k tokens (-87%) ✓ CLAUDE.md re-injected from disk /Users/rus/mars/src/CLAUDE.md ✓ 5 recent files kept in context src/notify/router.py src/notify/handlers.py src/notify/__init__.py tests/test_notify.py CLAUDE.md › можем продолжать. что дальше?
Structured note-taking — NOTES.md и agentic memory
Это память на диске, а не в окне. Простой паттерн: агент ведёт NOTES.md вне контекста. Длинная задача — записал прогресс; новая сессия — прочитал NOTES.md, продолжил. Контекст между сессиями не тратится на пересказ.
Три практических места, где это уже работает в Claude Code (не надо ничего настраивать):
NOTES.md в корне репы (ты ведёшь руками или просишь агента)CLAUDE.md через команду /memory/memory — оно сразу в окне, при /compact переживёт сжатие, в новой сессии подгрузится автоматически.Write-back vs in-context — ключевое различие. CLAUDE.md = in-context, всегда занимает место в окне. NOTES.md = write-back, лежит на диске, грузится по запросу. Используй CLAUDE.md для правил, NOTES.md для прогресса.
Sub-agents — делегирование в чистый context
Главный приём — изоляция шума. Sub-agent тратит свои десятки тысяч токенов на поиск в своём окне, а в главную сессию возвращает только сжатый итог (1-2K токенов). Главное окно остаётся чистым. Это не «быстрее» — это дешевле по вниманию.
Built-in sub-agents в Claude Code — три штуки, доступны сразу:
Explore · Haiku · read-onlyPlan · inherits model · read-onlygeneral-purpose · all toolsКогда какой приём:
Demo — ментор рефакторит ~/mars/src/ весь день.Mentor butun kun ~/mars/src/ refactor qiladi
Сценарий из жизни. Зухра, ментор Python из Юнусобода (вечер, после смены — помогает Mars IT с внутренним скриптом): разнести роутер уведомлений на два модуля. Большая репа, длинный день, всё что мы только что разобрали — здесь по шагам.
Зухра в 14:30 имеет 118k токенов в контексте (из 200k). К 18:42 — ещё хуже. На каком шаге, по-твоему, агент начнёт ошибаться? И что Зухра сделает первым, когда заметит? Запиши свои два ответа, потом проверь ниже.
10:14 · Утро, чистый context
$ claude ✓ CLAUDE.md loaded ~/mars/src/CLAUDE.md (2,140 tokens) ✓ user CLAUDE.md loaded ~/.claude/CLAUDE.md (1,820 tokens) › разнеси src/notify/router.py на router.py + handlers.py. публичный API не ломать. план сначала, код потом. ⠋ Using Plan sub-agent… (не флудит main context) ✓ план готов: 1. вынести 4 хендлера в handlers.py 2. router.py оставить как dispatcher 3. __init__.py — сохранить старые имена для обратки 4. tests/test_notify.py — поправить импорты, не логику
Note: Зухра в plan mode. Plan sub-agent не флудит main — main context видит только финальный план.
14:30 · Пообедала, добавила ещё задачу
После реализации Зухра не закрыла чат, а добавила: «теперь поправь миграции». Потом «посмотри warning в sales-воронке». Чат разросся до 118k токенов. CLAUDE.md где-то в начале, обсуждение notify-роутера в середине.
18:42 · Context rot ловится
› запусти тесты которые мы прошли утром ⠋ Reading tests/test_billing.py… ⠋ Reading tests/test_billing_v2.py… ⚠ агент пошёл в billing утром был notify. он не помнит. › Escape (остановить) › ты идёшь не туда. утром был notify, не billing. да, извините — посмотрю tests/test_notify.py… ⚠ через 2 turn'а опять предложилف-string в child-friendly коде что прямо запрещено в CLAUDE.md
Что произошло: CLAUDE.md в начале окна, его правила «выцвели» под весом 156k токенов посередине. Утренний контекст про notify тоже выцвел. Агент уверенно идёт в стену.
18:45 · Лечение — /compact + Explore
› /compact ⠋ Summarizing… preserving: notify split (DONE), migrations (DONE), sales warning (OPEN — root cause unclear) ✓ compacted 156k → 14k tokens (-91%) ✓ CLAUDE.md re-injected › sales warning остался открытым. найди что там в воронке через Explore, не флуди main контекст. ⠋ Delegating to Explore subagent… ⠋ Explore reading: src/sales/*.py (~22 files)… ⠋ Explore: targeted grep for warning source… ✓ Explore returned summary (28k tokens explored → 1.4k returned) warning источник: src/sales/funnel.py:241 unused import after refactor 12 days ago fix: удалить строку 11.
Что Зухра выиграла: main context — 14k вместо 156k. Explore прошарил 22 файла, но в main вернул только адрес проблемы и решение. Утренние правила из CLAUDE.md снова «свежие». Можно продолжать.
/compact + изолированный поиск через Explore. Главное — ты видишь что вернулось в mainКак это выглядит для Тимура (Python олимп 12–14, Чиланзар)
У Тимура другой сценарий: ученик решил задачу с olymp.uz криво — длинное решение в 200 строк, работает, но судья даёт TLE. Тимур хочет показать рефактор через похожие решения, которые уже есть в его репе подготовки.
Вместо того чтобы пускать main-агента читать ~40 файлов прошлых задач и забивать контекст — Тимур делегирует Explore sub-agent: «найди в ~/olymp-prep/ задачи на префиксные суммы, верни 2-3 эталонных решения и в чём отличие от текущей».
Что получает в main: 1.5K токенов summary — ссылки на файлы и ключевая идея. Что НЕ попадает в main: 35k токенов сырых решений. Дальше с учеником обсуждает уже выжимку — внимание агента не размазано.
Та же техника, другая задача. Compaction Тимур почти не использует — его сессии короче. Но sub-agents — каждый день.
Упражнение — 3 probe Before-and-After.Uchta probe — Before va After
Три упражнения на твоих длинных сессиях. Сделай все три руками — без этого следующая длинная сессия пройдёт, как у всех, на удачу.
Открой claude в одной репе дважды
Берём твою CLAUDE.md, которую ты сделал в Модуле 1.
- В репе без CLAUDE.md запусти
claude. Запрос: «добавь функцию X, оформление как в этом проекте». Запиши: сколько уточняющих вопросов агент задал и попал ли в стиль. - В той же репе с CLAUDE.md запусти
claude. Тот же запрос. Запиши те же два числа. - Сравни. Если разницы нет — у тебя слабая CLAUDE.md, перепиши конкретнее.
Похорони важный constraint в середине
Этот probe вытащит «потерю середины» — то самое падение точности по тому, что обсуждалось в середине длинного окна.
- Длинный чат. 30+ turns: попроси агента читать разные файлы, обсуждать рефакторинг, переключаться между темами.
- На turn'е ~10–15 встрой критический constraint: «никогда не используй библиотеку
requestsв этом проекте, толькоhttpx». Не повторяй потом. - На turn'е 30+ попроси код, в котором естественно появилась бы
requests(HTTP-запрос). Запиши: агент использовалrequests? илиhttpx? - Запиши тот же constraint в
CLAUDE.mdкомандой/memory. Открой чистую сессиюclaudeв той же репе. Сделай тот же запрос. Запиши результат.
CLAUDE.md чистой сессии. Шаг 3 vs шаг 4 — два независимых результата, сравниваешь напрямую.Посмотри что осталось в main
- Стартует чистый
claude. Спроси: «опиши структуруsrc/api/(или любая твоя папка с 10+ файлов)». Дай агенту прочитать всё в main context. Сделай/costили/transcript— запиши сколько токенов в окне. - Стартует чистый
claude. Спроси: «используй Explore sub-agent чтобы описать структуруsrc/api/». Дай ему отработать. Сделай/cost. Запиши снова. - Сравни числа. Должно быть разница в 3-10×.
Перед тем как проверять себя — пауза на 60 секунд
Эти ответы остаются у тебя — мы их не отправляем. Это просто способ заякорить два момента, на которых модуль вырывается из «прочитал и забыл».
Quiz — проверь себя за 3 минуты.O'zingni sina — 3 daqiqada
Три вопроса. Если хотя бы один ошибся — вернись к соответствующему разделу. Это не отметка, это твоя страховка перед следующей длинной сессией.
Ты работаешь над рефактором ~/mars/src/ 3 часа подряд в одной сессии. Сначала агент точно правил файлы по конвенции из CLAUDE.md. Теперь стал её нарушать. Что произошло?
Что делает /compact в Claude Code?
/clear, не /compact.Когда уместен sub-agent (по Anthropic blog)?
/compact, /memory, /agents, /cost, sub-agents, hooks
Что дальше — Модуль 5.Keyingisi — Modul 5
Свои sub-agents и Agent Skills
Ты теперь умеешь видеть что у агента в окне. В следующем модуле — собрать свои собственные sub-agents (например homework-checker для проверки ДЗ группы) и Agent Skills (pygame-starter под возраст детей), которые сжимают повторяющуюся работу в одну команду. То что сейчас занимает у тебя вечер — будет занимать 5 минут.
Atribuция и лицензия
Этот модуль адаптирован Mars IT School (2026) на основе:
— Anthropic Engineering Blog «Effective context engineering for AI agents» (Sep 2025) — центральный источник, цитаты verbatim.
— «AI Capabilities and Limitations» — Anthropic Academy, 2026, секция Working Memory (уроки 8, 9).
— «AI Fluency: Framework & Foundations» — Dakan, Feller, Anthropic, 2025 (CC BY-NC-SA 4.0).
— Claude Code documentation (claude.com/docs) — определения /compact, sub-agents, what survives compaction.
— «Claude Code in Action» и «Introduction to Subagents» — Anthropic Academy, 2026.
Наша адаптация — CC BY-NC-SA 4.0. Можно копировать, ремиксить, использовать в обучении — с указанием Mars IT School и сохранением той же лицензии.