# Локальный coding-agent через Ollama: как подключить и проверить правку кода

Источник: https://modelium.tech/zhurnal/lokalnyy-koding-agent-cherez-ollama/

Локальный coding-agent — это не одна модель: Ollama обслуживает модель на вашей машине, а кодовый клиент Aider предлагает и применяет правки файлов. Для первого опыта подключите Aider к локальному адресу Ollama, работайте в отдельном чистом Git-репозитории и проверьте изменение через `git diff` и тест. Наличие ответа в чате ещё не означает, что файл исправлен; модель должна поместиться на вашем устройстве, а доступ к коду и командам нужно контролировать.

**Проверено по документации 25 сентября 2026 года, не на собственном устройстве Modelium.** Команды ниже предназначены для вашего изолированного теста. Частотность «coding agent ollama» не измерена. Модель и Aider не запускались, веса не скачивались; результаты работы агента не обещаются.

## Что делает локальный coding-agent, а что — Ollama?

**Ollama** — сервер модели, **Aider** — клиент, который получает ответ и может редактировать файлы в вашем проекте. Aider документирует соединение с локальной Ollama через `ollama_chat/<model>` и переменную `OLLAMA_API_BASE`; одна только установленная Ollama ничего не меняет в исходном коде [s1](#src-s1). У Ollama есть и облачные маршруты: локальный `http://localhost:11434/api` отличается от прямого `https://ollama.com/api`, а локальные запросы не требуют API-ключа. Не называйте облачный вызов локальным только потому, что он запускается из терминала [s3](#src-s3).

Этот пример решает одну задачу: исправить ошибку в учебной функции, увидеть изменённые строки и получить успешный тест. Это **не** измерение качества модели, скорости и безопасности вашей кодовой базы. Если нужна архитектура агента для других инструментов, откройте [общий гайд](/zhurnal/kak-sozdat-ii-agenta/); если нужен протокол вызова внешних функций, он описан [отдельно](/zhurnal/tool-calling-lokalnyh-modeley/). Aider по своей документации может запускать тесты и показывать diff в Git, поэтому здесь проверяется именно правка, а не красивый ответ в чате [s6](#src-s6)[s7](#src-s7).

## Что подготовить: модель, железо и чистый проект?

Для конкретного примера в библиотеке Ollama есть локальный тег `qwen3-coder:30b`; страница модели показывает файл около **19 GB**. Это **размер весового файла**, а не заявленный минимум RAM, VRAM или единственный подходящий объём диска: рабочая память зависит также от контекста и размещения модели. Если этот вариант не подходит вашему железу, сначала выберите другой доступный локальный тег и проверьте его совместимость; не подменяйте тег облачным вариантом и не обещайте одинакового качества разных моделей [s5](#src-s5)[s4](#src-s4)[s3](#src-s3). Размер файла не является оценкой количества памяти для Aider вместе с моделью.

Понадобятся Ollama, совместимый Python для выбранного способа установки Aider и отдельный Git-репозиторий **без секретов, рабочих клиентов и реальных данных**. Aider предлагает установку через `aider-install` для Python **3.8–3.13**; это не утверждение о поддержке Python 3.14. Установочный скрипт через `curl | sh` на той же странице есть, но не исполняйте полученный из сети код без просмотра и согласования в вашей среде [s2](#src-s2). Для Ollama начните с [инструкции по установке и API](/zapusk/ollama/). Ни Ollama, ни Aider в рамках этой статьи не установлены Modelium.

Создайте отдельный маленький репозиторий и проверьте `git status` **до** старта клиента. Это важно: по документации Aider может автоматически создать коммит со своей правкой и даже предварительно закоммитить уже изменённые файлы; ниже для учебного теста мы отключаем оба автоматических действия. Отдельная ветка и отсутствие незакоммиченных рабочих правок уменьшают риск, но перед любой командой с доступом к коду остаётся нужен собственный просмотр [s6](#src-s6).

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

Первый терминал: убедитесь, что локальная Ollama уже работает; если нет, запустите её по инструкции для вашей ОС. Отдельная команда `ollama serve` нужна **только если сервер ещё не запущен**. Официальный пример Aider показывает явный запуск сервера и изменение контекста через переменную окружения; в обычной установке один адрес может быть уже занят действующим процессом [s1](#src-s1). Затем **после проверки свободного места и модели** загрузите выбранный тег (это сетевое скачивание весов, не бесплатная по ресурсам проверка) [s1](#src-s1)[s5](#src-s5):

ollama pull qwen3-coder:30bollama listcurl -fsS http://127.0.0.1:11434/api/tags

Проверьте, что список действительно содержит нужный тег, а `curl` отвечает от `127.0.0.1`, не от чужого удалённого сервера. По документации локальный API использует порт 11434; наличие модели в списке означает, что файл скачан, **но не доказывает**, что достаточно памяти для генерации или что клиент изменит файлы [s3](#src-s3)[s1](#src-s1). Если тег велик для вашей машины, замените **во всех** дальнейших командах имя модели одним и тем же проверенным локальным тегом; не считайте 19 GB минимумом оперативной памяти [s5](#src-s5)[s4](#src-s4).

## Как установить Aider и подключить его к Ollama?

Для поддерживаемого способа установки Aider документирует две команды. Перед установкой стороннего кода примените правила вашей среды; если Python вне заявленного диапазона, выберите другой официальный путь и проверьте его отдельно [s2](#src-s2):

python -m pip install aider-installaider-install

В **том же терминале**, где будете запускать Aider, задайте именно локальный endpoint. Для Windows у Aider приведён другой способ установки переменной (`setx`) с повторным открытием оболочки; строки ниже относятся к Unix-подобной shell [s1](#src-s1):

export OLLAMA_API_BASE=http://127.0.0.1:11434cd /путь/к/чистому/учебному-репозиториюgit status --shortaider --model ollama_chat/qwen3-coder:30b --no-auto-commits --no-dirty-commits

`ollama_chat/` предпочтителен в инструкции Aider перед `ollama/`; имя после слеша должно совпадать с загруженным локальным тегом. Отключение автокоммитов оставляет проверку изменений вам; запишите исходный чистый `git status`, а не полагайтесь на подтверждение модели [s1](#src-s1)[s6](#src-s6). Если у вас другой тег, замените `qwen3-coder:30b` на него и не переносите автоматически заявленные возможности Qwen3-Coder на выбранный вариант [s5](#src-s5)[s8](#src-s8).

## Как провести минимальный тест правки, а не просто чат?

В своём **учебном** Git-репозитории создайте до запуска клиента файл `calc.py` с ошибкой и тест, который требует `add(2, 3) == 5`. Например, в пустой директории на Unix-подобной системе (Python 3 и Git должны быть установлены) [s6](#src-s6)[s7](#src-s7):

mkdir coding-agent-smoke && cd coding-agent-smokegit initpython3 - <<'PY'from pathlib import PathPath('calc.py').write_text('def add(a, b):\n    return a - b\n')Path('test_calc.py').write_text('''import unittestfrom calc import addclass TestAdd(unittest.TestCase):    def test_positive(self):        self.assertEqual(add(2, 3), 5)    def test_negative(self):        self.assertEqual(add(-2, 2), 0)''')PYpython3 -m unittest -q  # ожидаемый исходный красный тестgit add calc.py test_calc.pygit commit -m 'Create isolated broken addition example'git status --short

Исходный тест **должен провалиться** до работы агента. Если `git commit` требует настроить имя и адрес автора, задайте их локально для учебного репозитория согласно правилам вашей среды; только после успешного коммита и пустого `git status --short` запускайте Aider из этой директории с теми же параметрами, что выше. Не копируйте этот сценарий в репозиторий с доступом к продакшену. Aider рассчитан на Git и поддерживает показ diff и запуск тестовой команды из чата [s6](#src-s6)[s7](#src-s7).

Попросите агента: «Исправь только `calc.py`, чтобы тест `add(2, 3) == 5` проходил. Не меняй тест и другие файлы; объясни изменение». Затем в диалоге Aider можно выполнить `/diff` и `/test python -m unittest -q`; документация указывает, что `/test` запускает команду, а при ошибке может передать её модели для исправления. Убедитесь, что тесты в этом репозитории безопасны **до** их выполнения [s6](#src-s6)[s7](#src-s7). Вне Aider повторите:

git diff -- calc.pypython -m unittest -qgit status --short

Критерий успеха: изменился **только разрешённый файл**, diff понятен человеку, тест проходит и объяснение не подменяет реальное состояние файлов. Если модель только напечатала исправленный код, а diff пуст, задача **не выполнена**: Aider предупреждает, что недостаточно способные модели иногда не могут оформить правку для применения [s8](#src-s8). Тест на примере `2 + 3` не доказывает корректности всей функции: добавьте крайние случаи и повторите проверку на коде, который можно безопасно показывать модели.

## Почему агент не видит файл или зависает на большом проекте?

Сначала сверяйте источник проблемы: ответил ли `curl` на **локальном** адресе, совпадает ли тег в `ollama list` и `aider --model`, есть ли дифф после задания, запускаются ли безопасные тесты. Облачный адрес `https://ollama.com/api` — другой endpoint и другой режим авторизации; не используйте облачный тег, если обещаете работу без передачи кода наружу [s3](#src-s3)[s1](#src-s1). Для реальной проверки сетевой изоляции при закрытом контуре нужен отдельный сетевой тест; один localhost в конфигурации Aider не доказывает, что вся система не обращается к сети.

Контекст нельзя угадывать по старым настройкам. Текущая страница Ollama задаёт VRAM-зависимые значения по умолчанию и рекомендует для coding tools крупный контекст, но увеличение окна требует больше памяти; инструкция Aider одновременно содержит историческую фразу о 2k и описывает собственное автоматическое выделение контекста. Не обещайте универсального дефолта и не выставляйте 64k без проверки ресурсов. После обращения к модели запустите `ollama ps`: документация Ollama показывает столбцы **CONTEXT** и **PROCESSOR** — фактически выделенное окно и размещение на CPU/GPU. Разбор настроек — в [отдельном гайде по контексту](/zhurnal/ollama-kontekst-dlya-agenta/) [s1](#src-s1)[s4](#src-s4).

Если тест не прошёл, не разрешайте бесконечную серию автоматических исправлений: остановитесь, прочтите ошибку, diff и верните учебную ветку к исходному состоянию через Git **только после проверки**, какие файлы изменены. Aider документирует `/undo`, но действия с коммитами зависят от выбранных Git-флагов; при отключённых автокоммитах опирайтесь на обычный `git diff` и собственный откат [s6](#src-s6). Не исполняйте непроверенные скрипты репозитория с секретами только ради «зелёной» отметки.

**Следующий шаг:** [проверьте контекст и реальное размещение модели в Ollama](/zhurnal/ollama-kontekst-dlya-agenta/), затем повторите описанный тест правки на **своём** изолированном проекте. Только подтверждённые diff, тест и ручная проверка составляют результат; Modelium такого прогона не проводил [s4](#src-s4)[s7](#src-s7).

## Источники

1. [Aider — Connecting to Ollama](https://aider.chat/docs/llms/ollama.html) — получено 2026-09-25
2. [Aider — Installation](https://aider.chat/docs/install.html) — получено 2026-09-25
3. [Ollama — API introduction: local and cloud base URLs](https://docs.ollama.com/api/introduction) — получено 2026-09-25
4. [Ollama — Context length and allocated memory](https://docs.ollama.com/context-length) — получено 2026-09-25
5. [Ollama library — qwen3-coder:30b](https://ollama.com/library/qwen3-coder:30b) — получено 2026-09-25
6. [Aider — Git integration](https://aider.chat/docs/git.html) — получено 2026-09-25
7. [Aider — Linting and testing](https://aider.chat/docs/usage/lint-test.html) — получено 2026-09-25
8. [Aider — Connecting to LLMs: limitations of local models](https://aider.chat/docs/llms.html) — получено 2026-09-25
