# Как программировать без IDE с Qwen Coder: установка и настройка в терминале

> AI Release · @ai_release1 · https://ai-release.org/guides/kak-programmirovat-bez-ide-s-qwen-coder-ustanovka-i-nas.html

## TL;DR

- Время выполнения: 30–45 минут (без учёта времени скачивания весов модели).
- Уровень сложности: Intermediate
- Понадобится: Linux, macOS или Windows с WSL2; Node.js LTS и npm (минимальную версию сверьте с README проекта Qwen Code); терминал; один из двух вариантов доступа к модели — локальный сервер Ollama либо API-ключ OpenAI-совместимого провайдера; свободное место под файл модели (размер конкретного тега указан на странице модели в документации).
- Важно: пост-источник к заданию не приложен, поэтому все параметры, зависящие от версии (теги моделей, точное имя npm-пакета, имена переменных окружения и слэш-команд), помечены как «сверьтесь с документацией». Проверяйте их в README перед запуском.

## Требования и подготовка
![Иллюстрация к разделу «Требования и подготовка»](https://ai-release.org/guides/img/kak-programmirovat-bez-ide-s-qwen-coder-ustanovka-i-nas-ru-1.jpg?v=1793954943)


- **ОС и терминал.** Linux (bash/zsh), macOS (zsh) или Windows 11 с WSL2 — в чистом PowerShell команды из гайда работать не будут, так как установочный скрипт Ollama рассчитан на POSIX-шелл.
- **Node.js и npm.** Терминальный агент Qwen Coder ставится из npm. Проверьте: `node -v && npm -v`. Если команда не найдена — поставьте LTS-версию Node.js через пакетный менеджер или nvm, конкретную мажорную версию сверьте с README.
- **Права.** Права на запись в домашний каталог и (для Linux/macOS) возможность выполнить установочный скрипт. `sudo` для глобальной установки npm не нужен, если настроен пользовательский prefix.
- **Доступ к модели.** Вариант A — Ollama локально (данные не покидают машину, нужен объём RAM под выбранный тег). Вариант B — OpenAI-совместимый endpoint провайдера: нужен `<ваш-ключ>` и `<base-url>` из панели провайдера.
- **Свободное место.** Под веса модели плюс кэш npm — ориентируйтесь на размер файла модели со страницы тега (сверьтесь с документацией), резервируйте место с запасом.

Чек-лист перед стартом:

- [ ] `node -v` печатает номер версии без ошибки
- [ ] `npm -v` печатает номер версии
- [ ] есть 15+ ГБ свободного места, если качаете локальную модель (уточните размер тега)
- [ ] определились с вариантом доступа: Ollama или облачный ключ
- [ ] открыт README Qwen Code для сверки имён переменных и команд

## Шаг 1. Поднять локальный сервер модели на Ollama
![Иллюстрация к разделу «Шаг 1. Поднять локальный сервер модели на Ollama»](https://ai-release.org/guides/img/kak-programmirovat-bez-ide-s-qwen-coder-ustanovka-i-nas-ru-2.jpg?v=1793954956)


**Что сделать:** установить Ollama, скачать модель семейства Qwen Coder и убедиться, что она отвечает по HTTP.

**Зачем:** Ollama поднимает локальный HTTP-сервер с OpenAI-совместимым API на порту `11434`. Дальше любой терминальный агент сможет обращаться к модели как к обычному облачному API, но запросы останутся на вашей машине.

Установка (Linux и WSL2; для macOS/Windows есть штатные установщики — сверьтесь с документацией):

```bash
curl -fsSL https://ollama.com/install.sh | sh
ollama --version
```

Ожидаемый вывод: строка вида `ollama version is <номер версии>`.

Скачивание модели и проверка списка:

```bash
ollama pull qwen2.5-coder:7b
ollama list
```

`ollama list` печатает таблицу с колонками `NAME`, `ID`, `SIZE`, `MODIFIED` — в первой строке должна появиться ваша модель. Если нужен более крупный вариант, имя тега берётся из библиотеки моделей (сверьтесь с документацией): чем больше параметров, тем выше требования к RAM/VRAM.

**Пример:** проверка, что модель вообще отвечает, без всяких агентов:

```bash
ollama run qwen2.5-coder:7b "Напиши одну строку: функцию Python sum_list(nums)"
```

На экране появится код функции и приглашение `>>>`. Выход — `Ctrl+D`.

Проверка HTTP-эндпоинта (именно к нему будет ходить CLI):

```bash
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](https://ai-release.org/guides/kak-uskorit-deepseek-s-pomoschyu-deepinfer-ustanovka-i.html?utm_source=tg&utm_medium=channel&utm_campaign=guide_inline&utm_content=guide_to_guide).

| Критерий | Локально (Ollama) | Облачный OpenAI-совместимый API |
|---|---|---|
| Где обрабатываются данные | На вашей машине | На серверах провайдера |
| Что нужно | RAM/VRAM под тег модели | API-ключ и `<base-url>` |
| Порт/адрес для клиента | `http://localhost:11434/v1` | `<base-url>` из панели провайдера |
| Оплата | Нет | По тарифам провайдера (сверьтесь с документацией) |
| Скорость | Зависит от железа | Зависит от провайдера |

## Шаг 2. Установить и настроить терминальный агент Qwen Code

**Что сделать:** поставить CLI-агент глобально через npm и связать его с выбранным бэкендом через переменные окружения.

**Зачем:** сам по себе сервер модели не умеет читать ваш проект и править файлы. CLI-агент — это обёртка, которая добавляет к модели инструменты: чтение файлов, запись, запуск команд в текущем каталоге.

```bash
npm install -g @qwen-code/qwen-code
command -v qwen
```

**Пример:** `command -v qwen` печатает путь вида `/home/<user>/.npm-global/bin/qwen`. Если вывода нет — бинарник не попал в `PATH`, команда установлена в другой prefix (см. проблему про `EACCES`).

Проверка версии Node.js перед запуском:

```bash
node -v
```

Если версия слишком старая, агент упадёт на старте с синтаксической ошибкой — мажорную версию сверьте с README проекта.

Настройка подключения. Для локального Ollama:

```bash
export OPENAI_API_KEY="ollama"
export OPENAI_BASE_URL="http://localhost:11434/v1"
export OPENAI_MODEL="qwen2.5-coder:7b"
```

Для облачного провайдера меняются две строки — ключ и адрес из панели:

```bash
export OPENAI_API_KEY="<ваш-ключ>"
export OPENAI_BASE_URL="<base-url из панели провайдера, например https://<host>/v1>"
export OPENAI_MODEL="<имя модели из панели>"
```

Почему ключ `ollama` для локального варианта: клиент требует непустое значение заголовка `Authorization`, а локальный сервер его не проверяет.

Чтобы переменные не терялись между сессиями, добавьте те же три строки в профиль шелла:

```bash
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` — появится список слэш-команд (их набор сверьте с документацией) и подтверждение, что агент видит рабочую директорию.

## Шаг 3. Проверить работу на реальном файле и зафиксировать результат
![Иллюстрация к разделу «Шаг 3. Проверить работу на реальном файле и зафиксировать результат»](https://ai-release.org/guides/img/kak-programmirovat-bez-ide-s-qwen-coder-ustanovka-i-nas-ru-3.jpg?v=1793954963)


**Что сделать:** создать тестовый проект с заведомой ошибкой, попросить агента её исправить и убедиться, что файл на диске изменился, а программа заработала.

**Зачем:** это единственная проверка, которая доказывает, что связка «CLI → API → модель» работает не только в чате, но и с файловой системой.

```bash
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`. Теперь запускаем агента:

```bash
qwen
```

В приглашении вводим задачу:

```text
В файле report.py функция average падает на пустом списке.
Исправь: при пустом списке возвращай 0. Покажи изменённый фрагмент.
```

Агент прочитает `report.py`, предложит правку и (после подтверждения) запишет файл. Проверка результата:

```bash
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:11434`
- Причина: демон Ollama не запущен либо слушает другой порт; переменная `OPENAI_BASE_URL` указывает на несуществующий адрес.
- Решение: поднять сервер и проверить эндпоинт по шагам.

```bash
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`.
- Решение: перевыставить переменные в текущей сессии и проверить их значения.

```bash
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_modules`
- Причина: npm пытается писать в системный каталог от обычного пользователя.
- Решение: переключить prefix на домашний каталог и переустановить пакет.

```bash
npm 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», которая читает и правит файлы проекта прямо из консоли. Дальше имеет смысл зафиксировать переменные окружения в профиле шелла и прогнать агента на реальной задаче — например, на добавлении тестов в существующий модуль.

## FAQ

**Нужна ли видеокарта для локального варианта?**
Нет, Ollama работает и на CPU, но ответы будут генерироваться медленнее. Требования к RAM/VRAM для конкретного тега модели смотрите на странице модели — сверьтесь с документацией.

**Можно ли использовать облачную модель вместо локальной?**
Да. Достаточно поменять `OPENAI_BASE_URL`, `OPENAI_API_KEY` и `OPENAI_MODEL` на значения из панели провайдера; остальные шаги не меняются.

**Чем это отличается от копирования кода из веб-чата?**
Агент работает в каталоге проекта: читает файлы по имени, вносит правки на диск и запускает команды, поэтому не нужно вручную переносить код туда и обратно.

**Можно ли запустить ассистента не на ПК, а на телефоне или часах?**
В терминале нужен Linux, macOS или WSL2. Для носимых устройств сценарий другой — см. [гайд по ИИ-чату на Wear OS](https://ai-release.org/guides/kak-ispolzovat-ii-chat-na-umnyh-chasah-wear-os-ustanovk.html?utm_source=tg&utm_medium=channel&utm_campaign=guide_inline&utm_content=guide_to_guide).
