Настройка 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.

Как включить 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, если вы все сделали правильно, то вы увидите что-то такое

Интерфейс 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

100
Loading comments…