# Локальный LLM-агент для кода: Ollama и LM Studio

URL: https://agentvera.dev/ru/blog/local-llm-coding-agent/ · Опубликовано: 2026-10-23

Локальный LLM-агент для кода на Ollama или LM Studio: какие CLI работают с локальными эндпоинтами, нужное железо, приватность, компромиссы и гибридная схема.

**Коротко:**

- Ollama отдаёт OpenAI-совместимый API на localhost:11434, а LM Studio на 127.0.0.1:1234; на них можно направить кодинг-CLI вроде Codex, opencode, Aider, Goose, Qwen Code и Crush.
- Контекст Ollama по умолчанию — 4k токенов при VRAM меньше 24 GiB, а лишнее молча отбрасывается, поэтому поднимайте его через OLLAMA_CONTEXT_LENGTH; для Codex Ollama просит минимум 64k.
- Локальные модели оставляют код на вашей машине и не берут плату за токены, но медленнее и слабее в задачах на несколько файлов, поэтому чаще всего лучше работает гибрид с облачной моделью.

Локальный LLM-агент для кода — это кодинг-CLI, например opencode, Aider, Goose, Qwen Code, Crush или Codex, направленный не на облачный API, а на модель, которая работает на вашей машине через Ollama или LM Studio. Вы запускаете локальный сервер (Ollama слушает `http://localhost:11434`, LM Studio — `http://127.0.0.1:1234`), выбираете модель с поддержкой вызова инструментов, поднимаете длину контекста заметно выше значения по умолчанию и указываете CLI этот эндпоинт. Это работает, код остаётся у вас, а за токены ничего платить не нужно. Но такой агент медленнее и слабее лучших облачных моделей, поэтому большинство в итоге приходит к гибридной схеме.

## Что здесь на самом деле значит «локально»

[Кодинг-агент](/ru/glossary/coding-agent/ "Кодинг-агент") состоит из двух частей: CLI, который читает файлы, запускает команды и правит код, и модели, которая решает, что делать дальше. Переход на локальный вариант заменяет только вторую часть. CLI выполняет тот же цикл, просто отправляет запросы на сервер на `localhost`, а не в API провайдера.

Оба распространённых локальных сервера понимают OpenAI-совместимый API:

| Сервер | Адрес по умолчанию | Как запустить |
| --- | --- | --- |
| Ollama | `http://localhost:11434/v1` | Приложение Ollama или `ollama serve` |
| LM Studio | `http://127.0.0.1:1234/v1` | Вкладка Developer → «Start server» или `lms server start` |

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

## Настройка, которую все упускают: длина контекста

Прежде чем выбирать CLI, исправьте это. Агенты отправляют много контекста: системный промпт, описания инструментов, содержимое файлов и вывод команд. Локальный сервер с маленьким окном тихо отрежет большую часть.

[Контекстное окно](/ru/glossary/context-window/ "Контекстное окно") Ollama по умолчанию зависит от VRAM: 4k токенов при памяти меньше 24 GiB, 32k от 24 до 48 GiB и 256k при 48 GiB и больше. В документации Aider добавлено, что Ollama молча отбрасывает контекст, не помещающийся в окно. В документации Goose значение по умолчанию в 4096 токенов названо слишком низким, а в собственном руководстве Ollama по Codex просят не меньше 64k.

Увеличьте его при запуске сервера и проверьте:

```bash
OLLAMA_CONTEXT_LENGTH=64000 ollama serve
ollama ps   # CONTEXT column shows the allocated length
```

В приложении Ollama в настройках есть ползунок длины контекста, который делает то же самое. Если `ollama ps` показывает в столбце `PROCESSOR`, что модель частично на CPU, значит, контекст или модель слишком велики для вашего GPU, и всё будет работать медленнее.

## Какие CLI поддерживают локальные модели

Ниже то, что подтверждает документация каждого инструмента. Мы перечисляем только те конфигурации, которые смогли проверить.

| CLI | Локальный путь | Где настраивается |
| --- | --- | --- |
| Codex | `--oss` с Ollama или LM Studio | Флаг или `oss_provider` в `config.toml` |
| opencode | Любой OpenAI-совместимый провайдер | Раздел `provider` в `opencode.json` |
| Aider | `ollama_chat/<model>` или `openai/<model>` | Переменные окружения |
| Goose | Ollama, LM Studio и другие провайдеры | `goose configure` |
| Qwen Code | Любой OpenAI-совместимый эндпоинт | Переменные `OPENAI_*` или `~/.qwen/settings.json` |
| Crush | Типы провайдеров `ollama` и `lmstudio` | Его конфиг провайдеров |

### Codex

У [Codex](/ru/agents/codex/ "Codex CLI") самый короткий путь. По его документации, он может работать с локальным «open source»-провайдером, например Ollama или LM Studio, если передать `--oss`:

```bash
codex --oss                     # default local model
codex --oss -m gpt-oss:120b     # a specific model
```

Провайдер по умолчанию задаётся в `~/.codex/config.toml` через `oss_provider = "ollama"` (или `"lmstudio"`). У Ollama также есть `ollama launch codex`, который настраивает профиль за вас. Внутри Codex команда `/model` переключает установленные модели с поддержкой инструментов.

### opencode

[opencode](/ru/agents/opencode/ "opencode") принимает любой OpenAI-совместимый сервер как собственного провайдера в `opencode.json`:

```json
{
  "$schema": "https://opencode.ai/config.json",
  "provider": {
    "ollama": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "Ollama (local)",
      "options": { "baseURL": "http://localhost:11434/v1" },
      "models": { "qwen3": { "name": "Qwen3 (local)" } }
    }
  }
}
```

Для LM Studio используйте `http://127.0.0.1:1234/v1` как базовый URL и идентификатор модели, показанный в LM Studio. В документации opencode есть полезный совет: если вызовы инструментов не работают, увеличьте `num_ctx` в Ollama, начиная примерно с 16k–32k.

### Aider

[Aider](/ru/agents/aider/ "Aider") работает с Ollama напрямую. В его документации рекомендуется префикс `ollama_chat/`:

```bash
export OLLAMA_API_BASE=http://127.0.0.1:11434
aider --model ollama_chat/<model>
```

Для LM Studio или любого другого OpenAI-совместимого сервера задайте `OPENAI_API_BASE` и `OPENAI_API_KEY`, затем используйте `aider --model openai/<model-name>`. Фиксированный размер контекста записывается в `.aider.model.settings.yml` как `num_ctx` в разделе `extra_params`.

### Goose

[Goose](/ru/agents/goose/ "Goose") называет Ollama и LM Studio среди провайдеров. Выполните `goose configure`, выберите Ollama и введите имя модели. Он использует `localhost:11434`, если `OLLAMA_HOST` не указывает иное; LM Studio по умолчанию — `localhost:1234` без API-ключа. В документации Goose главное ограничение названо прямо: он активно использует вызов инструментов, поэтому модель без него может только вести чат.

### Qwen Code

[Qwen Code](/ru/agents/qwen-code/ "Qwen Code") поддерживает любой OpenAI-совместимый эндпоинт, а в его README локальные модели упомянуты через Ollama или vLLM. Направьте стандартные переменные на свой сервер:

```bash
export OPENAI_BASE_URL=http://localhost:11434/v1
export OPENAI_API_KEY=ollama   # any placeholder for a local server
export OPENAI_MODEL=<model>
qwen
```

То же можно хранить в `~/.qwen/settings.json` в разделе `modelProviders` или настроить интерактивно командой `/auth`.

### Crush

Crush поддерживает `ollama` и `lmstudio` как типы провайдеров. В его README Ollama добавляется с базовым URL `http://localhost:11434/v1`. Модель выбирается внутри Crush по `Ctrl+L`.

## Если локальный агент ведёт себя странно

Большинство проблем с локальным кодинг-агентом сводится к нескольким причинам. Проверяйте их по порядку:

- **Он забывает файлы или инструкции посреди задачи.** Контекст слишком мал, и сервер его обрезает. Увеличьте `OLLAMA_CONTEXT_LENGTH` (или `num_ctx`) и убедитесь через `ollama ps`.
- **Вызовы инструментов падают или приходят обычным текстом.** Возможно, модель не поддерживает вызов инструментов или контекста не хватает на описания инструментов. Попробуйте модель с поддержкой инструментов и окно побольше; в документации opencode советуют начинать примерно с 16k–32k.
- **CLI пишет, что модели не существует.** Имя в CLI должно точно совпадать с идентификатором сервера: тег из `ollama list` или идентификатор на панели сервера в LM Studio.
- **Connection refused.** Сервер не запущен, или CLI ждёт другой адрес. У Ollama это `11434`, у LM Studio `1234`, и некоторым CLI нужен суффикс `/v1`, а у `OLLAMA_API_BASE` в Aider его нет.
- **Всё очень медленно.** Модель или контекст не помещаются на GPU. `ollama ps` показывает долю CPU; выберите модель поменьше или более короткий контекст.

## Реалии железа

Здесь ожидания обычно и разбиваются. Локальный кодинг-агент — задача тяжелее, чем локальный чат:

- **Модель должна помещаться в память.** VRAM видеокарты на ПК, унифицированная память на Apple Silicon. Если не помещается, слои уходят на CPU, и генерация резко замедляется.
- **Контекст тоже занимает память.** Окно в 64k поверх весов модели требует гораздо больше места, чем чат на 4k. Поэтому Ollama и привязывает длину контекста по умолчанию к VRAM.
- **Маленьким моделям тяжело с инструментами.** Агентам нужны надёжные вызовы инструментов и умение следовать длинному системному промпту. Маленькие модели часто выдают некорректные вызовы, зацикливаются или останавливаются раньше времени. В Goose отмечают, что некоторые модели, например нативная DeepSeek-R1, вообще не поддерживают вызов инструментов.
- **Скорость накапливается.** Агент делает на задачу много запросов, каждый с большим промптом. Модель, которая в чате кажется нормальной, может растянуть десятишаговую задачу надолго.

Практичный способ начать: возьмите самую большую кодинговую модель с поддержкой инструментов, которая целиком помещается на ваш GPU при контексте от 32k до 64k, проверьте через `ollama ps` и испытайте на небольшой реальной задаче, прежде чем доверять ей что-то серьёзнее.

## Зачем идти в локальный режим: приватность и контроль

Главная причина в том, что инференс остаётся на вашей машине:

- Ваши промпты и код не отправляются провайдеру модели.
- Всё работает офлайн и в изолированных (air-gapped) средах.
- Нет счетов за токены и лимитов использования, о которые можно удариться.
- Модель не меняется у вас под руками; вы сами решаете, когда обновляться.

Две оговорки, чтобы не лукавить. Во-первых, CLI всё равно может ходить в сеть: у Codex с профилем запуска от Ollama есть веб-поиск, а у некоторых CLI есть телеметрия. Если ничто не должно покидать машину, проверьте настройки каждого инструмента. Во-вторых, локальный запуск не делает самого агента безопаснее. Он по-прежнему запускает команды и правит файлы, поэтому действуют обычные [практики безопасности кодинг-агентов](/ru/blog/ai-coding-agent-security/ "Безопасность ИИ-агентов для кода").

## Компромиссы по сравнению с облачными моделями

| | Локальная модель | Облачная топ-модель |
| --- | --- | --- |
| Код покидает машину | Нет | Да, уходит провайдеру |
| Стоимость | Железо и электричество | За токены или по подписке |
| Лимиты использования | Нет | Зависят от тарифа |
| Качество на сложных задачах из нескольких файлов | Ниже, зависит от размера модели | Лучшее из доступного |
| Надёжность вызовов инструментов | Зависит от модели | Высокая |
| Контекстное окно | Ограничено вашей памятью | Очень большое |
| Скорость | Зависит от вашего железа | Быстро и стабильно |

Разрыв меньше всего на ограниченных задачах: написать тест, объяснить функцию, небольшой рефакторинг, сообщение коммита. Больше всего он на длинной многошаговой работе с множеством файлов, где агент должен держать план и исправлять собственные ошибки.

## Гибридная схема, которая работает

Разделение обычно работает лучше, чем «всё или ничего»:

1. **Чувствительная или офлайн-работа идёт локально.** Код, который не должен покидать машину, клиентские репозитории со строгими условиями, работа в самолёте.
2. **Рутинные ограниченные задачи идут локально.** Тесты, документация, мелкие исправления и объяснения.
3. **Сложные задачи идут облачной модели.** Архитектурные изменения, хитрые баги, крупные рефакторинги.
4. **Ревью в свежем контексте.** Пусть второй агент проверяет дифф первого, какая бы модель его ни написала.

Проще всего это организовать, запустив одновременно двух и более агентов: один на локальном эндпоинте, другой на облачной модели, каждый в своей папке или git worktree, чтобы они не правили одни и те же файлы.

## Локальные и облачные агенты рядом в AgentVera

AgentVera — десктопное приложение, которое запускает много CLI-агентов рядом в одном [рабочем пространстве](/ru/features/workspace/ "Рабочее пространство"), что подходит для описанной гибридной схемы. Чтобы не было недопонимания, что оно делает, а что нет:

- **Встроенной интеграции с Ollama или LM Studio нет.** Каждый агент использует собственную настройку провайдера: `goose configure` для Goose, собственный конфиг и `/connect` у opencode, переменные окружения или `.aider.conf.yml` у Aider, вход или API-ключ у Qwen Code, настройки Crush (`Ctrl+L`).
- **Поле «Model» передаётся в CLI.** Для таких агентов, как Qwen Code, Goose и Aider, то, что вы там вводите, уходит в CLI как `--model`. Для Goose подсказка гласит: «If left empty, the model chosen with `goose configure` is used.»
- **У агентов могут быть переменные окружения.** В Settings → Accounts → Accounts of other agents аккаунт, добавленный «With an API key», хранит «Variable name» и его значение. Для Qwen Code `OPENAI_BASE_URL` — одно из предлагаемых имён, а любое другое можно ввести вручную. Это часть [переключения аккаунтов](/ru/features/account-switching/ "Переключение аккаунтов") в тарифах Pro и Team.
- **Инструменты контекста работают не только с Claude Code.** Размер контекста измеряется по собственной истории каждого CLI, а автокомпактинг использует собственную команду compact у того CLI, где она есть. При маленьком локальном окне это важно ещё сильнее.

Так что реалистичная картина такая: вы настраиваете локальную модель в CLI так, как описано в его документации, а AgentVera позволяет запустить этого агента рядом с облачным, следить за обоими и не смешивать их работу.

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

**Какие CLI для кодинга работают с локальной LLM?** opencode, Aider, Goose, Qwen Code, Crush и Codex описывают в документации способ использовать локальный или OpenAI-совместимый эндпоинт. У Codex есть встроенный флаг --oss для Ollama и LM Studio; остальные принимают конфиг провайдера, префикс модели или переменные окружения.

**Нужен ли GPU, чтобы запустить локального кодинг-агента?** Строго говоря, нет, но он сильно помогает. Кодинг-агентам нужны вызов инструментов и длинный контекст, а значит, довольно большая модель и много памяти. Без мощного GPU или большого объёма унифицированной памяти ответы становятся такими медленными, что работать с агентом тяжело.

**Почему моя локальная модель игнорирует файлы или забывает инструкции?** Обычно контекст слишком мал. Значение по умолчанию в Ollama зависит от VRAM и равно 4k на машинах с памятью меньше 24 GiB, а всё, что не помещается, молча отбрасывается. Увеличьте его через OLLAMA_CONTEXT_LENGTH или настройку num_ctx; для Codex Ollama рекомендует минимум 64k.

**Полностью ли приватна локальная модель?** Инференс остаётся на вашей машине, поэтому промпты и код не отправляются провайдеру модели. У самого CLI могут быть телеметрия, веб-поиск и другие сетевые функции, так что если ничего не должно покидать машину, проверьте его настройки.

**Поддерживает ли AgentVera локальные модели?** AgentVera запускает рядом друг с другом CLI-агентов, которые их поддерживают, например opencode, Aider, Goose, Qwen Code, Crush и Codex. Каждый CLI хранит собственный конфиг провайдера; AgentVera передаёт значение поля Model и может дать агенту переменные окружения, но собственной встроенной интеграции с Ollama у него нет.

---

**Об AgentVera.** AgentVera — настольное приложение для macOS, Windows и Linux от Solviera Teknoloji. Оно запускает 18 ИИ-агентов для программирования (Claude Code, Codex, Gemini CLI, Copilot, Cursor, Antigravity, opencode, Hermes, Qwen Code, Kimi Code, Kiro, Amp, Droid, Goose, Vibe, Crush, Aider, Cline) рядом, по проектам, в настоящих терминалах с собственными установками CLI и входами пользователя. В бесплатном тарифе количество агентов не ограничено. Скачать: https://agentvera.dev/ru/download/ · Цены: https://agentvera.dev/ru/pricing/
