# Вайб-кодинг в Qwen Code: Настройка через RouterAI (Qwen, Claude, GPT, DeepSeek)

## Qwen Code

Qwen Code — открытый (Apache-2.0) ИИ-агент для программирования в терминале от команды Qwen. Он читает и правит файлы проекта, запускает команды, работает с MCP-серверами, а ещё подключается к IDE (VS Code, Zed, JetBrains). Главное для нас: агент не привязан к одному вендору и поддерживает OpenAI-, Anthropic- и Gemini-совместимые API, так что к нему можно подключить любой сторонний провайдер.

Бесплатный тариф Qwen OAuth закрыт: по документации Qwen Code он прекращён 15.04.2026. RouterAI решает это одним ключом: работа из России без VPN, оплата в рублях и сотни моделей в одном [каталоге](/models "каталог моделей RouterAI") — Qwen, Claude, GPT, DeepSeek, GLM. Меняете модель командой `/model`, не трогая ключи и аккаунты.

## Требования

- macOS, Linux или Windows
- Node.js 22 или новее — для установки через npm
- API-ключ из [личного кабинета](/settings/keys "личный кабинет RouterAI")

## Установка

Через npm:

```bash
npm install -g @qwen-code/qwen-code@latest
```

Или через Homebrew (macOS / Linux):

```bash
brew install qwen-code
```

Также есть автономный установщик, который не требует Node.js — команды для Linux/macOS и Windows приведены в [README проекта](https://github.com/QwenLM/qwen-code "репозиторий Qwen Code на GitHub"). Проверьте версию:

```bash
qwen --version
```

## Подключение к RouterAI

Qwen Code описывает провайдеров в блоке `modelProviders` файла `~/.qwen/settings.json` (общий для пользователя) или `.qwen/settings.json` в корне проекта. Ключ в настройки не записывается: в поле `envKey` указывается **имя** переменной окружения, а значение агент читает из `process.env`.

1. Сохраните ключ в переменную окружения (macOS / Linux; для постоянной настройки добавьте строку в `~/.zshrc` или `~/.bashrc`):

   ```bash
   export ROUTERAI_API_KEY="sk-xxxxxxxxxxxxxxxx"
   ```

   Вместо `export` можно положить строку `ROUTERAI_API_KEY=...` в файл `~/.qwen/.env` — Qwen Code подхватит его автоматически.

2. Создайте или откройте `~/.qwen/settings.json` и добавьте провайдера:

   ```json
   {
     "modelProviders": {
       "openai": [
         {
           "id": "anthropic/claude-sonnet-5.5",
           "name": "Claude Sonnet 5.5 (RouterAI)",
           "envKey": "ROUTERAI_API_KEY",
           "baseUrl": "https://routerai.ru/api/v1"
         },
         {
           "id": "qwen/qwen3.8-max-0902",
           "name": "Qwen3.8 Max (RouterAI)",
           "envKey": "ROUTERAI_API_KEY",
           "baseUrl": "https://routerai.ru/api/v1"
         }
       ]
     },
     "security": { "auth": { "selectedType": "openai" } },
     "model": { "name": "anthropic/claude-sonnet-5.5" }
   }
   ```

3. Запустите агента в папке проекта:

   ```bash
   cd /path/to/your/project
   qwen
   ```

![Версия Qwen Code и файл ~/.qwen/settings.json с провайдерами RouterAI](https://b51bc417-3ee0-451a-a83b-8a681d027a96.selstorage.ru/public/b646b5698b9eb60b45f6f3fbb03cdc60.png)

Что значат поля:

| Поле | Назначение |
| --- | --- |
| `id` | Идентификатор модели, который уходит в API. Берите точно как в [каталоге RouterAI](/models "каталог моделей") |
| `name` | Подпись в меню `/model` (необязательно) |
| `envKey` | Имя переменной окружения с ключом |
| `baseUrl` | Корень API, без `/chat/completions` — путь SDK добавит сам |
| `security.auth.selectedType` | Протокол при старте: `openai` или `anthropic` |
| `model.name` | Модель по умолчанию, должна совпадать с одним из `id` |

> Блок `"env": { "ROUTERAI_API_KEY": "..." }` в `settings.json` тоже работает, но это запасной вариант с наименьшим приоритетом, и ключ лежит в файле открытым текстом. Не коммитьте такие файлы в git.

### Протокол Anthropic Messages API

Модели Claude можно подключить и по нативному протоколу Anthropic. Для этого добавьте провайдера в секцию `anthropic`, а `baseUrl` укажите без `/v1`:

```json
{
  "modelProviders": {
    "anthropic": [
      {
        "id": "anthropic/claude-sonnet-5.5",
        "name": "Claude Sonnet 5.5 (Messages API)",
        "envKey": "ROUTERAI_API_KEY",
        "baseUrl": "https://routerai.ru/api"
      }
    ]
  }
}
```

Оба протокола можно держать в одном файле: Qwen Code сгруппирует модели по протоколам в меню `/model`.

### Переключение модели на лету

Внутри сессии выполните `/model` и выберите нужную запись стрелками. Правки в `modelProviders` подхватываются без перезапуска — достаточно заново открыть `/model`. Выбор запоминается между сессиями. Модель можно задать и при запуске:

```bash
qwen --model "qwen/qwen3.8-max-0902"
```

![Меню /model в Qwen Code: модели RouterAI по протоколам openai и anthropic](https://b51bc417-3ee0-451a-a83b-8a681d027a96.selstorage.ru/public/fd4ef2a04daeaa772787b0b1d558dabc.png)

## Выбор модели

Все id ниже есть в [каталоге RouterAI](/models "каталог моделей") и отвечают на запросы через `https://routerai.ru/api/v1`. Актуальные цены смотрите там же — они зависят от модели и объёма контекста.

| Модель | Контекст | Для чего |
| --- | --- | --- |
| `qwen/qwen3.8-max-0902` | 1 млн | Max-модель Qwen3.8: сложные задачи и рефакторинг |
| `qwen/qwen3.8-flash` | 1 млн | Быстрые и недорогие правки, повседневные вопросы по коду |
| `qwen/qwen3-coder-next` | 262 тыс. | Модель серии Qwen Coder для работы с кодом |
| `anthropic/claude-sonnet-5.5` | 1 млн | Основная рабочая модель для агентных задач |
| `deepseek/deepseek-v4.1-flash` | 1 млн | Дешёвая быстрая модель для рутины |
| `z-ai/glm-5.3` | 1 млн | Универсальная модель семейства GLM с большим контекстом |
| `openai/gpt-5.5` | 1,05 млн | Сложные задачи, когда нужна модель OpenAI |

Чтобы все они были в `/model`, добавьте по записи на каждую в массив `openai` с тем же `envKey` и `baseUrl`.

## Проверка подключения

Запустите `qwen` в папке проекта и дайте короткое задание — например, прочитать файл и ответить на вопрос по нему. В строке состояния внизу должна быть выбранная модель, а в шапке — `API Key | <имя модели>`.

![Qwen Code отвечает на задание по invoices.csv через RouterAI: в шапке и строке состояния видна модель](https://b51bc417-3ee0-451a-a83b-8a681d027a96.selstorage.ru/public/61fecc319be4c157aab227abd8abb650.png)

Быстро проверить сам ключ и эндпоинт можно и без агента:

```bash
curl https://routerai.ru/api/v1/chat/completions \
  -H "Authorization: Bearer $ROUTERAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "anthropic/claude-sonnet-5.5", "max_tokens": 64, "messages": [{"role": "user", "content": "Привет!"}]}'
```

Для разового запуска в скриптах и CI есть headless-режим: `qwen -p "ваш запрос"`.

## Решение проблем

### 401 Unauthorized

Ключ неверный, отозван или переменная `ROUTERAI_API_KEY` не передана процессу `qwen`. Проверьте `echo $ROUTERAI_API_KEY` в том же терминале, где запускаете агента, и сверьтесь с ключом в [личном кабинете](/settings/keys "личный кабинет RouterAI"). Помните: в `envKey` пишется имя переменной, а не сам ключ. Если переменная вообще не найдена, Qwen Code может открыть меню `/auth` — выйдите из него и задайте ключ.

### Model not found (400)

Такого `id` нет в каталоге. Скопируйте точное значение со страницы [каталога моделей](/models "каталог моделей"): у Qwen, DeepSeek и GLM id содержит префикс вендора (`qwen/...`, `deepseek/...`, `z-ai/...`).

### Модели нет в меню /model

Скорее всего, ключ провайдера в `modelProviders` не входит в список поддерживаемых: допустимы `openai`, `anthropic`, `gemini`, `vertex-ai`, а запись с произвольным именем (например, `openai-custom`) пропускается с предупреждением. Проверьте и синтаксис JSON — лишняя запятая ломает файл.

### Ошибка wireApi

В записи `openai` можно указать `"wireApi": "chat-completions"` (значение по умолчанию) или `"responses"`. Любые другие значения, а также `wireApi` у моделей в секциях `anthropic` и `gemini` — ошибка конфигурации. Режим `responses` требует эндпоинта, совместимого с OpenAI Responses API; если не уверены — не задавайте поле вообще.

### Неверный baseUrl

Проверьте адрес: для `openai` это `https://routerai.ru/api/v1` (без `/chat/completions`), для `anthropic` — `https://routerai.ru/api` (без `/v1`).

### 402 Payment Required

Недостаточно средств на балансе. Пополните его в разделе [Биллинг](/settings/billing "Биллинг").

## Что дальше

- [Каталог моделей](/models "Каталог моделей") — подберите модель под задачу
- [Вайб-кодинг в Claude Code](/pages/vibe-coding-claude-code "Claude Code через RouterAI") — другой CLI-агент с Anthropic-протоколом
- [Вайб-кодинг в OpenCode](/pages/vibe-coding-opencode "OpenCode через RouterAI") и [в Codex](/pages/vibe-coding-codex "Codex через RouterAI") — похожие терминальные агенты
- [Аутентификация](/docs/guides/overview/authentication "Аутентификация") — управление API-ключами и безопасность
- [Документация Qwen Code: Model Providers](https://qwenlm.github.io/qwen-code-docs/en/users/configuration/model-providers/ "Model Providers в документации Qwen Code") — полный список параметров `modelProviders`
