Новости Claude

Как llama-runner подружили с Claude Code для локальных LLM

Рабочее место с двумя мониторами, терминалом и серверным оборудованием для запуска локальной языковой модели

Автор доработал свой Go-лаунчер llama-runner, чтобы он не только запускал llama-server, но и сразу открывал Claude Code с нужными настройками. Это упрощает работу с локальными моделями: меньше ручных команд, меньше ошибок с адресами, портами и флагами.

Что изменили в llama-runner

Изначально лаунчер на Go помогал запускать llama-server почти без ручной настройки: подставлял пути к моделям, проверял наличие бинарника, собирал аргументы и аккуратно завершал процессы по Ctrl+C. Но теперь ему добавили второй сценарий — запуск связки сервера и Claude Code одной командой.

В новой версии llama-runner по умолчанию ждёт, когда llama-server станет готов через проверку /health, а затем стартует Claude Code с переменными окружения для подключения к локальному серверу. При этом старый режим сохранили: если нужен только сервер, например для работы через WebUI, можно включить флаг -server и не запускать клиента.

Почему пришлось отдельно настраивать Claude Code

Проблема в том, что Claude Code изначально ждёт модели Anthropic, а локальный сервер llama.cpp таких имён не знает. Из-за этого без дополнительной настройки клиент может получать ошибку вида model not found.

Чтобы убрать ручные действия, в лаунчере сделали флаг -alias и автоподстановку значения local, если алиас не задан и не включён режим -server. Этот алиас одновременно передаётся серверу и записывается в переменные ANTHROPIC_DEFAULT_SONNET_MODEL, ANTHROPIC_DEFAULT_HAIKU_MODEL и ANTHROPIC_DEFAULT_OPUS_MODEL. В итоге Claude Code и llama-server начинают «понимать» друг друга без участия пользователя.

Как решили две неприятные ошибки

Вторая проблема оказалась визуальной: когда llama-server писал логи в тот же терминал, где работает Claude Code, интерфейс агента начинал ломаться. Решение простое и практичное — перенаправлять вывод сервера в файл. Для этого в llama-runner добавили параметры -log-file и -quiet-server, а в обычном режиме -server логи по-прежнему остаются в терминале.

Третья сложность связана с шаблоном чата Qwen 3.8. Он требует, чтобы системное сообщение шло первым, а Claude Code при повторных попытках иногда нарушает это правило. Из-за этого сервер выдаёт 500 с ошибкой Jinja. Автор предлагает заменить шаблон на исправленную версию из репозитория froggeric/Qwen-Fixed-Chat-Templates на Hugging Face и проверить файл через head, чтобы убедиться, что скачался именно Jinja-шаблон, а не HTML-заглушка.

Частые вопросы

Зачем вообще объединять llama-server и Claude Code в одном лаунчере?
Чтобы не запускать сервер и клиент отдельно и не настраивать всё вручную каждый раз. Это особенно удобно, если локальные модели используются часто и в рабочих задачах.
Что даёт флаг -server?
Он оставляет старое поведение: запускается только llama-server, без Claude Code. Это полезно, если сервер нужен для WebUI или другого клиента.
Почему нужен alias local?
Claude Code ожидает названия моделей Anthropic, а локальный сервер использует свои имена. Алиас помогает связать эти два мира и избежать ошибки model not found.
Зачем менять chat_template.jinja для Qwen?
Стандартный шаблон Qwen 3.8 ломается, если системное сообщение приходит не первым. Исправленный шаблон убирает этот конфликт и предотвращает повторяющиеся ошибки в логе.

Читайте также

Попробовать Lord GPT бесплатно →