Каждый новый чат с Claude Code начинается с нуля. Агент не знает ваш проект, не помнит что вы обсуждали час назад в соседнем окне, не в курсе что на этом сервере нельзя трогать определённый порт. Вы объясняете одно и то же в пятый раз, и на шестой он всё равно полезет “чинить” конфиг который работал нормально.

Каждую неделю в r/ClaudeAI новая история. Агент удалил production базу. Агент запушил секреты в публичный репо. Агент “оптимизировал” billing-сервис и выставил клиентам нулевые счета. И каждый раз думаешь: очень не хочется стать этим человеком из заголовков.

CLAUDE.md должен решать обе проблемы: и контекст между сессиями, и защиту от катастроф. Типичный CLAUDE.md на 5-10 строк не решает ни одну. Я решила подойти к этому системно - не по одной проблеме за раз, а как к архитектурной задаче.

Сейчас мой конфиг - 582 строки, 6 слоёв, и за каждым правилом стоит конкретная история.

Три случая которые всё изменили

Агент “починил” рабочую систему. Воскресенье вечером. Агент видит в конфиге 127.0.0.1 для внешнего сервиса хранения. Решает что предыдущая сессия оставила ошибку - вместо реального адреса стоит localhost. Логично, правда? Он заменяет на настоящий IP. Upload ломается. Дальше полчаса дебага, прежде чем понимаешь: это был SNI-proxy через локальный туннель, 127.0.0.1 был правильным значением. Без контекста очевидное решение оказалось катастрофой.

Правило которое появилось: “не менять конфиги без понимания зачем текущие значения такие. Если значение выглядит странно - сначала понять, потом действовать.”

fail2ban принял агента за брутфорсера. Агент проверял состояние сервера. Для каждой проверки он открывал новое SSH-подключение. Десяток подключений за минуту - fail2ban интерпретировал как brute-force и заблокировал IP на полчаса. В это время на сервере шла тренировка модели, и я потеряла к ней доступ.

Правило: “один SSH-мост на всё. Один клиент на сессию. Не писать отдельные скрипты для check, fix, verify - объединять в один.”

“Отфильтровать” оказалось “удалить”. Я попросила отфильтровать датасет - убрать неподходящие изображения. Агент интерпретировал буквально: удалил файлы. Не переместил, не пометил - удалил. Данные пропали.

Правило: “‘фильтрация’ = переместить или пометить, не удалить. Перед любым удалением убедиться что пользователь явно попросил именно удалить.”

Написать “будь аккуратен” не работает. Нужна система.

6 слоёв: как это устроено

Ни один слой не был запланирован. Каждый появился после конкретной проблемы.

Слой 1: Rules (9 файлов). Набор правил которые подгружаются по ситуации. Агент пишет статью - ему не нужны правила про SSH. Дебажит код - не нужны правила про оформление текста. Claude Code умеет подключать нужные rules-файлы в зависимости от задачи.

Слой 2: Memory (78 файлов). Появилась когда агент в третий раз забыл конфигурацию сервера. Между сессиями он теперь запоминает: настройки инфраструктуры, решения по проектам, мои предпочтения, прошлые ошибки. Файлы связаны ссылками [[filename]] - 178 перекрёстных ссылок, получается граф знаний из обычного markdown. Часть грузится всегда (базовые правила), остальное - по теме.

Слой 3: Handoffs. Появились когда новый чат повторил тупик предыдущего. При закрытии чата агент записывает сводку: что сделано, что НЕ получилось (самая ценная часть), одно следующее действие. Вот реальный handoff:

## Цель сессии
Color checker: CNN sweep + diffusion, первые визуальные результаты.

## Сделано
- CNN baseline: median 1.99 deg (11M params, 21 MB)
- Sweep на 5 GPU: crop128(3.17), bs16(2.04), lr3e-4(NaN)
- Diffusion training запущен: epoch 5/50, loss 0.827

## НЕ сработало
- EfficientNet-B0: hash mismatch в Docker image
- lr=3e-4: NaN после epoch 10-13, нет gradient clipping
- CNN визуально: 3 числа дают паразитные кастинги

## Следующий шаг
Inference скрипт для diffusion + visual sheets с 24 patches

Следующий чат читает 1500 токенов вместо того чтобы заново анализировать проект. За 4 дня накопилось 27 handoff’ов - ни один тупик не повторился. Работает не только между чатами: у меня три подписки (две рабочих, одна личная), и handoff позволяет стартовать в другой подписке без повторных объяснений.

Слой 4: Chronicles. Появились когда после 20 handoffs стало непонятно, почему проект вообще пришёл к текущему состоянию. Handoff отвечает “что дальше”. Хроника - “как сюда пришли”. Ключевые решения, повороты, тупики. 3-7 строк на каждую веху.

Слой 5: Hooks. Появились когда правило “проверяй ссылки в CLAUDE.md” перестало работать через 20 минут сессии. Об этом - отдельная секция ниже.

Слой 6: Skills (16 штук). Готовые наборы знаний для конкретных задач. Описание написано как триггер для модели: “используй когда: GPU зависло, нужна проверка здоровья сервера”, а не “помогает с серверами”.

Правило - пожелание. Hook - гарантия.

Это самый неочевидный вывод за месяц.

Правило в CLAUDE.md - инструкция в промпте. Агент может забыть, переинтерпретировать, проигнорировать на длинной сессии когда контекст забит другими вещами. Правило “проверяй ссылки перед работой” работало первые 10 минут. Потом агент увлекался задачей и забывал.

Hook - это Python-скрипт который Claude Code запускает автоматически при определённых событиях. SessionStart, Stop, PreToolUse. Скрипт не забывает, не переинтерпретирует. Он исполняется механически, каждый раз.

Пример - hook который напоминает записать handoff перед закрытием длинной сессии:

# remind_handoff.py (Stop hook, упрощённо)
age = session_age_minutes()
if age < 15:
    return  # короткая сессия, не нужно

if fresh_handoff_exists():
    return  # уже записан

# Блокируем закрытие и просим записать handoff
print(json.dumps({
    "decision": "block",
    "reason": f"Сессия {int(age)} мин, handoff не записан. "
              f"Запиши в .claude/handoffs/ перед выходом."
}))

Модель сама знает когда пора - когда задача завершена или контекст переполняется. Hook страхует от случаев когда она забыла.

Если что-то должно происходить гарантированно - это hook, не правило.

Одна строка конфига которая спасла от supply chain атаки

31 марта 2026 года группа Sapphire Sleet (DPRK) скомпрометировала официальный npm-пакет axios (~100M загрузок в неделю). Опубликовали версию 1.14.1 с вредоносным кодом. Окно: 3 часа, с 00:21 до 03:29 UTC.

В моём .npmrc стояла одна строка:

min-release-age=7

Пакеты опубликованные меньше 7 дней назад не устанавливаются. Большинство вредоносных пакетов обнаруживают за 1-3 дня, 7 дней - комфортный буфер.

Меня не затронуло. Одна строка в конфиге.

Аналогично для Python - в uv.toml:

exclude-newer = "7 days"

За конфигом - 37 papers

Многие правила пришли не из личного опыта, а из академических работ. 37 arxiv papers, переработанных в принципы. Вот те, которые изменили мой workflow больше всего:

Proof Loop. Агент говорит “тесты прошли” - проверяете, тесты не прошли. Proof Loop запрещает агенту подтверждать собственную работу. Нужны файлы-доказательства: вывод тестов, verdict от верификатора в свежей сессии, который не видел процесс создания. Источник.

Structured Reasoning. Вместо свободного “ну, может это, а может то” - формат: что точно знаем из кода и логов → пошаговая трассировка → что следует → какие гипотезы проверили и отбросили. На реальных патчах accuracy с 78% до 93%. Источник.

Deterministic Orchestration. Если задача детерминированная - тесты, линтер, форматирование - она идёт через shell-скрипт. Модель плохо считает, теряет счётчики, путает условия в циклах. Скрипт - нет.

Red Lines. Обычные правила агент может интерпретировать “творчески”. Red Lines - абсолютные запреты без исключений. “Не удалять без подтверждения.” “Не менять production конфиги без понимания.” Каждый привязан к инциденту. Паттерн из китайского инженерного сообщества (红线).

Остальные принципы - generator-evaluator, autoresearch, multi-agent decomposition, codified context, agent security, documentation integrity и ещё 7 - подробно описаны в репозитории.

Цифры

78 memory файлов. 178 перекрёстных ссылок. 27 handoffs за 4 дня. 96.9% KV-cache hit rate на 83 сессиях за неделю.

Файл конфигурации обновляет сам себя: после каждого изменения агент проверяет не устарели ли ссылки. SessionStart hook валидирует автоматически.

Работает ли идеально? Нет. При аудите нашлись 4 memory файла которые выпали из индекса. Documentation drift случился с системой, которая должна его предотвращать. Но без неё было бы хуже.

Чего не знаю

Не уверена что все принципы нужны каждому. Для большинства проектов, вероятно, хватит пяти: Deterministic Orchestration, Structured Reasoning, Supply Chain Defense, Codified Context, Handoffs.

Не уверена что 6 слоёв - минимум. Может я overengineered. Но за месяц ни разу не потерялся контекст и ни один тупик не повторился.

Один из принципов (Assumption Testing) прямо говорит: каждый компонент кодирует предположение о неспособности модели. Модели улучшаются. Убирайте компоненты и измеряйте - может какой-то из слоёв уже не нужен.

Попробовать

Скопировать в чат Claude Code:

https://github.com/AnastasiyaW/claude-code-config - изучи, выбери что подходитдля моей работы и настрой мой Claude Code

Начать с малого: Supply Chain Defense (одна строка в .npmrc) + Deterministic Orchestration (тесты через скрипты) + Structured Reasoning (формат дебага). Добавлять по мере необходимости.

Всё под MIT. github.com/AnastasiyaW/claude-code-config

Комментарии (61)


  1. dmitrik4321
    12.04.2026 18:01

    Спасибо за статью, нашел опечатку, в Попробовать (ниже в строке которую нужно скопировать пропущен пробел между подходит и для)


    1. ProgerMan
      12.04.2026 18:01

      Для этого достаточно выделить ошибку и нажать Ctrl+Enter, чтобы отправить автору личным сообщением.


      1. dmitrik4321
        12.04.2026 18:01

        Спасибо, не знал, не так давно в Хабре


  1. TerraV
    12.04.2026 18:01

    Каждый второй ИИ энтузиаст создает свою систему памяти. Каждый третий видит в ней серебряную пулю. И что самое интересное, для большинства из них это работает. Но так же правда в том, что эти решения user-specific и нифига нормально не переносятся. Мне кажется каждый из нас собирает свое "идеальное зеркало" и потом смотримся в него и умиляемся "как мощны наши лапища".


    1. abbasov-alexander
      12.04.2026 18:01

      А я вот человек неискушенный в ИИ, но как познакомился с GStack, так с ним и работаю (3 недели). Еще начинаю понемногу Beads осваивать. CLAUDE.md создавал через стандартную слэш команду и у меня агенты GStack сами всё важное внесли в файл. И всё выглядит очень емко и кратко. Я бы так не смог. В одном проекте CLAUDE.md 157 строк, в другом 380 строк.

      Надо сказать, что я не знаю как остальные люди, но я пока не доверю полностью ИИ. Поэтому внимательно читаю и планы и исследую реализацию. Дебаг и будни программирования не сильно смущают — я пока полагаю, что это нормальная обязанность специалиста владеть кодом который он создаёт, даже если создаёт на пару с ИИ. А, ещё для экономии токенов использую RTK. Не то, чтобы прям большая экономия, но какой никакой расход сокращает.


      1. Sonia_Black Автор
        12.04.2026 18:01

        Правильный подход - читать и понимать что создаёшь, даже если создаёшь с ИИ. 157 и 380 строк - хороший диапазон для проектных CLAUDE.md. По GStack не работала, интересно будет сравнить подходы. Про RTK не слышала - это что за инструмент?


        1. abbasov-alexander
          12.04.2026 18:01

          Какой-то очень новый. По смыслу он сокращает вывод консольных команды, но обещает делать без ущерба для агентов. Работает через хуки. В целом не вижу проблем у агентов при работе с ним, но вот словам про оптимизацию токенов на 90% я бы не верил) Я конечно не делал реальных замеров, но по ощущениям это что-то в районе 10-30%. https://github.com/rtk-ai/rtk 


    1. Sonia_Black Автор
      12.04.2026 18:01

      Ну в офисе я раскатала это безболезненно. так что если своих наработок не много то вполне подойдет. Плюс репозиторий я сделала с пометкой для агента выбрать подходящее. Что то наверянка можно забрать.


    1. NadFox
      12.04.2026 18:01

      Работа с AI, помимо всего прочего, даёт отличную возможность почувствовать себя немного богом, словам которого внемлет пусть немного бестолковое, но покорное и одновременно могущественное существо. Такой способ майнинга эндорфинов намного безопаснее (и доступнее) какого-нибудь параглайдинга. Вайбкодинг-зависимость ещё ждёт своих теравпевтов, реабилитационных центров и Обществ Анонимных Вайбкодеров.
      Буду первым: "Здравствуйте. Меня зовут NadFox и я вайбкодер".


  1. BearOff
    12.04.2026 18:01

    Claude может произвольно игнорировать инструкции из CLAUDE.md, если он слишком большой. 582 - это большой.

    Size: target under 200 lines per CLAUDE.md file. Longer files consume more context and reduce adherence.

    https://code.claude.com/docs/en/memory


    1. jetnet
      12.04.2026 18:01

      надо токены укорачивать: кр.сестр.тал.


      1. Wesha
        12.04.2026 18:01

        кр.сестр.тал.

        Кретин сестре талдычит?


      1. ivchatov309
        12.04.2026 18:01

        Надо ставить caveman.md, или как он называется


        1. Optimizator_mk8
          12.04.2026 18:01

          https://github.com/JuliusBrussee/caveman

          прикольная штука, тестирую второй день


    1. titulusdesiderio
      12.04.2026 18:01

      Кроме того этот файл дублируется в контекст с каждым новым сообщением от пользователя. Нагружать каждое сообщение дополнительными 600-строками это мощно


      1. Sonia_Black Автор
        12.04.2026 18:01

        Не совсем так - CLAUDE.md грузится один раз и кэшируется (KV-cache). Повторно токены не тратятся, они переиспользуются из кэша. Плюс 582 строки - это вся система, а не один файл. Основная часть распределена по rules/ и memory/, которые подгружаются условно.


        1. titulusdesiderio
          12.04.2026 18:01

          Нет. Он каждый раз отправляется. Это выяснили на прошлой неделе после утечки исходного кода Claude Code


          1. Sonia_Black Автор
            12.04.2026 18:01

            да, файл физически в system prompt каждого запроса. Что в мою защиту: он попадает в стабильный префикс и кэшируется через prompt caching (cache_read_input_tokens - в ~10x дешевле cache_creation). "Не грузится повторно" было неточно с моей стороны - правильно "не тарифицируется повторно в пределах 5-минутного TTL". Тем не менее аргумент про размер остаётся - даже закэшированный большой префикс замедляет первый запрос и раздувает storage. Спасибо за указание на неточность


        1. TerraV
          12.04.2026 18:01

          Вы только забыли упомянуть что время жизни кэша ~5 минут у Anthropic. Цифра разумеется плавает, но она очень небольшая. То есть пока вы работаете интенсивно, попадание в кэш хорошее, бюджет сессии тратится медленно. Отойти на 10-20 минут подумать - stale cache + скачок в использовании бюджета. И да, важно упомянуть что кэш это не про "трату токенов" а про тарификацию. Cache miss ощутимо дороже cache hit, но cache hit всё еще тарифицируется и далеко не бесплатен.

          С CLAUDE.md еще интереснее. Он цепляется к каждому сообщению (как писали в разборе кода claude code). Я за достоверность не поручусь, но если поменять CLAUDE.md то ИИ прекрасно описывает где и какие изменения произошли. Сама сессия stateless. Т.е. весь контекст "до" + промпт пользователя обрабатывается каждый раз. Кэш спасает, но первый же запрос "продолженной" сессии легко выгребает 10-20% пятичасового бюджета. У меня Opus 4.6 1M, и сессии обычно доходят до 400к токенов, очень иногда 500к+. Дальше наблюдается видимая деградация как в скорости обработки, так и в качестве.


    1. Sonia_Black Автор
      12.04.2026 18:01

      582 строки - это не один файл в промпте. Это вся система целиком: CLAUDE.md (~200 строк основного текста) + 9 rule-файлов которые грузятся условно + 78 файлов памяти которые подтягиваются по теме. В каждый конкретный вызов попадает только релевантная часть. Рекомендацию "under 200 lines per file" я как раз и соблюдаю - отдельно взятый CLAUDE.md укладывается. 582 - это общий объём конфигурации по всем слоям.