Claude Code и Ollama: настройка локальной модели за 3 минуты

Материал основан на разборе dev.to. Ниже — главное и практические шаги, которые можно быстро применить в работе.


В какой-то момент я заметил, что значительная часть ежедневных запросов к Claude Code уходит не на сложную архитектуру, а на рутину: объяснить ошибку, подсказать правку теста, переименовать переменные, проверить SQL. Эти задачи важны, но не всегда оправдывают облачный вызов.

При этом на моей машине уже работала Ollama с локальной моделью qwen2.5-coder, и по скорости она закрывала именно такой класс задач. Проблема была в другом: CLI-инструменты вроде Claude Code, Codex CLI и Gemini CLI не умеют «видеть» локальную модель сами по себе, потому что говорят на разных протоколах.

Поэтому задача свелась не к запуску Ollama как таковому, а к нормальной маршрутизации запросов между облаком и локальной моделью без постоянной ручной перенастройки.

Знаете, я тоже недавно развернул Codex локально на своем компьютере. Это значительно упростило мою работу с ИИ, и я рекомендую вам ознакомиться с этой статьей: Сегодня развернул Codex локально на Mac.

Почему Claude Code не видит Ollama: проблема протоколов

Claude Code использует протокол Anthropic, Codex CLI работает с протоколом OpenAI, Gemini CLI использует протокол Google, а Ollama предлагает свой собственный протокол, а также совместимый с OpenAI API-эндпоинт

Основная задача заключается не в том, может ли Ollama решать задачи, а в том, как организовать взаимодействие инструментов с ним без необходимости постоянной перенастройки конфигурации при смене режима на локальный или облачный

Именно это я решал последнюю неделю — и теперь выпустил решение как часть CliGate.

Как это работает

CliGate — это локальный прокси, который уже обрабатывает маршрутизацию Claude Code, Codex CLI и Gemini CLI к облачным провайдерам. Новая поддержка локальных моделей добавляет Ollama как полноценную цель маршрутизации наряду с OpenAI, Anthropic и Google.

Когда маршрутизация на локальные модели включена, CliGate перехватывает запросы от CLI-инструментов и — в зависимости от конфигурации — отправляет их в Ollama вместо облака. Трансляция протоколов происходит на уровне прокси: запрос Claude Code в формате Anthropic адаптируется под то, что ожидает Ollama, а ответ адаптируется обратно

Инструмент никогда не замечает разницы

Ollama настройка с Claude Code через CliGate

Шаг 1 — Убедитесь, что Ollama запущен с моделью

ollama run qwen2.5-coder:7b

Или любая другая модель по вашему выбору. CliGate автоматически обнаруживает всё загруженное.

# Проверьте доступность Ollama
curl http://localhost:11434/api/version
# {"version":"0.6.x"}

Шаг 2 — Запустите CliGate

npx cligate@latest start

Панель управления открывается по адресу http://localhost:8081.

Шаг 3 — Добавьте ваш экземпляр Ollama

Перейдите в Settings → Local Models. Добавьте URL вашего Ollama:

http://localhost:11434

CliGate выполняет проверку работоспособности, а затем получает список моделей через /v1/models. Загруженные модели появятся автоматически — без ручного ввода.

Шаг 4 — Включите локальную маршрутизацию

Чтобы активировать локальную маршрутизацию, включите соответствующий переключатель. С этого момента все запросы, которые изначально должны были отправляться к облачному провайдеру, сначала будут проверять локальные модели.

Также можно настроить это для каждого приложения отдельно. Например:

  • Claude Code → qwen2.5-coder:7b (ваша локальная модель для кодирования)
  • Codex CLI → облако (когда нужен полный функционал)
  • Gemini CLI → облако

Никакой возни с ANTHROPIC_BASE_URL. Никакого повторного экспорта переменных окружения. Один переключатель в панели управления.

Шаг 5 — Протестируйте

Перейдите на вкладку Chat, выберите «Local Model» в качестве источника и отправьте сообщение. Если ответ пришёл — маршрутизация работает. Затем перейдите в терминал и используйте Claude Code как обычно — прокси сделает всё остальное.

То, что меня удивило при реализации

Я ожидал, что базовая маршрутизация окажется самой сложной частью. Это было не так

Настоящей проблемой оказалась потоковая передача ответов: Claude Code ожидает их в формате SSE (Server-Sent Events), тогда как Ollama использует совершенно другой формат

На уровне прокси я добавил специальный SSE-мост, который последовательно извлекает поток Ollama и преобразует его в ожидаемый формат для запрашивающего инструмента

Схема работает так: Claude Code отправляет POST-запрос на /v1/messages в формате Anthropic, прокси CliGate определяет необходимость локальной маршрутизации и перенаправляет запрос в Ollama. Ответ затем преобразуется в формат, подходящий для Claude Code, который получает стандартный потоковый ответ

Та же схема работает для Codex CLI (формат OpenAI Responses) и любого другого инструмента, который вы маршрутизируете через прокси

Лучшие локальные модели для кодинга: когда использовать вместо облака

Я не предлагаю заменять GPT-4 или Claude Sonnet локальной моделью на 7B. Разница в возможностях реальна.

Но многое из того, для чего я фактически использую Claude Code в обычный рабочий день, не требует лучшей модели:

  • «Что означает этот стектрейс?»
  • «Сгенерируй юнит-тест для этой функции»
  • «Переименуй эти переменные, чтобы они были более описательными»
  • «Этот SQL-запрос выглядит правильно?»

Для таких задач qwen2.5-coder:7b работает быстро, достаточно точно и бесплатно. Сохранение облачных вызовов для более сложных задач — сложных рефакторингов, архитектурных вопросов, изменений в нескольких файлах — значительно снижает ежемесячный счёт за API без изменения рабочего процесса

Переключатель в CliGate позволяет легко вернуться к облаку, когда это необходимо

Когда локальная маршрутизация особенно полезна

На практике лучший сценарий такой: локальная модель забирает дешёвые и короткие запросы, а облако остаётся для сложной reasoning-нагрузки. Это особенно удобно в командах, где CLI-инструменты используются десятки раз в день и счёт складывается именно из мелких вызовов, а не из одного-двух больших сеансов.

Такой режим даёт ещё один плюс: вы не меняете привычки разработчика. Он продолжает работать через тот же Claude Code, тот же Codex CLI и те же команды, а решение о том, куда отправить запрос, принимает прокси. Именно это и делает схему практичной, а не демонстрационной.

Если упростить до одного правила, оно звучит так: локальные модели хороши для потока, облачные — для предельной точности. Когда эта граница оформлена в настройках прокси, а не держится в голове у каждого разработчика, стоимость падает, а рабочий процесс остаётся предсказуемым.

Типичные ошибки при подключении Claude Code к локальным моделям

Несколько граблей, на которые легко наступить при первом запуске.

Ollama не запущен в момент старта CliGate. Прокси не найдёт эндпоинт при проверке работоспособности и не добавит модели в список. Решение простое: сначала запустите ollama run <модель>, убедитесь, что curl http://localhost:11434/api/version возвращает версию, и только потом стартуйте CliGate.

Модель не загружена заранее. Если модель не была запущена хотя бы один раз, она не появится в /v1/models. Достаточно один раз выполнить ollama run qwen2.5-coder:7b — после этого модель будет доступна для маршрутизации.

Переключатель «Local Model Routing» остался выключен. Это самая частая причина, по которой запросы продолжают уходить в облако. Проверьте панель управления на http://localhost:8081 — переключатель должен быть активен.

Конфликт портов. Если порт 8081 занят другим процессом, CliGate не запустится. В этом случае проверьте, что занимает порт, и освободите его перед запуском прокси.

Часто задаваемые вопросы по Claude Code и Ollama

Можно ли использовать CliGate с моделями, отличными от qwen2.5-coder? Да. CliGate автоматически обнаруживает все модели, загруженные в Ollama. Подойдёт любая модель, которую вы запустили через ollama run — llama3, mistral, deepseek-coder и другие.

Нужно ли менять конфигурацию Claude Code или Codex CLI вручную? Нет. CliGate работает как прозрачный прокси: ваши инструменты продолжают обращаться к нему как обычно, а маршрутизация на Ollama или облако происходит внутри прокси без изменения настроек самих инструментов.

Что происходит, если Ollama недоступен в момент запроса? Если локальная модель недоступна, запрос не выполнится с ошибкой соединения. Автоматического фолбэка (резервного переключения) на облако нет — это нужно учитывать при настройке маршрутизации для критичных задач.

Насколько заметна разница в качестве ответов между локальной 7B-моделью и облачным Claude Sonnet? Для простых задач — объяснение ошибок, генерация юнит-тестов, переименование переменных — разница минимальна. Для сложных многофайловых рефакторингов и архитектурных решений облачные модели заметно точнее. Оптимальная стратегия: локальная модель для рутины, облако для сложных задач.

Работает ли CliGate на Windows? CliGate запускается через npx, что означает совместимость с любой платформой, где установлен Node.js, включая Windows. Ollama также поддерживает Windows начиная с версии 0.1.x.

Оцените статью
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x