
node -v && npm -v. Если команда не найдена — поставьте LTS-версию Node.js через пакетный менеджер или nvm, конкретную мажорную версию сверьте с README.sudo для глобальной установки npm не нужен, если настроен пользовательский prefix.<ваш-ключ> и <base-url> из панели провайдера.Чек-лист перед стартом:
node -v печатает номер версии без ошибкиnpm -v печатает номер версии
Что сделать: установить Ollama, скачать модель семейства Qwen Coder и убедиться, что она отвечает по HTTP.
Зачем: Ollama поднимает локальный HTTP-сервер с OpenAI-совместимым API на порту 11434. Дальше любой терминальный агент сможет обращаться к модели как к обычному облачному API, но запросы останутся на вашей машине.
Установка (Linux и WSL2; для macOS/Windows есть штатные установщики — сверьтесь с документацией):
curl -fsSL https://ollama.com/install.sh | sh
ollama --version
Ожидаемый вывод: строка вида ollama version is <номер версии>.
Скачивание модели и проверка списка:
ollama pull qwen2.5-coder:7b
ollama list
ollama list печатает таблицу с колонками NAME, ID, SIZE, MODIFIED — в первой строке должна появиться ваша модель. Если нужен более крупный вариант, имя тега берётся из библиотеки моделей (сверьтесь с документацией): чем больше параметров, тем выше требования к RAM/VRAM.
Пример: проверка, что модель вообще отвечает, без всяких агентов:
ollama run qwen2.5-coder:7b "Напиши одну строку: функцию Python sum_list(nums)"
На экране появится код функции и приглашение >>>. Выход — Ctrl+D.
Проверка HTTP-эндпоинта (именно к нему будет ходить CLI):
curl -s http://localhost:11434/v1/models
Как проверить: в ответе должен быть JSON с массивом data, где есть "id", совпадающий с именем скачанной модели. Если curl вернул Connection refused — сервер не запущен, см. раздел проблем.
Почему это работает: Ollama держит демон, который слушает 127.0.0.1:11434 и отдаёт маршруты /v1/* в формате OpenAI API, поэтому клиенту достаточно подменить base URL.
Если позже понадобится ускорять локальный инференс на своей машине, полезна отдельная инструкция: Как ускорить DeepSeek с помощью DeepInfer.
| Критерий | Локально (Ollama) | Облачный OpenAI-совместимый API |
|---|---|---|
| Где обрабатываются данные | На вашей машине | На серверах провайдера |
| Что нужно | RAM/VRAM под тег модели | API-ключ и `<base-url>` |
| Порт/адрес для клиента | `http://localhost:11434/v1` | `<base-url>` из панели провайдера |
| Оплата | Нет | По тарифам провайдера (сверьтесь с документацией) |
| Скорость | Зависит от железа | Зависит от провайдера |
Что сделать: поставить CLI-агент глобально через npm и связать его с выбранным бэкендом через переменные окружения.
Зачем: сам по себе сервер модели не умеет читать ваш проект и править файлы. CLI-агент — это обёртка, которая добавляет к модели инструменты: чтение файлов, запись, запуск команд в текущем каталоге.
npm install -g @qwen-code/qwen-code
command -v qwen
Пример: command -v qwen печатает путь вида /home/<user>/.npm-global/bin/qwen. Если вывода нет — бинарник не попал в PATH, команда установлена в другой prefix (см. проблему про EACCES).
Проверка версии Node.js перед запуском:
node -v
Если версия слишком старая, агент упадёт на старте с синтаксической ошибкой — мажорную версию сверьте с README проекта.
Настройка подключения. Для локального Ollama:
export OPENAI_API_KEY="ollama"
export OPENAI_BASE_URL="http://localhost:11434/v1"
export OPENAI_MODEL="qwen2.5-coder:7b"
Для облачного провайдера меняются две строки — ключ и адрес из панели:
export OPENAI_API_KEY="<ваш-ключ>"
export OPENAI_BASE_URL="<base-url из панели провайдера, например https://<host>/v1>"
export OPENAI_MODEL="<имя модели из панели>"
Почему ключ ollama для локального варианта: клиент требует непустое значение заголовка Authorization, а локальный сервер его не проверяет.
Чтобы переменные не терялись между сессиями, добавьте те же три строки в профиль шелла:
cat >> ~/.bashrc <<'EOF'
export OPENAI_API_KEY="ollama"
export OPENAI_BASE_URL="http://localhost:11434/v1"
export OPENAI_MODEL="qwen2.5-coder:7b"
EOF
source ~/.bashrc
Для zsh замените ~/.bashrc на ~/.zshrc. Точные имена переменных и возможные альтернативы (QWEN_*) сверьте с README: у форков CLI они отличаются.
Как проверить: echo "$OPENAI_BASE_URL" печатает адрес, qwen запускается и показывает приглашение ввода. Внутри введите /help — появится список слэш-команд (их набор сверьте с документацией) и подтверждение, что агент видит рабочую директорию.

Что сделать: создать тестовый проект с заведомой ошибкой, попросить агента её исправить и убедиться, что файл на диске изменился, а программа заработала.
Зачем: это единственная проверка, которая доказывает, что связка «CLI → API → модель» работает не только в чате, но и с файловой системой.
mkdir -p ~/qwen-test && cd ~/qwen-test
cat > report.py <<'EOF'
def average(values):
total = 0
for v in values:
total += v
return total / len(values)
print(average([]))
EOF
python3 report.py
Пример: на экране появится трейсбек, последняя строка — ZeroDivisionError: division by zero. Теперь запускаем агента:
qwen
В приглашении вводим задачу:
В файле report.py функция average падает на пустом списке.
Исправь: при пустом списке возвращай 0. Покажи изменённый фрагмент.
Агент прочитает report.py, предложит правку и (после подтверждения) запишет файл. Проверка результата:
python3 report.py
Как проверить: на экране 0.0 вместо трейсбека, а cat report.py показывает добавленную проверку на пустой список. Это и есть успех: агент изменил реальный файл, а не выдал текст в чат.
Минимальный чек-лист приёмки:
ollama list (или панель провайдера) содержит выбранную модельcurl -s <base-url>/models возвращает JSON без ошибкиqwen запускается из каталога проектаpython3 report.py завершается без исключенияПроблема. Агент не подключается к модели, запросы висят или сразу падают.
Error: connect ECONNREFUSED 127.0.0.1:11434OPENAI_BASE_URL указывает на несуществующий адрес.ollama serve &
curl -s http://localhost:11434/v1/models
Если в ответ пришёл JSON, повторите qwen. На macOS проще запустить приложение Ollama из меню и повторить curl.
Проблема. Облачный провайдер отклоняет запросы.
401 Unauthorized в теле ответа, текст вида {"error":{"message":"Incorrect API key provided"}}OPENAI_API_KEY пустая, содержит плейсхолдер <ваш-ключ> или ключ от другого проекта; либо OPENAI_BASE_URL без суффикса /v1.export OPENAI_API_KEY="<ваш-ключ>"
export OPENAI_BASE_URL="<base-url>/v1"
echo "$OPENAI_BASE_URL"
После этого перезапустите qwen. Значение должно быть без угловых скобок и без слова <ваш-ключ>.
Проблема. Глобальная установка npm падает по правам.
npm error code EACCES и строка npm error path /usr/lib/node_modulesnpm config set prefix ~/.npm-global
export PATH="$HOME/.npm-global/bin:$PATH"
npm install -g @qwen-code/qwen-code
command -v qwen
Строку с export PATH добавьте в ~/.bashrc, иначе после перезапуска терминала команда снова пропадёт.
Вы получили рабочую связку «локальный или облачный OpenAI-совместимый endpoint + терминальный агент Qwen Coder», которая читает и правит файлы проекта прямо из консоли. Дальше имеет смысл зафиксировать переменные окружения в профиле шелла и прогнать агента на реальной задаче — например, на добавлении тестов в существующий модуль.
Нужна ли видеокарта для локального варианта?
Нет, Ollama работает и на CPU, но ответы будут генерироваться медленнее. Требования к RAM/VRAM для конкретного тега модели смотрите на странице модели — сверьтесь с документацией.
Можно ли использовать облачную модель вместо локальной?
Да. Достаточно поменять OPENAI_BASE_URL, OPENAI_API_KEY и OPENAI_MODEL на значения из панели провайдера; остальные шаги не меняются.
Чем это отличается от копирования кода из веб-чата?
Агент работает в каталоге проекта: читает файлы по имени, вносит правки на диск и запускает команды, поэтому не нужно вручную переносить код туда и обратно.
Можно ли запустить ассистента не на ПК, а на телефоне или часах?
В терминале нужен Linux, macOS или WSL2. Для носимых устройств сценарий другой — см. гайд по ИИ-чату на Wear OS.