Главная / 🔧 Решение проблем

🔧 Решение проблем

Диагностика и решение типичных проблем: context rot (деградация качества), галлюцинации, OOM, раздутые токены, зависшие MCP, бесконечные циклы правок.

🧠
Context Rot — деградация качества к концу сессии
Claude начинает делать глупые ошибки, которые в начале не делал
По мере заполнения контекстного окна (~200K токенов) Claude всё хуже обрабатывает новые запросы. Ранние инструкции "вытесняются" поздними данными. Симптомы: игнорирование правил, повторение уже исправленных ошибок, потеря нити задачи.
✅ Решение
1. Установить CLAUDE_CODE_AUTO_COMPACT_WINDOW=400000 — автоматическая компактация до достижения лимита.
2. При симптомах — выполнить /clear и начать новую сессию с чистым контекстом.
3. Перед очисткой — попросить Claude: "Выведи список изменённых файлов и незавершённых задач".
4. Использовать claude-mem MCP для сохранения прогресса между сессиями.
👻
Галлюцинации — "всё работает", но тесты не запущены
Claude утверждает что код работает, не проверив это
Claude может написать "тесты прошли" или "миграция выполнена" не запустив реальных команд. Особенно опасно при работе с БД и тестами.
✅ Решение
1. Всегда требовать реальный output: "Запусти ./vendor/bin/pest и покажи output".
2. При подозрении: "Покажи точный вывод команды, не интерпретацию".
3. Использовать /verification skill из superpowers — он заставляет Claude проверять реальное состояние.
4. Добавить в CLAUDE.md: "При буксовании — запусти тесты и покажи output перед тем как говорить что готово".
💸
Token Inflation — раздутые ответы, высокая стоимость
Claude пишет многостраничные объяснения вместо кода
Без ограничений Claude склонен к избыточным объяснениям, повторению того что уже сделано, многословным докстрингам. Это увеличивает стоимость и засоряет контекст.
✅ Решение
1. В CLAUDE.md: "Отвечай кратко. Без завершающего резюме. Без объяснения что ты сделал — пользователь сам прочитает diff".
2. Включить MCP_TOOL_SEARCH=1 — MCP схемы загружаются по требованию, не все сразу.
3. Переключаться на Haiku для простых задач (rename, format): /model haiku.
4. Использовать Plan Mode для сложных задач — Claude думает эффективнее в плановом режиме.
💀
OOM — контейнеры умирают при ETL
Exit code 137 в логах Docker
PostgreSQL или Python ETL-контейнер убивается OOM killer. Симптомы: контейнер перезапускается сам, Exit code 137 в логах, запросы к БД зависают.
✅ Решение
1. Проверить логи:
mcp__docker__docker_container_logs({ container: "db-1", tail: 50 })

2. Снизить PostgreSQL параметры:
ALTER SYSTEM SET shared_buffers = '4GB';
ALTER SYSTEM SET max_parallel_workers_per_gather = '1';
SELECT pg_reload_conf();

3. WSL2 память: проверить C:\Users\..\.wslconfig — memory должна быть 38GB

4. Добавить батчинг в ETL: не более 10K строк за транзакцию
🔄
Бесконечный цикл правок — Claude не может исправить баг
Попытка 4, 5, 6... и всё равно не работает
Claude входит в петлю: исправляет один баг → появляется другой → исправляет → первый возвращается. Или Claude делает всё более сложные попытки вместо простого решения.
✅ Решение
1. После 2 неудачных попыток: /clear + переформулировать проблему с нуля.
2. Дать больше контекста: "Покажу тебе полный стек трейс" + вставить реальный error output.
3. Сузить задачу: "Реализуй ТОЛЬКО функцию X. Не трогай Y и Z. После — git diff покажу сам".
4. Использовать /debugging skill — структурированный процесс отладки через гипотезы.
5. Переключиться на Opus для сложных логических проблем: /model opus.

🔌 Типичные проблемы MCP

СимптомВероятная причинаРешение
MCP не запускается при старте uvx или npx не найден where uvx в PowerShell. Установить uv: pip install uv
laravel-boost timeout Контейнер не запущен Проверить: mcp__docker__docker_list_containers
postgres-mcp: "connection refused" Неправильный host/port Использовать host.docker.internal:5432 (не localhost)
MCP инструменты не появляются MCP_TOOL_SEARCH=1 сбрасывает схемы Использовать ToolSearch для явной загрузки нужных инструментов
claude-mem данные потеряны База claude-mem сбросилась claude-mem хранит в ~/.claude/claude-mem.db — проверить
chrome-devtools не видит браузер Chrome не запущен с debug портом Запустить Chrome: chrome --remote-debugging-port=9222

🚨 Экстренные команды

// Принудительная компактация контекста: // /compact (команда в Claude Code) // Сброс сессии Claude Code: // /clear // Просмотр текущего использования токенов: // /tokens // Смена модели на лету: // /model sonnet (экономия в 5x vs Opus) // /model haiku (для простых задач в 20x) // /model opus (для сложных задач) // При зависании Docker контейнера: mcp__docker__docker_restart_container({ container: "backend-1" }) // Проверить RAM контейнера: mcp__docker__docker_container_stats({ container: "backend-1" }) // WSL2 полный сброс (только в PowerShell, вне Claude): // wsl --shutdown // (потом перезапустить Docker Desktop)

📊 Топ-15 реальных проблем больших проектов

Сводка из тысяч реальных кейсов: GitHub Issues anthropics/claude-code, Reddit, HackerNews, аудит AMD (6852 сессии) — март–май 2026.

#ПроблемаСимптомыЧастота
1 Auto-compaction уничтожает контекст После сжатия Claude забывает переменные, переписывает тесты; «infinite compaction loop» HIGH
2 Quality regression Visible thinking упал на 73% (янв→мар 2026); files-read-before-edit с 6.6 до 2.0; full-file rewrites удвоились HIGH
3 Verification gap «100% successful» при сломанном коде; переписывает падающие тесты; фабрикует tool output HIGH
4 Destructive git без подтверждения git reset --hard, force-push поверх remote, checkout без предупреждения HIGH
5 Лимиты сгорают за 1–2 дня Opus 4.7 жжёт ~35% больше токенов из-за tokenizer inflation; 20+ MCP = 67k токенов до первой команды HIGH
6 Wrong file в монорепо Патчит ui/ вместо ui-kit/; импорты из неправильного пакета HIGH
7 Subagents фабрикуют результаты Сжимает 6100 токенов в 420-token summary, дропая критическое HIGH
8 Over-engineering «Add OTP» → 12-file framework; добавляет Dashboard/Team/Settings которых не просили HIGH
9 Plan mode игнорируется Стоп после 30% TODO с рапортом «complete»; начинает редактировать вопреки plan mode MED
10 MCP падает «Method not found -32601», race condition, transport closes до возврата MED
11 Cache TTL регрессия TTL silently 1h→5m в марте 2026; cache_creation inflation +20K токенов/turn MED
12 Context limit при 27% Reserved buffer ел 33–45K токенов скрыто от пользователя MED
13 CLAUDE.md хрупкий Обрезается на 200 строк / 25KB без предупреждения; не авто-записывает решения MED
14 Безопасность: prompt injection CVE-2026-35021 (RCE через метасимволы), CVE-2026-21852 (API key via ANTHROPIC_BASE_URL) MED
15 Hallucinated APIs Изобретает несуществующие функции; конкретные числа без верификации MED
📊
Источник данных: GitHub Issues anthropics/claude-code, аудит AMD (6852 сессии, Stella Laurenzo), блоги экспертов: Boris Cherny, Geoffrey Huntley, Armin Ronacher, Mitchell Hashimoto, Steve Yegge, Harper Reed. Период: март–май 2026.

Решения для самых частых проблем

🔄
Auto-compaction + Verification gap (#1, #3)
Claude «забывает» и «лжёт» об успехе
Верификация реальными командами
Всегда требуйте реальный output: ./vendor/bin/pest, pytest -v, npm test. Никогда не доверяйте «100% successful» без proof. «Never trust AI when it reports tests passing without independent verification» — Steve Yegge.
Отключить auto-compact или повысить порог
Установите CLAUDE_CODE_AUTO_COMPACT_WINDOW=400000 в settings.json env. Перед compaction вручную записывайте ключевые переменные в CLAUDE.md текущей сессии.
💸
Лимиты токенов сгорают (#5)
20+ MCP = 67k токенов до первой команды
MCP_TOOL_SEARCH=1 и минимальный набор MCP
Включите MCP_TOOL_SEARCH=1 в env — экономит 47–95% токенов на схемах MCP. Держите не более 5–7 MCP. Стек-специфичные MCP — только в проектном .mcp.json, не глобально.
Sonnet по умолчанию, Opus только для планирования
Opus 4.7 в 5× дороже Sonnet при сопоставимом качестве для большинства задач. Используйте Opus только в /brainstorm и plan phase.
💣
Over-engineering (#8)
«Добавь кнопку» → 12 новых файлов
Скоуп в промпте обязателен
Всегда добавляйте: «Реализуй ТОЛЬКО [функцию/компонент]. Не добавляй [то/то]. Без рефакторинга вокруг.» Пишите в CLAUDE.md: «YAGNI строго. Спрашивай перед добавлением функциональности сверх запрошенной.»

💬 Правила эффективного prompting

СитуацияПлохоХорошо
Новая задача "Добавь платежи" "Добавь Stripe платежи для подписок. Только бэкенд (Laravel Service + Controller). Без frontend пока."
Баг "Почини ошибку" "Получаю 500 ошибку при POST /api/payments. Вот стек трейс: [вставить]. Функция в PaymentService::create."
Ограничение (ничего) "Реализуй ТОЛЬКО функцию store() в PaymentController. Не трогай Service и Migration."
Проверка "Работает?" "Запусти ./vendor/bin/pest tests/Feature/PaymentTest.php и покажи реальный output."
Claude буксует Продолжить давить /clear + начать с другого угла + дать больше контекста
Главное правило: если Claude дважды дал неправильный ответ — это не проблема Claude, это проблема формулировки задачи. Переформулируй с большим контекстом и меньшей областью задачи.