Настройка Claude Code для работы с локальными LLM
Claude Code - прекрасный (субъективно для меня) агент, но сам я его редко использовал с локальными модельками потому что он сильно перегружал их. Теперь же можно сделать так чтобы он спокойно работал с моделькой запущенной прямо на вашем маке (в моем случае на моей видюхе).
В этом посте не будет гайдов по оптимизации tg/pp. Я учитываю, что вас устраивает ваша текущая скорость, и наша задача сделать так чтобы эти скорости работали так же хорошо, только в Claude Code
Prompt caching, технология которая спасает наши деньги в API, и время в локальных моделях
Схема работы технологии Prompt caching и инвалидации кеша
Prompt caching - технология которая позволяет сохранять токены чтобы не тратить ресурсы на пересчет старых токенов которые уже были отправлены прошлым запросом. Цены на чтение из кеша у облачных провайдеров гораздо меньше (0.25x от цены входа), а при запуске модели на своем железе это экономит электричество и время.
Что такое инвалидация кеша
Допустим, вы изменили часть системного промпта или сообщение в самом начале контекста (см рис выше, Turn 4). Конечно, в кеше такого промпта нет, нам нужно считать его заново. Т.е
[системный промпт][контекст проекта][сообщения и инструменты]
[новый системный промпт][старый контекст проекта][старые сообщения и инструменты] <- их мы тоже пересчитываем
Мы не можем выборочно сказать модели: “вот этот кусок пересчитай, а вот этот возьми из кеша”. Если изменился ранний префикс, пересчитывать придется и всё, что идет после него. Так что такое изменение заставит API выкатить вам не самый приятный ценник (ну или нагрузит ваше железо на ближайший час).
Какие действия в Claude Code инвалидируют кеш?
- Переключение моделей
- Изменение effort (/effort)
- Включение быстрого режима
- Подключение или отключение MCP-сервера
- Включение или отключение плагина
- Запрет инструмента
- Компакт сессии
- Обновление Claude Code
Как включить prompt cache в llama.cpp (на всякий случай)
Prompt caching включен по умолчанию, но я советую настроить его под себя
--cache-ram 32768 \ # Выделяете сколько вам нужно (в MiB), у меня расчет такой: 43mb ram на 1k токенов
-ctxcp 128 \ # количество чекпоинтов на слот, дефолт 32
Настройка chat template
Некоторые модели несовместимы с Claude Code из коробки. Например их шаблон чата запрещает вставлять системные сообщения посередине контекста (ChatML строго требует чередование user/assistant), так что нам надо использовать совместимый chat template.
- froggeric (Этот у меня не взлетел)
- Мой темплейт (Этот я проверял, и он у меня работает)
Как включить chat template в llama.cpp
--jinja
--chat-template-file /path/to/your/chat_template.jinja
Настройка Claude Code
После установки Claude Code для вашей платформы, в ~/.claude/settings.json вставьте это (можно удалить то что там будет, если вы уверены что это не важные настройки по типу темы и стиля ответа)
{
"env": {
"ANTHROPIC_AUTH_TOKEN": "sk-null", # api key если устанавливали
"ANTHROPIC_BASE_URL": "http://localhost:8000/", # base url
"ANTHROPIC_DEFAULT_OPUS_MODEL": "Ornith-35b", # ваша модель
"ANTHROPIC_DEFAULT_SONNET_MODEL": "Ornith-35b",
"ANTHROPIC_DEFAULT_HAIKU_MODEL": "Ornith-35b",
"CLAUDE_AUTOCOMPACT_PCT_OVERRIDE": "262144", # ваш контекст
"CLAUDE_CODE_ENABLE_TELEMETRY": "0",
"CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1",
"CLAUDE_CODE_ATTRIBUTION_HEADER" : "0"
},
"attribution": {
"commit": "",
"pr": ""
},
"promptSuggestionEnabled": false,
"skipWebFetchPreflight": true,
"skipDangerousModePermissionPrompt": true,
"skipWorkflowUsageWarning": true
}
Ключевая деталь здесь — параметр CLAUDE_CODE_ATTRIBUTION_HEADER. Attribution header - строка которая добавляется в системный промпт и меняется каждое сообщение, инвалидируя кеш.
Запустите Claude Code, если вы все сделали правильно, то вы увидите что-то такое
Все готово! Попробуйте отправить пару запросов и увидеть в логах llama.cpp строки об использовании кеша
логи llama.cpp с подтверждением работы кеша
Использована информация из:
https://code.claude.com/docs/en/prompt-caching
https://unsloth.ai/docs/basics/claude-code#fixing-90-slower-inference-in-claude-code
(Личный опыт)
Готов помочь всем, у кого в процессе настройки что-то не получилось
Posted Jul 6, 2026, 8:55 AM UTC