04 / 06 · Эксперт

🔥 Топ-15 реальных проблем

Настоящие проблемы из практики использования CC — с конкретными решениями. Не теория, а боль и лечение.

Быстрый справочник

#1Auto-compaction + verification gap
Принцип проверки после завершения
#2Лимит токенов на больших проектах
Иерархия CLAUDE.md + .claudeignore
#3Over-engineering и усложнение
Явное ограничение в промпте
#4Галлюцинации API / методов
Верификация через docs/grep
#5Потеря контекста в длинных сессиях
Стратегия сессий + /clear
#6Нарушение архитектуры проекта
Architectural rules в CLAUDE.md
#7Неправильное исправление ошибок
Полный стек ошибки в промпте
#8Дублирование кода
Явное указание существующего кода
#9Сломанные импорты и пути
Рабочая директория в задаче
#10Игнорирование тест-файлов
Явное «запусти тесты» в задаче
#11Параллельные агенты конфликтуют
Изоляция задач по директориям
#12Устаревший код в ответах
Дата знаний + проверка пакетов
#13MCP не работает / отваливается
Диагностика MCP соединений
#14Бесконечный цикл правок
Переформулировать + Plan Mode
#15Secrets в коде и логах
Hooks для перехвата + .claudeignore

Детальный разбор

1
Auto-compaction + Verification Gap
Claude говорит «готово», но код неполный или неверный
Критично

При длинных сессиях CC автоматически сжимает (compact) контекст. После compaction Claude может «забыть» что конкретно должен был сделать и отрапортовать «готово» не завершив задачу. Или завершить без проверки тестами.

Особенно опасно при многошаговых задачах — compaction происходит в середине, Claude «видит» сжатое резюме вместо оригинальной задачи.

Решение

Принцип: всегда верифицируйте, не верьте на слово.

  • После любой задачи запускайте тесты командой или просите Claude: «Теперь запусти тесты и покажи полный вывод»
  • Делайте git diff и читайте изменения перед коммитом
  • Для длинных задач — разбивайте на шаги, каждый верифицируйте отдельно
  • Установите CLAUDE_CODE_AUTO_COMPACT_WINDOW=400000 в settings.json чтобы отложить compaction
2
Лимит токенов на больших проектах
Context window заполняется быстро, CC тормозит или теряет контекст
Высокий

На проектах с тысячами файлов (Laravel-монолит, Nuxt + API) CLAUDE.md и индексация съедают большую часть контекста до начала реальной работы. Ответы становятся хуже, CC начинает игнорировать части проекта.

Решение
  • .claudeignore — как .gitignore, но для CC. Исключите node_modules, vendor, storage, .git, *.log
  • Иерархия CLAUDE.md — краткий глобальный + специфичные в субдиректориях
  • Tool Search — автоматичен с CC 1.0+, схемы MCP загружаются лениво по умолчанию (~94% экономия токенов на MCP)
  • Специализированные сессии — отдельная сессия для backend, отдельная для frontend
node_modules/
vendor/
.git/
storage/logs/
*.log
*.cache
dist/
public/build/
coverage/
3
Over-engineering и усложнение
Claude пишет паттерн Repository, CQRS, DI-контейнер там, где нужна одна функция
Высокий

Claude обучен на «хороших практиках» и склонен добавлять абстракции даже когда они не нужны. Просите «добавить кнопку» — получаете компонент с interface, factory, и dependency injection.

Решение

Явно ограничивайте в задаче:

Добавь метод getUserOrders() в UserController.
НЕ создавай новых классов.
НЕ добавляй интерфейсы или абстракции.
Только прямой Eloquent запрос в существующем контроллере.

В CLAUDE.md добавьте правило: «Не вводи новые абстракции без явного запроса. Предпочитай простое решение сложному.»

4
Галлюцинации API и методов
Claude уверенно использует несуществующие методы библиотек
Высокий

Особенно часто для: малоизвестных пакетов, новых версий библиотек (Laravel 11, Nuxt 3.10+), специфических конфигов. Claude пишет $model->withAggregate() которого нет в вашей версии.

Решение
  • Для критичных методов — проверяйте в официальной документации или через grep -r "method_name" vendor/
  • Указывайте версию в задаче: «Laravel 11.28, PHP 8.3»
  • Просите Claude: «Убедись что этот метод существует в Laravel 11 перед использованием»
  • MCP с доступом к документации (context7 MCP) резко снижает галлюцинации
5
Потеря контекста в длинных сессиях
После часа работы Claude «забывает» начало разговора и делает ошибки
Высокий

Длинная сессия накапливает историю. Когда контекстное окно заполняется, CC сжимает старые сообщения. Требования из начала разговора теряются. Это явление называется Context Rot — деградация качества ответов с ростом контекста.

Решение
  • Стратегия «одна задача — одна сессия»: завершили задачу → /clear или перезапуск
  • Хорошо написанный CLAUDE.md компенсирует потерю истории — Claude перечитывает его
  • Для сложных многошаговых задач — пишите промежуточные итоги в файл (scratchpad.md) и просите Claude обращаться к нему
6
Нарушение архитектуры проекта
Claude создаёт файлы не там, не в том слое, нарушает неймспейсы
Высокий

CC не знает вашу архитектуру если её нет в CLAUDE.md. Создаёт бизнес-логику прямо в контроллерах, смешивает слои, нарушает DDD-границы.

Решение

В CLAUDE.md явно прописывайте архитектурные правила:

## Архитектура (обязательно соблюдать)
- Бизнес-логика ТОЛЬКО в app/Services/
- Контроллеры: только routing + вызов сервисов, без логики
- Репозитории в app/Repositories/ — только работа с БД
- DTO в app/DTO/ для передачи данных между слоями
- НИКОГДА не писать SQL в контроллерах
- НИКОГДА не импортировать модели напрямую в контроллерах
7
Неправильное исправление ошибок
Claude «чинит» симптом, не причину
Средний

Вместо исправления причины ошибки CC добавляет try-catch вокруг неё, заглушает исключение или меняет код в неверном месте.

Решение

Всегда давайте полный стек трейса ошибки, а не только сообщение:

Вот полный стек ошибки:
[вставьте полный стектрейс]

Файлы где происходит ошибка:
- app/Services/OrderService.php:85
- app/Repositories/OrderRepository.php:42

Найди корневую причину и исправь её.
НЕ добавляй try-catch как заглушку.
8
Дублирование кода
Claude пишет новый код вместо использования существующего
Средний
Создаёт новый UserHelper вместо использования существующего UserService.
Решение
В задаче явно ссылайтесь на существующий код: «Используй метод из app/Services/UserService.php, не создавай новый». Или скажите: «Сначала найди есть ли уже подходящий метод в codebase».
9
Сломанные импорты и пути
Созданный код не запускается из-за неверных путей импорта
Средний
Особенно в Python (relative vs absolute imports) и Nuxt (auto-imports vs ручные).
Решение
Укажите рабочую директорию в задаче. Для Python — покажите пример существующего импорта из соседнего файла. Просите Claude запустить код после написания: «Запусти и убедись что работает».
10
Игнорирование тест-файлов
Claude пишет код, не проверяя падают ли тесты
Средний
Решение
В CLAUDE.md добавьте: «После каждого изменения кода запускай php artisan test (или pytest) и покажи результат». Или явно в каждой задаче: «В конце запусти тесты».
11
Конфликты параллельных агентов
Две CC-сессии правят одни и те же файлы
Средний
Решение
Разделяйте агентов по директориям, не по типу задач. Агент 1 — только app/Services/, агент 2 — только resources/views/. Никаких пересечений. Синхронизация через git: агент 1 коммитит → агент 2 делает git pull.
12
Устаревший код в ответах
Claude использует deprecated API, старый синтаксис
Средний
Решение
В CLAUDE.md указывайте актуальные версии пакетов: «Laravel 11, PHP 8.3, Nuxt 3.13, Python 3.12». Просите Claude: «Проверь не устарел ли этот синтаксис для версии X». Для совсем новых релизов — давайте ссылку на changelog или вставляйте нужный раздел документации в промпт.
13
MCP не работает или отваливается
Claude не видит инструменты MCP, команды выдают ошибки
Средний
Решение
# Проверить доступные MCP инструменты
/mcp

# Проверить конфигурацию
claude --debug 2>&1 | grep -i mcp

# Перезапустить с явным конфигом
claude --mcp-config ~/.claude/settings.json

Частая причина: Docker-контейнер с MCP-сервером остановился. Проверьте docker ps.

14
Бесконечный цикл правок
Правите → Claude исправляет → снова не то → по кругу 5+ итераций
Средний
Решение

После 3 неудачных попыток — стоп. Сделайте следующее:

  1. /clear — сбросьте контекст
  2. Включите Plan Mode
  3. Переформулируйте задачу с нуля — конкретнее, с примером желаемого результата
  4. Если задача сложная — переключитесь на Opus

Циклы возникают когда Claude «застрял» в неверном понимании задачи. Только свежий контекст помогает.

15
Secrets в коде и запросах
Случайно передали API ключ или пароль — он попал в запрос к Anthropic
Критично

Всё что вы вводите в CC (включая содержимое файлов которые он читает) — отправляется на серверы Anthropic. На не-Enterprise тарифах эти данные могут использоваться для обучения.

Решение
  • Добавьте в .claudeignore: .env, *.key, secrets/, *.pem
  • Hook PreEdit: проверяйте файлы на наличие секретов перед редактированием
  • Никогда не вставляйте production-ключи в промпты — используйте заглушки: API_KEY=***
  • Enterprise тариф — данные не используются для обучения (с подписанным DPA)
.env
.env.*
*.key
*.pem
*.p12
secrets/
private/
credentials.json
service-account*.json
🧠
Встретили новую проблему которой нет в списке? Зафиксируйте её как правило: Руководство по захвату правил из ошибок →
Знаете все 15? Переходите к паттернам экспертов — конкретные техники которые ускоряют работу с CC в 2-5 раз.