Секретные фичи Claude Code: YOLO, hooks, память | AiManual
AiManual Logo Ai / Manual.
29 Май 2026 Гайд

Секретные фичи Claude Code: YOLO Classifier, hooks и постоянная память из исходников

Разбор скрытых возможностей Claude Code: YOLO Classifier для автономной работы, система hooks и постоянная память из исходников. Примеры конфигураций.

Я залез в исходники, чтобы вы не сломали прод

Вы используете Claude Code каждый день. Жмёте Enter, смотрите, как он генерирует код, иногда подтверждаете dangerous commands. И думаете, что это всё. А зря.

Я потратил вечер на чтение исходного кода Claude Code (да, часть его открыта в репозитории Anthropic). И нашёл три фичи, о которых молчат в документации. Они превращают утилиту из 'умного автодополнения' в автономного инженера, который сам решает, что делать, и помнит всё, даже после перезагрузки.

Предупреждение: эти фичи не документированы. Используйте на свой страх и риск. Я отвечал за прод, и без hooks чуть не случилось беды.

YOLO Classifier — 'живи быстро, ломай быстро'

Название говорит само за себя: You Only Live Once. Внутренний классификатор, который решает: нужно ли запрашивать подтверждение у пользователя перед выполнением команды. По умолчанию Claude Code спрашивает перед git push --force, rm -rf, изменением .gitignore. Но что, если вы доверяете агенту на 100%? Или наоборот — хотите блокировать даже чтение файлов?

Классификатор — это моделька, обученная на логах реальных сессий (кстати, Anthropic честно собирает эти данные). Она принимает на вход: команду, её аргументы, контекст (текущая директория, .claude.md, история). На выходе — три класса: allow, deny, ask.

Где это живёт?

Параметр --auto-mode переключает режимы: normal, auto, conservative. В режиме auto классификатор работает на полную катушку: позволяет опасные команды, если уверен, что они безопасны в текущем контексте. В conservative — наоборот, блокирует всё, кроме чтения.

claude --auto-mode auto  # доверяй, но проверяй? Нет, просто доверяй
claude --auto-mode conservative  # спроси даже про touch file.txt

Зачем вам это? Если вы пишете скрипт миграции БД, который запускается раз в год — режим auto сэкономит кучу кликов. Но если вы рефакторите код в папке с секретами — включите conservative.

💡
Под капотом классификатор использует ту же модель, что и основная генерация, но с отдельным system prompt. Anthropic не раскрывает детали, но я нашёл в исходниках файл classifier_prompt.md — там чёткие правила про rm, dd, git push --force.

Hooks: ваш backdoor в Claude Code

Hooks — это скрипты, которые выполняются до или после действий агента. Они описаны в документации, но не афишируются как полноценный механизм расширения. А зря — через hooks можно подключить любую систему: от уведомлений в Telegram до проверки кода перед коммитом.

Как это работает?

В файле .claude/hooks.yaml вы определяете события и команды. Полный список событий:

  • pre_command — перед выполнением любой команды (например, проверка баланса токенов)
  • post_command — после команды (логирование результата)
  • pre_tool_call — перед вызовом инструмента (чтение файла, запрос в поиск)
  • post_tool_call — после вызова
  • on_error — если команда упала с ошибкой
  • on_session_end — при завершении сессии (сохранение памяти)
# .claude/hooks.yaml
events:
  - on: pre_command
    script: /usr/local/bin/check_security.sh
    timeout: 5000
  - on: post_tool_call
    script: 'echo "Tool called: ${{TOOL_NAME}} at $(date)" >> /var/log/claude_hooks.log'
  - on: on_session_end
    script: 'python3 /home/user/save_memory.py'

Скрипты получают переменные окружения: CLAUDE_COMMAND, CLAUDE_TOOL_NAME, CLAUDE_EXIT_CODE. Можно делать всё что угодно.

Практический сценарий: унифицированная память

Hooks идеально ложатся на систему постоянной памяти. Я написал скрипт, который при on_session_end парсит всю историю сессии, нарезает на куски и сохраняет в Neo4j. Потом при старте новой сессии хук загружает релевантные куски. Готовый пример описан в статье Унифицированная память для AI-агентов через Neo4j и хуки. Там же показано, как заставить Claude Code и Codex делить одну базу знаний.

Постоянная память: не только CLAUDE.md

Все знают про файл CLAUDE.md в корне проекта. Но мало кто догадывается, что Claude Code хранит persistent state в папке ~/.claude/state/. Там лежат бинарные файлы с кэшем векторов, историей сессий, метаданными. Это — ключ к памяти между запусками.

Как это выглядит?

ls -la ~/.claude/state/
# -rw-------   1 user  staff  1048576 29 мая 2026 context_store.bin
# -rw-------   1 user  staff    65536 29 мая 2026 user_profile.bin
# -rw-------   1 user  staff   524288 29 мая 2026 episode_memory.bin

Файлы не читаемы текстовым редактором, но через API (внутренний Python SDK Anthropic) можно извлечь данные. Если вы хотите построить свою систему памяти — читайте статью Пять механизмов памяти Claude Code. Там детально разобрано, что лежит в каждом файле, как они влияют на контекст и как не потерять данные при обновлении Claude Code.

Экспорт памяти через YOLO + hooks

Комбинация взрывоопасная. Включаете --auto-mode auto, пишете хук на on_session_end, который выгружает episode_memory.bin в облако или Git LFS. При старте сессии — загружаете обратно. Таким образом Claude Code помнит всё, что делал вчера, неделю или месяц назад. Единственный минус — размер файла растёт линейно со временем.

Ошибка: не копируйте бинарники во время записи — читайте через symlink или делайте snapshot. Иначе получите битый файл и контекст обнулится.

Собираем всё вместе: конфигурация 'автономный инженер'

Вот моя конфигурация для pet-проекта (не для прода!):

claude --auto-mode auto --hooks enabled --memory-size 500
# или через .claude/config.json:
{
  "auto_mode": "auto",
  "hooks": true,
  "state_dir": "/mnt/ssd/claude_memory",
  "persistent_episodes": true
}

Что происходит: при запуске Claude Code загружает последнее состояние сессии, использует классификатор для пропуска подтверждений, а хуки логируют каждый чих. Я даже настроил хук, который отправляет мне в Slack, если агент решил удалить node_modules (да, классификатор может разрешить rm -rf node_modules в авто-режиме, лучше перестраховаться).

Нюансы, которые вас укусят

  1. node_modules — если ваш проект большой, чтение кэша из ~/.claude/state/ может занимать секунды. Перенесите state на SSD или RAM disk.
  2. YOLO + git push --force — классификатор не знает историю репозитория. В режиме auto он может разрешить git push --force, даже если ветка защищена. Я на этом обжёгся — пришлось восстанавливать коммиты из reflog.
  3. Hooks и циклическая зависимость — не пишите хук, который сам вызывает Claude Code (например, claude --auto-mode auto внутри скрипта). Получите infinite loop и Oh No.
  4. Совместимость с новыми версиями — бинарный формат памяти может меняться. После обновления Claude Code прочитайте статью про архитектуру, чтобы понять, как работает контекст и Subagents, и не сломать свой пайплайн.

Совет, который вы не ожидали

Не используйте YOLO Classifier в CI/CD пайплайнах. Я попробовал — агент сам себе подтверждал деплой, пока я пил кофе. Хорошо, что staging окружение было изолировано. Лучше оставьте --auto-mode conservative для автоматизации, а auto включайте только в сессиях, где вы сидите и контролируете глазами.

И ещё: если вы решите написать свой классификатор на основе открытых данных, загляните в статью 10 скрытых настроек Claude Code. Там есть советы по кастомизации поведения, которые дополнят hooks.

Подписаться на канал