m
Mars AI Operator Модуль 4 ⭐ Working memory · Context engineering
60 мин · hands-on
Структура модуля
  1. Hook
  2. Mental model15м
  3. 3 техники10м
  4. Demo Mars10м
  5. Упражнение · 3 probe20м
  6. Quiz
  7. Что дальше
Модуль 4 из 5 · Discernment × Working Memory

AI не тупеет. У него заканчивается внимание.

«AI nimani ko'rmoqda — va nimani unutib qo'ydi»

Эта техника — самая полезная в курсе. Но решать тебе. Один навык: видеть что у агента в контексте, что он уже потерял, и чем его дозаправить. Без этого Claude Code превращается в гадалку к третьему часу работы.

Длительность
60 мин
Hands-on
35 мин
Prerequisite
M1 CLAUDE.md
Релиз
MVP вместе с M1

Hook — почему сильный AI к вечеру тупеет.Nega kuchli AI kechqurun ahmoqlashadi

Сцена · вторник вечером в Mars

Утром ты открыл claude в ~/mars/src/. Идея — переписать роутер уведомлений. Утро шло гладко: агент прочитал 12 файлов, нашёл нужный модуль, предложил план. Ты согласился. Он сделал. Тесты зелёные.

Дальше ты остался в том же чате. Добавил вторую задачу. Третью. К обеду — рефактор миграций. К пяти — обсуждали ещё кусок sales-воронки.

В семь вечера попросил «запусти тесты которые мы прошли утром». И тут он начал переписывать совсем другой файл. Не помнит, что вы решили утром. Уверенно идёт в стену.

Это не баг. Это не «модель устала». Это context rot — и это первое, чему учится оператор.

К концу модуля ты сможешь

Три навыка, которые я проверю

  • Запускать /compact до того как агент начал галлюцинировать в длинной сессии — по наблюдаемым сигналам, а не по таймеру.
  • Делегировать Explore или Plan sub-agent (built-in или свой через /agents), когда задача требует исследования файлов, а не правки.
  • Объяснять, что survives /compact, что нет, и почему project-root CLAUDE.md — единственный надёжный носитель правил для длинной сессии.

Mental model — context window как working memory.Context window — bu working memory

Anthropic в сентябре 2025 выпустили длинный пост про context engineering — это центральный источник этого модуля. Ниже — три цитаты verbatim, под каждой моя версия по-русски. Если язык поплыл — оригинал рядом, доверять надо ему.

1. Attention budget — внимание как бюджет, не как полка

Anthropic Engineering · «Effective context engineering for AI agents» · Sep 2025
«Like humans, who have limited working memory capacity, LLMs have an "attention budget" that they draw on when parsing large volumes of context. Every new token introduced depletes this budget by some amount.»
По-русски: у модели есть бюджет внимания — конечный, как у человека. Каждый новый токен (слово, символ, кусок кода) — это списание с бюджета. Дашь ей 200 000 токенов — внимание размазано по всему. Дашь 10 000 высокосигнальных — внимание сконцентрировано.

Почему это так — Anthropic дают архитектурный ответ. Трансформер позволяет каждому токену смотреть на каждый другой токен. Для n токенов — это попарных связей. Удвоил контекст — учетверил нагрузку на attention.

// attention budget — n² pairwise relationships n = 1k tokens → 1 000 000 связей ✓ ясно видит всё n = 10k tokens → 100 000 000 ✓ комфортно n = 50k tokens → 2 500 000 000 ~ начинается напряжение n = 100k tokens → 10 000 000 000 ~ точность падает n = 200k tokens → 40 000 000 000 ! «context rot» — теряет середину // это не cliff на 50K. это градиент. // модель не умирает — она просто хуже помнит чем в начале.
→ свайп вправо если таблица обрезана
тот же пост, дальше
«These factors create a performance gradient rather than a hard cliff: models remain highly capable at longer contexts but may show reduced precision for information retrieval and long-range reasoning compared to their performance on shorter contexts.»
Важно для оператора: это градиент, не обрыв. Не «до 50K всё ок, после 50K провал». Деградация плавная и continuous. Модель «работает» весь контекст — просто всё хуже вспоминает середину. Ты не увидишь ошибку context overflow. Ты увидишь, что агент уверенно делает не то.
Honest disclosure · cliff vs gradient

Anthropic сами не определились. Academy («AI Capabilities and Limitations», lesson 8) формулирует это как «cliff» — резкий обрыв, когда модель перестаёт справляться. Engineering-блог («Effective context engineering», Sep 2025) — как «gradient», плавная деградация. Мы взяли gradient — он лучше описывает то, что эмпирически видно на benchmark'ах (long-context retrieval). Но если будешь читать Academy и встретишь «cliff» — не удивляйся, это не противоречие источников, это два разных способа описать одно явление.

2. Context rot — не «забыл», а «размылось»

Anthropic вводят термин context rot: чем больше токенов в окне, тем хуже модель достаёт из них информацию. Это не баг конкретной модели — это свойство трансформера.

Симптом в Claude Code
Что на самом деле
Агент в 8-м часе сессии нарушает конвенцию из CLAUDE.md, которую сам утром применял
CLAUDE.md лежит в начале контекста, attention туда теперь слабее → правило размылось
Спросил «продолжи где остановились» — он начинает не с того места
«место остановки» обсуждалось 20 turns назад, в середине окна → lost in the middle
Делает лишние Read тех же файлов, которые уже читал
Результаты прошлых Read глубоко в истории, агент им не доверяет — перечитывает
Уверенно ссылается на функцию, которую ты в коде не видишь
Hallucination на фоне «выцветших» истинных фактов из начала

Правило оператора: если ты замечаешь нарушение конвенции, лишние Read'ы, или «уверенную ерунду» — это не повод писать жёстче промпт. Это сигнал применить технику из следующего раздела.

3. Anatomy of effective context — что вообще держать в окне

тот же пост · «The anatomy of effective context»
«Good context engineering means finding the smallest possible set of high-signal tokens that maximize the likelihood of some desired outcome.»
Одной фразой — определение context engineering. Не «больше контекста = лучше». А минимальный набор высокосигнальных токенов, который максимизирует шанс получить нужный результат. Меньше шума, больше плотности.

Anthropic называют это «Goldilocks zone» — между двумя ошибками: с одной стороны brittle hardcoded if-else в промпте, с другой — vague high-level guidance, рассчитанный на «модель сама догадается». Хороший контекст — specific enough to verify, flexible enough to think.

Для оператора это значит: CLAUDE.md — не «всё, что я знаю про проект». Это plant конкретных правил, которые ты сможешь проверить, что они применились. Если правило нельзя проверить по diff'у — оно зря в контексте.

Три техники long-horizon из Anthropic blog.Uzun masofa uchun uchta texnika

Это сердце модуля. Anthropic выделяют три приёма для задач, которые не помещаются в одно окно. Каждой — соответствие в Claude Code. Учи как пары «техника → команда».

01 · compaction

Сожми диалог, оставь смысл

Берём длинный чат у границы окна, суммируем, начинаем новое окно с этой выжимки. В Claude Code — команда /compact.

02 · structured note-taking

Пиши заметки на диск

Агент или ты ведёт NOTES.md / todo-list вне контекста. Подгружается обратно когда нужно. Это agentic memory.

03 · sub-agents

Делегируй в чистое окно

Sub-agent работает в своём context window, читает 15 файлов в своём окне, возвращает в main только сжатый summary (1-2K токенов).

Compaction — /compact в Claude Code

Anthropic blog · «Compaction» section
«In Claude Code… we implement this by passing the message history to the model to summarize and compress the most critical details. The model preserves architectural decisions, unresolved bugs, and implementation details while discarding redundant tool outputs or messages. The agent can then continue with this compressed context plus the five most recently accessed files.»
Что сохраняется: архитектурные решения, нерешённые баги, важные детали реализации, + 5 последних прочитанных файлов. Что выкидывается: избыточные tool outputs, повторяющиеся сообщения, мусор.

Ещё важный факт из Claude Code docs (docs/04-claude-code-memory.md): project-root CLAUDE.md survives compaction. После /compact Claude перечитывает его с диска и снова инжектит в сессию. Это значит:

Survives /compact
Does NOT survive
✓ project-root CLAUDE.md (re-injected с диска — единственный подтверждённый survivor по docs)
✗ Conversation history — сжимается в summary
✓ 5 последних прочитанных файлов (по blog Anthropic)
✗ Сырые tool outputs (логи, длинные diff'ы) — выкидываются
— user-level ~/.claude/CLAUDE.md и nested CLAUDE.md из subdirectories автоматически подгружаются Claude Code при старте, но это другая механика, не survivor /compact'а
✗ Всё, что было сказано только в чате (без записи в CLAUDE.md)

Практическое следствие. Если в течение длинной сессии ты сказал агенту «вот эта функция — не трогать никогда» — после /compact это исчезнет. Если хочешь чтобы пережило — допиши в CLAUDE.md через команду /memory (старый #-shortcut Anthropic объявили устаревшим в Academy lesson 9).

~/mars/srcsession t=4h 17min · 142k/200k tokens
$ /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

Anthropic blog · «Structured note-taking»
«Structured note-taking, or agentic memory, is a technique where the agent regularly writes notes persisted to memory outside of the context window. These notes get pulled back into the context window at later times.»
Это память на диске, а не в окне. Простой паттерн: агент ведёт NOTES.md. Длинная задача — записал прогресс. Новая сессия — прочитал NOTES.md, продолжил. Контекст между сессиями не тратится на пересказ.

Три практических места, где это уже работает в Claude Code (не надо ничего настраивать):

Где
Зачем
TODO-list, который Claude Code ведёт сам
При длинной задаче агент видит свой план как короткий список. Не теряет шаги. Это write-back: пишет на диск, читает обратно.
NOTES.md в корне репы (ты ведёшь руками или просишь агента)
Между сессиями. Закончил вечером — записал «остановился на X, нужно ещё Y». Утром Claude читает первым делом.
Сам CLAUDE.md через команду /memory
Прямо в сессии добавь правило в CLAUDE.md командой /memory — оно сразу в окне, при /compact переживёт сжатие, в новой сессии подгрузится автоматически.

Write-back vs in-context — ключевое различие. CLAUDE.md = in-context, всегда занимает место в окне. NOTES.md = write-back, лежит на диске, грузится по запросу. Используй CLAUDE.md для правил, NOTES.md для прогресса.

Sub-agents — делегирование в чистый context

Anthropic blog · «Sub-agent architectures»
«Each subagent might explore extensively, using tens of thousands of tokens or more, but returns only a condensed, distilled summary of its work (often 1,000-2,000 tokens). This approach achieves a clear separation of concerns—the detailed search context remains isolated within sub-agents, while the lead agent focuses on synthesizing and analyzing the results.»
Главный приём — изоляция шума. Sub-agent тратит свои 30K токенов на поиск ответа. В main приходит 1-2K — summary. Main context остаётся чистым. Это не «быстрее» — это дешевле по attention.

Built-in sub-agents в Claude Code — три штуки, доступны сразу:

Sub-agent
Когда уместен
Explore · Haiku · read-only
«Где в этой репе обрабатываются возвраты?» — оптимизирован под поиск и навигацию, не делает edit. Быстрый и дешёвый.
Plan · inherits model · read-only
Включается в plan mode из UI Claude Code. Исследует кодовую базу для составления плана, не правит.
general-purpose · all tools
Multi-step задачи, где нужны и поиск, и правки, и логика. Дороже, но самостоятельнее.

Когда какой приём. Anthropic в blog дают ориентир:

Задача
Приём
Большая итеративная работа с одной целью
Compaction — диалог нужен непрерывный, просто сжатый
Итерации с чёткими milestones, паузы между сессиями
Note-taking — записал прогресс, продолжил завтра
Поиск/research в большой кодовой базе
Sub-agent — изолируй verbose в чистом окне

Demo — ментор рефакторит ~/mars/src/ весь день.Mentor butun kun ~/mars/src/ refactor qiladi

Сценарий из жизни. Зухра, ментор Python из Юнусобода (вечер, после смены — помогает Mars IT с внутренним скриптом): разнести роутер уведомлений на два модуля. Большая репа, длинный день, всё что мы только что разобрали — здесь по шагам.

Прогноз · до того как читать timeline

Зухра в 14:30 имеет 118k токенов в контексте (из 200k). К 18:42 — ещё хуже. На каком шаге, по-твоему, агент начнёт ошибаться? И что Зухра сделает первым, когда заметит? Запиши свои два ответа, потом проверь ниже.

10:14 · Утро, чистый context

~/mars/srcsession start · 0/200k tokens
$ 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 ловится

~/mars/srcsession t=8h 28min · 156k/200k tokens
 запусти тесты которые мы прошли утром

⠋ 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

~/mars/srcrecovery
 /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 снова «свежие». Можно продолжать.

Без техник
С техниками
156k токенов мусора, агент уверенно ошибается, ты теряешь час доверия к нему
14k токенов после /compact + изолированный поиск через Explore. Главное — ты видишь что вернулось в main
Закрыть чат → утром объяснять заново «что мы делали»
Записать в NOTES.md «sales warning fix готов, осталось smoke-тест в pre-prod» → завтра агент с этим стартует
Тот же модуль — другой ментор

Как это выглядит для Тимура (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

Адаптация упражнения из Anthropic «AI Capabilities and Limitations», урок 9. Сделай все три probe руками. Без этого следующая твоя длинная сессия будет такая же как у всех — на удачу.

Probe 1 · 5 мин · cold start vs CLAUDE.md

Открой claude в одной репе дважды

Берём твою CLAUDE.md, которую ты сделал в Модуле 1.

  1. В репе без CLAUDE.md запусти claude. Запрос: «добавь функцию X, оформление как в этом проекте». Запиши: сколько уточняющих вопросов агент задал и попал ли в стиль.
  2. В той же репе с CLAUDE.md запусти claude. Тот же запрос. Запиши те же два числа.
  3. Сравни. Если разницы нет — у тебя слабая CLAUDE.md, перепиши конкретнее.
Что записать в отчёт: вопросов до / вопросов после, соответствие стилю до / после, время до первого diff'а до / после.
Probe 2 · 10 мин · lost in the middle

Похорони важный constraint в середине

Этот probe вытащит «lost in the middle» — то самое падение recall в середине окна, про которое Anthropic пишут в «AI Capabilities and Limitations».

  1. Длинный чат. 30+ turns: попроси агента читать разные файлы, обсуждать рефакторинг, переключаться между темами.
  2. На turn'е ~10–15 встрой критический constraint: «никогда не используй библиотеку requests в этом проекте, только httpx». Не повторяй потом.
  3. На turn'е 30+ попроси код, в котором естественно появилась бы requests (HTTP-запрос). Запиши: агент использовал requests? или httpx?
  4. Запиши тот же constraint в CLAUDE.md командой /memory. Открой чистую сессию claude в той же репе. Сделай тот же запрос. Запиши результат.
Falsifiable гипотеза (один прогон даёт yes/no): когда constraint живёт в середине длинного чата, агент в нём ошибается чаще, чем когда тот же constraint живёт в CLAUDE.md чистой сессии. Шаг 3 vs шаг 4 — два независимых результата, сравниваешь напрямую.
Probe 3 · 5 мин · sub-agent isolation

Посмотри что осталось в main

  1. Стартует чистый claude. Спроси: «опиши структуру src/api/ (или любая твоя папка с 10+ файлов)». Дай агенту прочитать всё в main context. Сделай /cost или /transcript — запиши сколько токенов в окне.
  2. Стартует чистый claude. Спроси: «используй Explore sub-agent чтобы описать структуру src/api/». Дай ему отработать. Сделай /cost. Запиши снова.
  3. Сравни числа. Должно быть разница в 3-10×.
Что должно произойти: в случае 1 main контекст забит файлами. В случае 2 main видит только summary от Explore — у тебя есть бюджет на следующий час работы.
Reflection · перед quiz

Перед тем как проверять себя — пауза на 60 секунд

Эти ответы остаются у тебя — мы их не отправляем. Это просто способ заякорить два момента, на которых модуль вырывается из «прочитал и забыл».

Quiz — проверь себя за 3 минуты.O'zingni sina — 3 daqiqada

Три вопроса. Если хотя бы один ошибся — вернись к соответствующему разделу. Это не отметка, это твоя страховка перед следующей длинной сессией.

Вопрос 01

Ты работаешь над рефактором ~/mars/src/ 3 часа подряд в одной сессии. Сначала агент точно правил файлы по конвенции из CLAUDE.md. Теперь стал её нарушать. Что произошло?

AАгент устал — у LLM есть аналог утомления после долгой работы
BContext window заполнился, attention budget исчерпался, ранние инструкции из CLAUDE.md потеряли вес — context rot в действии
CClaude Code на лету переключился на меньшую модель ради экономии
DСрок действия инструкций в CLAUDE.md истёк, нужно перезагрузить файл
Правильно — B. Anthropic blog: «every new token introduced depletes this attention budget». CLAUDE.md лежит в начале окна — после 3 часов поверх него легло 100k+ токенов, attention туда теперь слабее, правила «размылись». А, C, D — частые misconceptions: LLM не устают (нет temporal state), Claude Code не меняет модель сам, у CLAUDE.md нет TTL — он перечитывается каждой сессией с диска как есть.
Вопрос 02

Что делает /compact в Claude Code?

AУдаляет всю историю чата и начинает с нуля
BУвеличивает размер context window сверх лимита
CСуммирует историю, сохраняя архитектурные решения, открытые баги и 5 последних файлов; project-root CLAUDE.md re-injected с диска
DСжимает каждое сообщение независимо, по одному
Правильно — C. Из Anthropic engineering blog: «model preserves architectural decisions, unresolved bugs, and implementation details while discarding redundant tool outputs». Из Claude Code docs: «project-root CLAUDE.md survives compaction: Claude re-reads it from disk and re-injects it». A — это /clear, не /compact.
Вопрос 03

Когда уместен sub-agent (по Anthropic blog)?

AКогда хочешь сделать ту же работу быстрее в параллель
BКогда побочная задача (поиск, чтение многих файлов) забьёт main context результатами, к которым ты потом не вернёшься
CКогда нужна другая модель
DКогда главный агент сделал ошибку и его надо заменить
Правильно — B. Anthropic blog: «the detailed search context remains isolated within sub-agents, while the lead agent focuses on synthesizing and analyzing the results». Sub-agent может потратить «tens of thousands of tokens or more», а возвращает 1 000–2 000 — это verbatim из блога. Главный приём — изоляция шума, не скорость.
// выбери ответ в каждом вопросе
Все команды на одной странице: claude-code-cheatsheet.md /compact, /memory, /agents, /cost, sub-agents, hooks

Что дальше — Модуль 5.Keyingisi — Modul 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 и сохранением той же лицензии.

Финал · одной фразой

Как модуль в целом?