LIVE//NAKODIL.SITE//PAYLOAD :: GUIDE
Контекст для Claude Code: как агент помнит проект между сессиями
Как держать контекст проекта — продукт, аудиторию, экономику — в папке рядом с кодом, чтобы Claude Code не начинал каждую сессию с нуля и не писал «в общем стиле». Реальная структура из живого репозитория, приём LIVE-данных и рецепт собрать свою за час. Без воды и без курсов.
- CLAUDE.md держит правила, но не знания. «Кто наш клиент», «какая у нас экономика», «что мы уже пробовали» — это не правила, это контекст, и он меняется. Без него агент пишет технически верно, но «в общем стиле качественного сайта».
- Решение — папка структурированного контекста рядом с кодом, куда CLAUDE.md роутит агента: он читает карту «вопрос → файл» и ныряет только в нужный файл, а не грузит всё подряд.
- Цифры не хардкодить. Маркер LIVE + файл с запросом — агент сам идёт за свежими данными (частный случай just-in-time контекста Anthropic).
- В статье — моя реальная структура `nakodil.site` целиком (папка контекста + нативная память Claude Code + роутинг в CLAUDE.md) и рецепт собрать свою за час.
Просишь Claude Code собрать лендинг. Он предлагает «современный минималистичный дизайн для широкой аудитории», ровные заголовки про «инновационные решения» и кнопку «Узнать больше». Технически — чисто. Только у тебя не широкая аудитория, а конкретные люди с конкретной болью, и говоришь ты с ними не так, как «качественный сайт для всех».
Это не лень модели. Агент просто не знает твой проект. Он знает язык, фреймворки и паттерны — но не то, кто твой клиент, какая у тебя экономика и что ты уже пробовал и выкинул. Эти знания живут у тебя в голове, в переписке и в документах, и в контекст агента не попадают.
Лечится это не длинным промптом, а структурой. Знания о проекте складываешь в папку рядом с кодом, а в CLAUDE.md прописываешь маршрут: куда смотреть за контекстом. Дальше агент ходит туда сам. Ниже — как это устроено, моя реальная структура nakodil.site целиком и рецепт собрать свою за час. Без воды и без «остального на курсе».
Почему Claude Code забывает твой проект между сессиями?
Потому что каждая новая сессия стартует с пустого контекстного окна, а CLAUDE.md грузит в него только правила, а не знания. Правило («отвечай на русском», «не трогай .env») применимо к каждой задаче и помещается в короткий файл. Знание («наш клиент — соло-предприниматель, который боится сложного софта») нужно лишь иногда и занимает много места. Если свалить и то, и другое в один файл — он раздуется и перестанет работать.
Контекстное окно агента — это оперативная память. Туда попадает только то, на что ты явно указал. Всё остальное лежит за пределами окна и должно подгружаться по требованию. Anthropic в инженерном блоге описывает, что бывает, когда в окно пихают слишком много:
Чем больше токенов в контекстном окне, тем хуже модель точно вспоминает информацию из этого контекста.
— Anthropic, Effective context engineering for AI agents
Знания о проекте держи не в окне, а в файлах снаружи, откуда агент подтягивает их под конкретную задачу. Папка контекста — это и есть «снаружи», организованное так, чтобы агент в нём не заблудился.
Что такое контекст-папка и чем она отличается от CLAUDE.md?
Контекст-папка — это набор markdown-файлов рядом с кодом, где лежат знания о проекте: продукт, аудитория, экономика, прошлые решения. CLAUDE.md от неё отличается ролью: он содержит правила и указатель, куда нырять за знаниями, и грузится в каждую сессию. Контекст-папка — это архив, в который агент заходит по конкретному вопросу. CLAUDE.md — оглавление, контекст-папка — книга. Без оглавления агент не знает, что книга существует; без книги — знает только правила, но не контекст.
Идею внешнего архива знаний задолго до ИИ-агентов популяризировал Tiago Forte — он называл это «вторым мозгом»: голова нужна, чтобы рождать идеи, а не хранить их. У Forte это про личную продуктивность и заметки в Obsidian. В применении к Claude Code та же идея перестаёт быть методичкой и становится архитектурой: внешняя папка, к которой у агента прямой доступ через файловую систему, без лишних интеграций.
Почему именно markdown и именно рядом с кодом. Раз агент ходит в эти файлы сам — формат должен читаться без отдельной интеграции: обычный текст, заголовки, ссылки между файлами. Notion и Google Docs так не подключить — только через MCP, а это лишний слой и лишние токены на каждый запрос. А раз файлы лежат в папке проекта — они в зоне видимости Claude Code. Запускаешь агент в репозитории — он видит всё внутри, без единой настройки.
Anthropic в документации проводит ту же границу — что грузить всегда, а что по требованию:
CLAUDE.md грузится в каждую сессию, поэтому включай только то, что применимо широко. Для доменных знаний или процессов, которые нужны лишь иногда, бери skills — Claude подгрузит их по требованию, не раздувая каждый разговор.
— Anthropic, Claude Code best practices
Скиллы — один способ хранить эпизодические знания (процедуры). Папка контекста — другой (факты о бизнесе). Я использую оба, но начинать стоит с папки: без неё агенту нечего читать.
Как выглядит моя реальная контекст-папка nakodil.site?
Покажу целиком, потому что прятать тут нечего — ценность в структуре, а не в секретных файлах. У меня контекст разложен на три слоя: папка strategy/ с бизнес-контекстом, нативная память Claude Code и роутинг в CLAUDE.md, который их связывает. Это не идеальные business/ и ai-clone/ из методичек — это то, что реально выросло за работу над проектом.
Бизнес-контекст у меня лежит в папке strategy/ рядом с кодом сайта:
nakodil-site/
├── CLAUDE.md ← правила + маршрут к контексту
├── strategy/ ← знания о проекте (контекст-папка)
│ ├── POSITIONING.md ← кто мы, для кого, чем отличаемся
│ ├── MESSAGE_HOUSE.md ← ключевые смыслы, тон, формулировки
│ ├── GTM_MANIFEST.md ← как выходим на аудиторию
│ ├── TRAFFIC_PLAN.md ← каналы и приоритеты
│ ├── SEO_PLAN.md ← поисковые приоритеты
│ ├── GEO_PLAN.md ← структура контента под AI-выдачу
│ └── MANIFESTO.md ← принципы, что мы НЕ делаем
├── guide/ ← черновики статей
├── web/ ← код сайта (Rails)
└── ARTICLES.md ← правила формата статей
Конкретные тексты внутри этих файлов — моя внутрянка, и она меняется. Но структуру и логику я показываю полностью: скелет переносится на любой проект, прятать его незачем. Когда я прошу агента написать статью или пост, он по маршруту из CLAUDE.md открывает strategy/POSITIONING.md и strategy/MESSAGE_HOUSE.md — и пишет под мою аудиторию, моим тоном, а не «в общем стиле».
Второй слой — память, которую Claude Code ведёт сам. Про неё отдельная глава ниже, но в дереве она живёт не в репозитории, а в служебной папке:
~/.claude/projects/<проект>/memory/
├── MEMORY.md ← индекс, грузится в каждую сессию
├── user_preferences.md ← кто я, как со мной работать
├── feedback_*.md ← правила, выученные через мои поправки
└── project_*.md ← состояние текущих задач
Граница между слоями простая: strategy/ я наполняю руками — это стратегия, которую агент сам не выведет. memory/ Claude ведёт сам — это тактика и мои привычки. CLAUDE.md связывает оба и добавляет правила.
Что класть в контекст-папку, а что нет?
Класть — факты о проекте, которые меняются раз в неделю или реже и которые агент не достанет из кода. Не класть — всё, что либо устареет за дни, либо и так видно в репозитории, либо опасно держать в файле.
Что идёт в контекст:
- Позиционирование: кто мы, для кого, чем отличаемся.
- Аудитория: портрет клиента, боли, возражения, тон общения.
- Продукты и цены, если они есть.
- Экономика и цели: на чём зарабатываем, куда идём.
- Прошлые решения и их причины — то, что через месяц никто не вспомнит.
Что туда не клади:
- Дубли кода. «Платежи идут через такой-то сервис» агент увидит в коде сам. Положишь в контекст — оно устареет первым.
- Сырую переписку без обработки. Есть инсайт — выжми и сформулируй. Нет — не клади.
- Секреты: токены, пароли, строки подключения. Папка может стать публичной — им место в
.env. - Скриншоты и картинки: тяжёлые и не парсятся текстовой моделью без отдельного шага.
- Динамические цифры. «Сегодня 423 пользователя» устареет через неделю — для них есть приём LIVE, о нём ниже.
Я отношусь к контекст-папке так, будто завтра репозиторий станет публичным, даже если он закрытый. Никаких имён клиентов без согласия, никакой помесячной выручки, никаких паролей. Эта привычка экономит много нервов.
Как роутить агента через CLAUDE.md, а не грузить всё подряд?
Через карту «вопрос → файл». Главный файл контекст-папки — это INDEX.md с таблицей, по которой агент понимает, куда нырять. В CLAUDE.md ты ссылаешься на эту карту одной строкой. Тогда агент грузит не всю папку, а только карту, выбирает нужный файл и читает один его. Это 4–5 чтений вместо запихивания десятка файлов в окно.
В моём CLAUDE.md маршрут выглядит так (пути и детали обезличены):
## Где что искать
| Что нужно | Куда смотреть |
|---|---|
| Кто мы, позиционирование | strategy/POSITIONING.md |
| Тон, ключевые смыслы | strategy/MESSAGE_HOUSE.md |
| Каналы и приоритеты трафика | strategy/TRAFFIC_PLAN.md |
| Правила формата статей | ARTICLES.md |
При работе с текстами — сначала читай strategy/POSITIONING.md
и strategy/MESSAGE_HOUSE.md.
Дальше CLAUDE.md остаётся коротким, а вся глубина уезжает в файлы, на которые он указывает. Агент не держит в окне то, что не нужно прямо сейчас. Окно остаётся чистым под рассуждение, а не забито нерелевантными знаниями.
Как не хардкодить устаревающие цифры: приём LIVE-данных
Цифры в файлах тухнут за дни. Положил «у нас 320 пользователей» — через две недели уже 410, а агент советует на основе старого числа. Решение: не писать число вообще. Ставишь рядом с показателем маркер LIVE и держишь отдельный файл с готовым запросом. Агент видит LIVE — идёт за свежей цифрой и думает на актуальных данных.
В файле вместо числа стоит маркер:
## Пользователи
> LIVE — выполни запрос из live-metrics.md, секция «Пользователи»,
> чтобы увидеть актуальное число.
А в live-metrics.md лежит готовый запрос с описанием, что он возвращает. Это частный случай того, что Anthropic называет just-in-time контекстом:
Агенты, построенные по подходу «just in time», держат лёгкие идентификаторы — пути к файлам, сохранённые запросы, ссылки — и динамически подтягивают данные в контекст в момент выполнения.
— Anthropic, Effective context engineering for AI agents
Переводя: агент носит с собой не данные, а указатели на данные. Это экономнее по токенам и точнее, потому что в окно попадает только актуальное.
Доступ к боевой базе давай только тем агентам, кому доверяешь, и через обёртку, которая берёт пароль из переменной окружения и не светит его в выводе. Прямой запрос с открытым паролем в файле — дыра в безопасности.
Claude Code сам ведёт память — зачем тогда ещё папка?
Затем, что нативная память пишет тактику, а не стратегию. С недавних версий Claude Code сам ведёт заметки про тебя в служебной папке memory/: твои привычки («предпочитает короткие ответы»), грабли инструментов («этот скрипт ломается без флага X»), состояние задач. Это полезно, но это про инструменты и поведение. «Кто наша аудитория и почему мы выбрали такую цену» туда не попадёт — это ты кладёшь руками в контекст-папку.
Самый рабочий приём нативной памяти — превращать каждую свою поправку в правило. У меня правила лежат отдельными файлами в формате «правило → почему → как применять»:
---
name: no-em-dashes
description: дефис вместо длинного тире во всех публичных текстах
type: feedback
---
Дефис, не длинное тире.
**Why:** длинное тире — главный визуальный маркер ИИ-текста.
**How to apply:** к любому тексту, который уйдёт наружу.
Без Why правило мёртвое — агент не перенесёт его на похожую ситуацию. Без How to apply непонятно, когда оно срабатывает. Этот формат описывает и Boris Cherny, создатель Claude Code:
Каждый раз, когда видим, что Claude сделал что-то неправильно, дописываем это, чтобы в следующий раз он так не делал.
— Boris Cherny, howborisusesclaudecode.com
Граница такая: память — авто-слой (Claude пишет сам, тактика), контекст-папка — ручной слой (ты пишешь, стратегия). Память можно открыть и поправить командой /memory. Если в ней появилось что-то, что должно стать жёстким правилом — переноси в CLAUDE.md.
Как собрать контекст-папку за час: пошаговый рецепт
Минимальная контекст-папка ставится за час. Создаёшь папку, кладёшь три файла (продукт, аудитория, цели) и карту, дописываешь маршрут в CLAUDE.md, проверяешь. Дальше растишь по работе. Вот рецепт целиком.
Шаг 1. Создай папку контекста в репозитории
Рядом с кодом, чтобы агент её видел из коробки:
mkdir -p context/{product,audience,goals}
Шаг 2. Положи три коротких файла
context/product/main.md — что за продукт, кому, чем отличается (30–50 строк). context/audience/avatar.md — кто клиент, какие боли, что покупает. context/goals/main.md — куда идёшь, по какой метрике. Не описывай идеал — опиши реальное. Не знаешь — поставь пометку «уточнить» и иди дальше.
Шаг 3. Сделай карту INDEX.md
context/INDEX.md — таблица «вопрос → файл», минимум пять строк, дальше дополнишь. Это сердце папки: без неё агент читает все файлы подряд и жжёт токены.
Шаг 4. Допиши маршрут в CLAUDE.md
Одна строка, которая связывает CLAUDE.md с папкой:
## Карта проекта
- Контекст про бизнес → context/INDEX.md
Когда вопрос про продукт, аудиторию или тексты — сначала читай context/INDEX.md.
Шаг 5. Проверь, что работает
Открой агент и спроси: «расскажи про мой продукт и мою аудиторию». Ответил из файлов — работает. Придумал — проверь, что папка лежит в репозитории, файлы названы правильно, а маршрут в CLAUDE.md написан точно.
Дальше папка растёт по двум привычкам. Каждый раз, когда принял решение по проекту, — фиксируешь в context/ с датой и причиной. Каждый раз, когда агент ошибся, — превращаешь это в правило в памяти. Через пару месяцев у тебя архив, который помнит «почему», и агент, который не наступает на знакомые грабли. Это весь рецепт — не «остальное на курсе», а остальное у тебя в руках за час.
5 ошибок контекст-папки
Эти ошибки превращают рабочую папку в свалку, которую агент игнорирует.
Ошибка 1. Раздутый CLAUDE.md вместо роутинга
Попытка впихнуть весь контекст в CLAUDE.md. Файл пухнет до сотен строк, жжёт токены каждую сессию и заставляет модель игнорировать правила. CLAUDE.md — оглавление на 80–120 строк, а не вся книга. Детали — в файлах, на которые он указывает.
Ошибка 2. Кладовка для всего подряд
В папку летит сырая переписка, отчёты, скриншоты, в которые никто не зайдёт. Через месяц агент тратит токены на чтение мусора. Правило: каждый файл закрывает конкретный вопрос. Файл, который полгода никто не открывал, — в архив или в удаление.
Ошибка 3. Хардкод устаревающих цифр
«У нас 1247 пользователей, конверсия 6.3%». Через неделю любые такие числа врут, а агент советует на их основе. Для всего, что меняется, — маркер LIVE и запрос к источнику, а не число в файле.
Ошибка 4. Бизнес отдельно от кода
Эта ошибка бьёт сильнее остальных. Контекст в одной папке, код — в другом репозитории. Агент запускается в коде и вторую папку не видит. Держи контекст внутри репозитория проекта, рядом с кодом, в одном дереве файлов.
Ошибка 5. Дубли того, что и так в коде
«Провайдер платежей настроен там-то, переменные такие-то». Агент это увидит в коде сам. Дубль стареет первым: код поменяли, в контексте забыли, агент работает на устаревшем. В контекст — только то, чего в коде нет.
Источники
- Anthropic — Effective context engineering for AI agents (context rot, attention budget, just-in-time контекст)
- Anthropic — Claude Code memory documentation (иерархия памяти, MEMORY.md)
- Anthropic — Claude Code best practices (что грузить всегда, что по требованию)
- Tiago Forte — Building a Second Brain (первоисточник идеи внешнего архива знаний)
- Boris Cherny — How Boris uses Claude Code (правила из ошибок)
Читать дальше
Частые вопросы
Чем контекст-папка отличается от CLAUDE.md?
CLAUDE.md — это правила и указатель, он грузится в каждую сессию, поэтому его держат коротким. Контекст-папка — это архив знаний о проекте (продукт, аудитория, экономика), куда агент ныряет по запросу. CLAUDE.md — оглавление, контекст-папка — книга.
Нужно ли держать контекст в одном репозитории с кодом?
Да, это самый надёжный вариант. Claude Code запускается в папке проекта и видит все файлы внутри неё. Если контекст лежит в отдельной папке снаружи — агент его просто не увидит. Для одиночки проще держать контекст рядом с кодом, в том же репозитории.
Claude Code сам ведёт память — зачем ещё папка?
Нативная память пишет тактику: твои привычки и грабли инструментов. Стратегию бизнеса она не пишет. Аудиторию, экономику и причины прошлых решений ты кладёшь руками в папку контекста. Память — авто-слой, контекст-папка — ручной. Нужны оба.
Можно ли хранить контекст в Obsidian или Notion?
Файлы должны лежать на диске рядом с проектом в формате, который агент читает без интеграций — то есть markdown. Obsidian подходит: это обычные .md-файлы, просто с красивой обёрткой. Notion и Google Docs — нет: их видно только через MCP, а это лишний слой и лишние токены.
Как не дать агенту тащить устаревшие цифры?
Не хардкодь числа в файлах. Поставь маркер LIVE рядом с показателем и держи отдельный файл с готовым запросом к базе. Агент видит LIVE, идёт за свежей цифрой и думает на актуальных данных, а не на прошлогодних.