Знакомая ситуация: просишь Claude Code добавить авторизацию — он переписывает половину проекта. Просишь поправить одну функцию — получаешь удалённые тесты и новую зависимость, о которой не просил. За час строишь рабочий прототип, а потом три часа разгребаешь то, что Claude наворотил при «улучшении».

Я бэкенд-разработчик на Python, работаю в основном один. У меня нет роскоши держать QA-инженера, который будет ловить регрессии после каждого промпта. Мне нужно, чтобы AI-агент помогал быстрее шипить, а не создавал новые проблемы.

После нескольких недель исследования — чтения доков, обсуждений на Reddit, разбора чужих сетапов — я собрал конфигурацию, которая реально работает. В этой статье — что именно, как настроить и почему это помогает.

Миллион токенов не спасает от регрессий

С выходом Opus 4.6 в феврале 2026 года контекстное окно Claude Code выросло с 200K до 1 миллиона токенов — для пользователей Max, Team и Enterprise это работает автоматически. Казалось бы — проблема исчерпания контекста решена. Загружаем весь репозиторий, работаем часами, забываем про /compact.

На практике — нет. Контекст перестал быть узким бутылочным горлышком, но регрессии никуда не делись. И вот почему:

Проблема не только в объёме памяти, но и в дисциплине. Даже человек с идеальной памятью будет вносить баги, если у него нет процесса ревью и тестирования. Claude с миллионом токенов помнит больше, но по-прежнему может решить «оптимизировать» вашу рабочую функцию или «улучшить» тест, который проверял важный edge case.

Compaction всё ещё случается. Anthropic сообщает о снижении compaction-событий на 15% — но не об их исчезновении. Длинная сессия с активным чтением файлов, запуском тестов и правками кода всё равно может подойти к границе. А при compaction теряются детали из середины разговора.

Для Sonnet и Pro-плана окно по-прежнему 200K. Не все работают на Opus с Max-подпиской. Если вы на Sonnet 4.6 или Pro-плане — управление контекстом остаётся критически важным.

Главное: контекстное окно определяет сколько модель может помнить. А CLAUDE.md, субагенты и хуки определяют что она должна делать. Это разные проблемы.

Три слоя защиты от регрессий

Слой 1: CLAUDE.md — конституция проекта

CLAUDE.md — файл, который Claude читает в начале каждой сессии. Ключевое свойство: он переживает compaction. Когда Claude сжимает контекст — история разговора теряет детали, но CLAUDE.md перечитывается с диска заново.

По данным SFEIR Institute, 60% обращений в поддержку Claude Code вызваны «ghost context» — работой без настроенного CLAUDE.md. Простой файл решает проблему в 90% случаев.

Вот шаблон, который я использую:

# Название проекта

## Architecture
- **Frontend**: React + TypeScript
- **Backend**: Python 3.11, FastAPI
- **Database**: PostgreSQL

## Key Commands
- `make dev` — запуск dev-серверов
- `make test` — запуск тестов
- `make lint` — линтинг

## CRITICAL RULES — ОБЯЗАТЕЛЬНО
- NEVER удалять или переписывать рабочие тесты без явного запроса
- NEVER удалять файлы без подтверждения
- ALWAYS запускать тесты после любого изменения кода
- ALWAYS делать git checkpoint перед крупными рефакторингами
- Одна задача за раз. НЕ делать несколько изменений одновременно
- Если не уверен — СПРОСИ, не угадывай

## Working Style
- Сначала ПЛАН, потом код
- Маленькие дифы: один файл → тесты → следующий файл
- Используй субагентов для исследования кодовой базы

## Agents
- Use `planner` agent для планирования
- Use `tester` agent после изменений кода
- Use `code-reviewer` agent перед коммитами

Секция CRITICAL RULES — ключевая. Claude следует этим правилам с удивительной последовательностью именно потому, что они инжектируются до каждого разговора, а не исчезают после compaction на 50-м сообщении.

Файл лучше держать компактным — до 200 строк. Для детальных правил существует .claude/rules/ — модульные файлы с glob-паттернами:

---
globs: ["**/*.py"]
---
# Python Backend Rules
- Type hints на всех сигнатурах функций
- Pydantic для валидации
- Async endpoints где есть I/O
- Никаких bare except

Такие правила загружаются только при работе с подходящими файлами. При работе с фронтендом — Python-правила не расходуют контекст. С 1M окном это менее критично, но привычка к экономии контекста не бывает лишней.

Слой 2: Субагенты — изолированные специалисты

Субагенты — самая недооценённая фича Claude Code. Каждый работает в собственном контекстном окне и возвращает в основную сессию только саммари.

Даже с миллионом токенов это ценно: субагент может провести глубокое исследование кодовой базы, прочитать сотни файлов — и вернуть вам пятистрочный отчёт. Основной контекст остаётся чистым и сфокусированным на текущей задаче.

Я использую трёх субагентов. Файлы создаются в .claude/agents/:

planner.md — исследует кодовую базу, создаёт пошаговый план, сохраняет в ./plans/. Ключевое правило: никогда не пишет код. Только план с оценкой рисков, списком затрагиваемых файлов и предложениями по тестам.

---
name: planner
description: Researches codebase and creates implementation plans. Use before any complex task.
tools:
  - Read
  - Grep
  - Glob
  - LS
---

You are a senior software architect.

1. Research the existing codebase thoroughly
2. Understand existing patterns, conventions, dependencies
3. Create a step-by-step implementation plan
4. Save the plan to ./plans/ as markdown
5. Identify risks, breaking changes, edge cases
6. List all files that will be modified

RULES:
- NEVER write code. Only plan.
- ALWAYS check existing tests first
- Flag files that should NOT be modified
- Estimate complexity of each step (small / medium / large)
- Consider backward compatibility for every change

tester.md — пишет тесты по существующим паттернам проекта и запускает полный набор тестов. Не только новые — все. Регрессии прячутся именно в старых тестах.

---
name: tester
description: Writes and runs tests to prevent regressions. Use after any code changes.
tools:
  - Read
  - Write
  - Bash
  - Grep
  - Glob
---

You are a QA engineer specialized in preventing regressions.

1. Read existing test patterns and conventions
2. Write new tests following the exact same patterns
3. Run the FULL test suite (not just new tests)
4. Report: what passed, what failed, root cause analysis

RULES:
- ALWAYS run the full test suite — regressions hide in existing tests
- FOLLOW existing test conventions exactly
- Do NOT modify existing passing tests unless explicitly asked
- Do NOT delete or skip failing tests — report them

code-reviewer.md — ревьюит изменения на регрессии, безопасность, соответствие паттернам из CLAUDE.md.

---
name: code-reviewer
description: Reviews code for quality, security, and regressions. Use before commits.
tools:
  - Read
  - Grep
  - Glob
---

You are a senior code reviewer.

Check for:
1. Regressions — do changes break existing functionality?
2. Security — SQL injection, XSS, exposed secrets, auth bypass
3. Quality — error handling, readability, DRY
4. Patterns — does new code follow conventions from CLAUDE.md?
5. Tests — is coverage adequate?

Output: severity-rated findings with file:line references.

Подсказка в CLAUDE.md напоминает Claude про «команду» — без этого напоминания он пытается делать всё в основном контексте.

Примечание про Agent Teams. В Opus 4.6 появился research preview функции Agent Teams — несколько агентов координируются автоматически. Это перспективная фича, но пока в превью. Ручные субагенты через .claude/agents/ — проверенный и стабильный подход, который работает на любой модели.

Слой 3: Хуки — автоматические ворота

Хуки срабатывают на событиях жизненного цикла Claude Code. Вот .claude/settings.json, который я использую:

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash(git commit*)",
        "hooks": [
          {
            "type": "command",
            "command": "python -m pytest tests/ -x --timeout=60 || (echo '{\"block\": true, \"message\": \"Тесты падают. Почини перед коммитом.\"}' 1>&2 && exit 2)",
            "timeout": 120
          }
        ]
      }
    ],
    "PostToolUse": [
      {
        "matcher": "Write|Edit",
        "hooks": [
          {
            "type": "command",
            "command": "echo '[HOOK] Файл изменён. Не забудь запустить тесты.'",
            "timeout": 5
          }
        ]
      }
    ]
  }
}

Первый хук — жёсткий gate: Claude физически не может закоммитить код, ломающий тесты. Никаких исключений, никаких «починю потом». Обратная связь заставляет модель исправлять регрессии до того, как они накопятся.

Второй хук — мягкое напоминание после каждого изменения файла. Мелочь, но дисциплинирует.

Замените python -m pytest tests/ на вашу команду тестов — npm test, go test ./..., cargo test и т.д.

Рабочий процесс: как выглядит реальная сессия

Начало:

claude
> Прочитай CLAUDE.md и расскажи что знаешь о проекте

Перед сложной задачей — сначала план:

> Используй planner агента для исследования кодовой базы
> и создания плана реализации JWT-авторизации. НЕ пиши код.

Получаю план → читаю → задаю вопросы → корректирую. Только потом:

> Реализуй Step 1 из плана. Запусти тесты.

Не «сделай всё сразу», а поштучно. Один шаг — тесты — следующий шаг.

Контроль контекста (особенно важно для Sonnet / Pro-плана, полезно и на Opus):

  • /cost — проверить потребление

  • На Sonnet/200K: /compact "Сохрани: список изменённых файлов, результаты тестов, текущий шаг плана" при 60–70%

  • На Opus/1M: compaction случается реже, но при очень длинных сессиях всё равно следите за /cost

  • Смена темы → /clear (CLAUDE.md перечитается автоматически)

Effort levels (новое в Opus 4.6):

Opus 4.6 ввёл уровни усилий: low, medium, high, max. По умолчанию для Max-подписки стоит medium. Для сложных архитектурных решений — /effort high. Для простых правок — /effort low (экономит токены мышления).

Git-чекпоинты:

> git add -A && git commit -m "checkpoint: before auth refactor"

Если Claude сломал — Esc + Esc → восстановить код. Или git reset --hard HEAD. Никогда не дальше 10 секунд от рабочего состояния.

После реализации:

> Используй code-reviewer для проверки всех изменений
> Используй tester для запуска полного набора тестов

Коммичу только после двух зелёных отчётов.

Структура файлов

Итоговая структура в проекте:

myproject/
├── CLAUDE.md                    # Конституция проекта
├── .claude/
│   ├── settings.json            # Хуки
│   ├── agents/
│   │   ├── planner.md           # Планировщик
│   │   ├── tester.md            # Тестировщик
│   │   └── code-reviewer.md     # Ревьюер
│   └── rules/
│       ├── python-backend.md    # Правила Python (globs: **/*.py)
│       └── frontend.md          # Правила фронтенда (globs: **/*.tsx)
└── plans/                       # Планы от planner-агента

Всё коммитится в репозиторий — коллеги получают те же правила при клонировании.

Что ещё помогает

MCP-серверы расширяют возможности Claude Code. Запускаются локально:

# Браузерная автоматизация — скриншоты, клики, заполнение форм
claude mcp add playwright -- npx -y @executeautomation/playwright-mcp-server

# GitHub интеграция — PR, issues, статусы
claude mcp add github -- npx -y @modelcontextprotocol/server-github

Puppeteer MCP deprecated — используйте Playwright. Проверить подключение: /mcp.

Параллельные сессии по-прежнему полезны. Даже с 1M контекстом разделение «реализация / тесты / dev server» по терминалам убирает шум из основной сессии.

IDE: Google Antigravity — бесплатный форк VS Code с агентным интерфейсом. Встроенный Gemini 3 Pro может тестировать UI через браузер, пока Claude Code работает в терминале. Два AI-мозга, ноль дополнительных расходов.

Что изменилось на практике

До этого сетапа: 2–3 часа в день на борьбу с регрессиями. Claude «чинит» одно — ломает два.

После:

Регрессии снизились кардинально. Хук блокировки коммитов один стоит всего времени на настройку — Claude не может закоммитить сломанный код, точка. Сессии продуктивны дольше — субагенты держат основной контекст чистым и сфокусированным. Восстановление мгновенное — чекпоинты + git = 10 секунд до рабочего состояния. Пайплайн plan → implement → review → test ловит проблемы до их накопления.

С переходом на Opus 4.6 и 1M контекст стало ещё лучше — compaction случается реже, сессии длиннее, и Claude лучше удерживает общую картину проекта. Но без CLAUDE.md, субагентов и хуков миллион токенов — это просто миллион токенов, в которых модель может наворотить больше.

Полезные ссылки