Настройка Claude Code - после которых агент перестаёт тупить и жечь токены (Гайд и обучение Claude Code)

Конфиг сеньора для Claude Code — 9 настроек, после которых агент перестаёт тупить и жечь токены

Канал с гайдами и контентом по claude code, выкладываем новости (когда режут лимиты в 10 раз) и какие инструменты через claude реализуем для проектов, канал: https://t.me/claudedevolper

Разница между «Claude Code помогает» и «Claude Code бесит» почти никогда не в модели. Она в конфигурации. Mykyta Herashchenko, который гоняет Claude Code на 30+ доменах с флотом автоматических агентов, формулирует так: разница между $50/день впустую и реальным рычагом — это что загружается при старте, что изолируется в субагентах и где заканчиваются «советы» и начинается принудительное исполнение.

TL;DR: 9 конкретных настроек — от двухминутного .claudeignore (минус 30-40% токенов) до субагентов на Haiku (минус 50-70% стоимости). Каждая с примером конфига, который можно скопировать прямо сейчас. Гайд для тех, кто уже прошёл фазу «просто спроси AI».

1. .claudeignore — бесплатные 30-40% экономии за 2 минуты

Самый недооценённый файл в проекте. Без него Claude Code при старте сессии читает всё: node_modules, .next, dist, build-артефакты. Andrei Nita замерял на реальном Next.js проекте: из 156 842 строк, которые Claude загружал, к задаче относились 8 934. Остальные 99.5% — мусор.

Создайте .claudeignore в корне проекта:

node_modules/ .next/ dist/ build/ coverage/ *.min.js *.log .git/ __pycache__/ .env .env.* Copy

По замерам Nita, одна строка .next/ в Next.js проекте режет контекст на 30-40%. На команде из 5 разработчиков с 20 сессиями в день это ~$2100 экономии в месяц на одном Sonnet.

Нюанс: .claudeignore не работает ретроактивно. Файлы, уже прочитанные в текущей сессии, остаются в контексте. Поэтому создавайте файл до старта работы, а не в середине.

2. CLAUDE.md — под 80 строк, или вы платите за воздух

Каждая строка CLAUDE.md загружается в каждую сессию. Herashchenko держит проектный файл под 80 строк, глобальный ~/.claude/CLAUDE.md — под 15.

Правило: если удалить строку и Claude не начнёт ошибаться — строка лишняя.

Рабочий шаблон от Herashchenko:

Project: Site Factory## Stack- TypeScript 5.x, Node 22, Next.js 15, Prisma + PostgreSQL - Testing: Vitest, Playwright for E2E ## Commands-`pnpm dev` dev server -`pnpm test` Vitest -`pnpm lint` + `pnpm typecheck` quality gates ## Code Style (только то, что Claude делает неправильно)- ES modules only (NEVER require()) - Use `type` over `interface` unless extending - Errors: AppError from src/lib/errors.ts ## Workflow- ALWAYS run typecheck after changes - NEVER modify src/generated/ Copy

Типичные ошибки, которые Pooya Golchian описывает на основе десятков оптимизированных проектов:

  • Слишком общий. «Follow TypeScript best practices» — ноль конкретики, ноль пользы
  • Слишком длинный. 500 строк правил, которые никто не читает (включая Claude)

Для HTML-комментариев внутри CLAUDE.md используйте <!-- --> — они вырезаются перед инъекцией в контекст. Для больших блоков используйте @path/to/file — контент грузится по требованию, а не при старте.

3. settings.json — настоящий пульт управления

Четыре уровня приоритета (от высшего к низшему):

  • Managed — корпоративная политика, не переопределяется
  • User (~/.claude/settings.json) — персональные глобальные
  • Project (.claude/settings.json) — командные, коммитятся
  • Local (.claude/settings.local.json) — персональные на проект, в .gitignore

Шаблон от Herashchenko, который он использует в продакшене:

{ "$schema": "https://json.schemastore.org/claude-code-settings.json", "model": "sonnet", "env": { "CLAUDE_AUTOCOMPACT_PCT_OVERRIDE": "60", "CLAUDE_CODE_SUBAGENT_MODEL": "haiku" }, "permissions": { "allow": [ "Bash(pnpm run lint)", "Bash(pnpm run test *)", "Bash(pnpm run typecheck)", "Bash(git *)", "Read(src/**)" ], "deny": [ "Read(.env)", "Read(.env.*)", "Bash(rm -rf *)", "Bash(curl * | sh *)" ] } } Copy

Две переменные окружения, на которые стоит обратить внимание:

  • CLAUDE_AUTOCOMPACT_PCT_OVERRIDE=60 — компакция срабатывает на 60% заполнения контекста вместо стандартных 80%. Herashchenko пришёл к этому числу на практике: качество генерации деградирует на 20-40% заполнения из-за размытия внимания, а не на 80-90%, как можно ожидать
  • CLAUDE_CODE_SUBAGENT_MODEL=haiku — субагенты исследования работают на Haiku, экономя ~60% по сравнению с дефолтным Sonnet

4. Effort level — настройка, которая молча откатывается

Effort level управляет глубиной «размышлений» модели. Три уровня: low, medium, high (плюс max для подписчиков Max).

/effort high # на текущую сессию --effort high # флаг при запуске Copy

Можно задать в settings.json глобально. Herashchenko рекомендует medium как дефолт и high по необходимости.

Подвох: пользователь bswen обнаружил, что effortLevel: "max" в settings.json молча откатывается до более низкого уровня. Баг зафиксирован на GitHub — max нельзя персистить в настройках для подписчиков Max. Приходится ставить вручную каждую сессию.

Отдельная история — ultrathink. Anthropic убрали его в январе 2026, заявив, что extended thinking теперь always-on. Пользователи заметили деградацию на сложных задачах. К марту в v2.1.68 вернули обратно после волны жалоб. Extended thinking действительно включён по умолчанию, но ultrathink форсирует максимальный effort на одном конкретном ходе так, как дефолты не гарантируют.

5. Hooks — когда CLAUDE.md недостаточно

Ключевой инсайт от Herashchenko: CLAUDE.md — это совет. Claude следует ему примерно в 80% случаев. Если что-то должно выполняться всегда, без интерпретации, нужен hook.

Hooks — детерминированные. Они срабатывают на каждое событие независимо от решений Claude.

Два хука, которые Herashchenko ставит на каждый проект:

Автоформатирование при сохранении:

{ "PostToolUse": [{ "matcher": "Edit|Write", "hooks": [{ "type": "command", "command": "FILE=$(echo $TOOL_INPUT | jq -r '.file_path // empty'); [ -z \"$FILE\" ] && exit 0; case \"$FILE\" in *.ts|*.tsx|*.js|*.jsx) npx prettier --write \"$FILE\" 2>/dev/null ;; esac; exit 0", "timeout": 10 }] }] } Copy

Блокировка правок на main:

{ "PreToolUse": [{ "matcher": "Edit|Write", "hooks": [{ "type": "command", "command": "[ \"$(git branch --show-current)\" != \"main\" ] || { echo '{\"decision\": \"block\", \"reason\": \"Create a feature branch first.\"}' >&2; exit 2; }", "timeout": 5 }] }] } Copy

С v2.1.85+ hooks поддерживают поле "if" для условного срабатывания, а с v2.1.89+ — "defer" вместо "block", чтобы передать решение пользователю.

6. Path-scoped rules — детальные правила без раздувания CLAUDE.md

Файлы в .claude/rules/ загружаются только когда Claude работает с файлами, попадающими под path-маску. Ни одна строка не грузится при старте сессии.

---# .claude/rules/api-rules.md paths: - "src/api/**/*.ts"---# API Design Rules- All handlers return { data, error } shape - Use zod for request body validation - Never expose internal error details to clients - Auth middleware: src/middleware/auth.ts Copy

Практические уроки от Herashchenko:

  • Плотные буллеты лучше абзацев. 10 императивных пунктов стоят столько же токенов, что 3 абзаца, но Claude извлекает из них информацию быстрее
  • Мёржите мелкие файлы. Файл правил на 26 строк занимает слот загрузки и добавляет overhead. Количество файлов, а не строк определяет стоимость

7. Skills — прогрессивное раскрытие контекста

При старте Claude получает только имя + описание каждого скилла (~50 токенов). Полное содержимое SKILL.md загружается лишь при вызове. Это фундаментально дешевле, чем держать всё в CLAUDE.md.

Старт: имя + описание (~50 токенов на скилл) При вызове: SKILL.md загружен (~500-2000 токенов) По запросу: references/ scripts/ (только нужное) Copy

Поле context: fork — то, что большинство пропускает. Оно запускает скилл в изолированном субагенте: текущая сессия не загрязняется результатами работы скилла. В связке с agent: Explore для read-heavy задач основной контекст остаётся чистым.

---name: pr-summary context: fork agent: Explore allowed-tools: Bash(gh *)---PR diff:!`gh pr diff` PR comments:!`gh pr view --comments` Copy

Синтаксис ! + backtick-command в теле скилла выполняет shell-команды до того, как контент уходит в Claude. В примере выше агент получает живой diff PR без ручной вставки.

8. Субагенты — техника #1 по экономии токенов

Субагенты работают в отдельном контекстном окне. Основная сессия получает только итог.

Почему это критично: задачи исследования (чтение файлов, анализ структуры кода) могут затронуть 20-50 файлов. В основном контексте эти чтения накапливаются и толкают к зоне деградации на 20-40% заполнения. В субагенте они изолированы. Основной контекст не страдает.

---name: researcher description: Explores codebase. Use PROACTIVELY when you need to understand how something works before implementing. model: haiku tools: Read, Grep, Glob --- You are a codebase researcher. Rules:- Read only what is needed - Return a concise summary (under 500 words) - Include exact file paths and line numbers - Do NOT suggest changes. Just report findings. Copy

Поле description определяет, когда Claude делегирует. «Use PROACTIVELY when...» работает лучше, чем «for research tasks».

Приоритет выбора модели для субагента:

  • CLAUDE_CODE_SUBAGENT_MODEL env var (высший)
  • Per-invocation model параметр
  • Frontmatter model в определении субагента
  • Модель основной сессии

isolation: worktree — для субагентов, которые пишут код. Каждый получает свой git worktree, параллельные агенты не конфликтуют на файлах.

9. Привычки управления контекстом

Конфигурация — полдела. Вторая половина — как вы ведёте сессию.

Правило двух коррекций (Herashchenko): если вы поправили Claude дважды на одной и той же проблеме — /clear и начинайте заново. Чистая сессия с лучшим промптом стабильно бьёт длинную сессию, отравленную коррекциями. Это контринтуитивно: кажется, что теряешь прогресс. На деле избегаешь накапливающуюся стоимость деградированного контекста.

Паттерн аннотирования для сложных фич:

  1. Генерируете детальный plan.md с фрагментами кода и путями к файлам
  2. Добавляете инлайн-заметки прямо в план
  3. «Address all the notes and update the document. Don't implement yet.»
  4. Повторяете 1-6 раундов, пока план не станет твёрдым
  5. «Implement it all. Mark tasks completed. Continuously run typecheck.»

Рефакторинг плана бесплатный. Рефакторинг наполовину реализованной фичи — дорого.

Точечные промпты вместо размытых:

  • Плохо: "Fix the auth"
  • Хорошо: "the JWT refresh in src/services/auth.ts throws on expired tokens instead of refreshing. Fix it using the refreshToken helper."

Размытые промпты заставляют Claude сначала исследовать. Точные — сразу идут к изменению.

Контроль операционных документов. STATUS.md на 487 строк стоит 10K токенов на каждую сессию. На 60 строках — 1.2K. Держите только текущее состояние, историю скидывайте в архив и добавляйте в .claudeignore.

Подводные камни

  • Effort "max" в settings.json не сохраняется. Для подписчиков Max планов effortLevel: "max" молча откатывается. Баг открыт на GitHub, обходной путь — ставить вручную каждую сессию через /effort max
  • Контекст деградирует раньше, чем вы думаете. 1M токенов на бумаге, на практике качество падает на 20-40% заполнения. CLAUDE_AUTOCOMPACT_PCT_OVERRIDE=60 — не паранойя, а результат продакшен-опыта на 30+ доменах
  • Hooks ломают CLI-инструменты в sandbox. Issue #42857 на GitHub: sandbox блокирует macOS SystemConfiguration API, из-за чего падают Rust-based CLI (включая Codex CLI). Если используете sandbox с кастомными тулами — проверяйте совместимость
  • Agent Teams — экспериментальные. Нет resumption сессии с командой, один тим на сессию, split panes (tmux/iTerm2) не работают в VS Code terminal, Windows Terminal, Ghostty
  • Слишком много скиллов — деградация. Каждый скилл ~50 токенов при старте. 200 скиллов — это 10K токенов мусора на каждую сессию. Отключайте ненужные через user-invocable: false и disable-model-invocation: true

Вердикт

Из 9 настроек три дают 80% результата: .claudeignore (2 минуты, минус 30-40%), субагенты на Haiku (минус 50-70% стоимости исследования), и CLAUDE_AUTOCOMPACT_PCT_OVERRIDE=60 (спасает от тихой деградации на длинных сессиях). Остальные шесть — оптимизация для тех, кто тратит больше $100/мес и работает с крупными кодовыми базами. Если вы ещё не создали .claudeignore — начинайте с него прямо сейчас, эффект увидите в первой же сессии.

Как попробовать

  1. Создайте .claudeignore в корне проекта по шаблону выше — перезапустите сессию Claude Code
  2. Добавьте в .claude/settings.json:

{ "env": { "CLAUDE_AUTOCOMPACT_PCT_OVERRIDE": "60", "CLAUDE_CODE_SUBAGENT_MODEL": "haiku" } } Copy

  1. Урежьте CLAUDE.md до 80 строк — уберите всё, что Claude и так делает правильно
  2. Добавьте hook блокировки правок на main из раздела 5 в .claude/settings.json
  3. Попробуйте /effort high на сложной задаче и сравните результат с дефолтным

Канал с гайдами и контентом по claude code, выкладываем новости (когда режут лимиты в 10 раз) и какие инструменты через claude реализуем для проектов, канал: https://t.me/claudedevolper

8