🔥 Топ-15 реальных проблем
Настоящие проблемы из практики использования CC — с конкретными решениями. Не теория, а боль и лечение.
Быстрый справочник
Детальный разбор
При длинных сессиях CC автоматически сжимает (compact) контекст. После compaction Claude может «забыть» что конкретно должен был сделать и отрапортовать «готово» не завершив задачу. Или завершить без проверки тестами.
Особенно опасно при многошаговых задачах — compaction происходит в середине, Claude «видит» сжатое резюме вместо оригинальной задачи.
Принцип: всегда верифицируйте, не верьте на слово.
- После любой задачи запускайте тесты командой или просите Claude: «Теперь запусти тесты и покажи полный вывод»
- Делайте
git diffи читайте изменения перед коммитом - Для длинных задач — разбивайте на шаги, каждый верифицируйте отдельно
- Установите
CLAUDE_CODE_AUTO_COMPACT_WINDOW=400000в settings.json чтобы отложить compaction
На проектах с тысячами файлов (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/
Claude обучен на «хороших практиках» и склонен добавлять абстракции даже когда они не нужны. Просите «добавить кнопку» — получаете компонент с interface, factory, и dependency injection.
Явно ограничивайте в задаче:
Добавь метод getUserOrders() в UserController.
НЕ создавай новых классов.
НЕ добавляй интерфейсы или абстракции.
Только прямой Eloquent запрос в существующем контроллере.
В CLAUDE.md добавьте правило: «Не вводи новые абстракции без явного запроса. Предпочитай простое решение сложному.»
Особенно часто для: малоизвестных пакетов, новых версий библиотек (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) резко снижает галлюцинации
Длинная сессия накапливает историю. Когда контекстное окно заполняется, CC сжимает старые сообщения. Требования из начала разговора теряются. Это явление называется Context Rot — деградация качества ответов с ростом контекста.
- Стратегия «одна задача — одна сессия»: завершили задачу → /clear или перезапуск
- Хорошо написанный CLAUDE.md компенсирует потерю истории — Claude перечитывает его
- Для сложных многошаговых задач — пишите промежуточные итоги в файл (scratchpad.md) и просите Claude обращаться к нему
CC не знает вашу архитектуру если её нет в CLAUDE.md. Создаёт бизнес-логику прямо в контроллерах, смешивает слои, нарушает DDD-границы.
В CLAUDE.md явно прописывайте архитектурные правила:
## Архитектура (обязательно соблюдать)
- Бизнес-логика ТОЛЬКО в app/Services/
- Контроллеры: только routing + вызов сервисов, без логики
- Репозитории в app/Repositories/ — только работа с БД
- DTO в app/DTO/ для передачи данных между слоями
- НИКОГДА не писать SQL в контроллерах
- НИКОГДА не импортировать модели напрямую в контроллерах
Вместо исправления причины ошибки CC добавляет try-catch вокруг неё, заглушает исключение или меняет код в неверном месте.
Всегда давайте полный стек трейса ошибки, а не только сообщение:
Вот полный стек ошибки:
[вставьте полный стектрейс]
Файлы где происходит ошибка:
- app/Services/OrderService.php:85
- app/Repositories/OrderRepository.php:42
Найди корневую причину и исправь её.
НЕ добавляй try-catch как заглушку.
# Проверить доступные MCP инструменты
/mcp
# Проверить конфигурацию
claude --debug 2>&1 | grep -i mcp
# Перезапустить с явным конфигом
claude --mcp-config ~/.claude/settings.json
Частая причина: Docker-контейнер с MCP-сервером остановился. Проверьте docker ps.
После 3 неудачных попыток — стоп. Сделайте следующее:
/clear— сбросьте контекст- Включите Plan Mode
- Переформулируйте задачу с нуля — конкретнее, с примером желаемого результата
- Если задача сложная — переключитесь на Opus
Циклы возникают когда Claude «застрял» в неверном понимании задачи. Только свежий контекст помогает.
Всё что вы вводите в 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