Skip to content

Интеграция Qwen Code

Подключите Qwen Code CLI к AITUNNEL и получите доступ к Qwen3-Coder и другим моделям прямо в терминале — без VPN и аккаунта Alibaba Cloud.

Qwen Code — open-source агентный CLI от команды QwenLM, форк Google Gemini CLI, адаптированный под модели Qwen3-Coder. Поддерживает интерактивный режим, headless-запуск для скриптов и интеграцию с VS Code, Zed и JetBrains.

AITUNNEL предоставляет OpenAI-совместимый API, поэтому Qwen Code работает через него без дополнительного прокси.

Рекомендуемая модель

Для лучшего опыта используйте qwen/qwen3-coder — она специально обучена под агентные задачи программирования. Через AITUNNEL также доступны другие модели, совместимые с OpenAI API (см. список моделей).

Быстрый старт

Шаг 1: Установка Qwen Code

Требования

Требуется Node.js 20 или новее.

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

Проверьте установку:

bash
qwen --version

Шаг 2: Подключение к AITUNNEL

Qwen Code поддерживает несколько способов настройки. Выберите удобный:

Порядок приоритета

Qwen Code применяет настройки в следующем порядке (каждый следующий пункт переопределяет предыдущий): значения по умолчанию → system defaults → ~/.qwen/settings.json.qwen/settings.json в проекте → system settings → переменные окружения → аргументы командной строки.

Способ 1: Переменные окружения

Самый простой способ — экспортировать переменные в текущую сессию оболочки:

bash
export OPENAI_API_KEY="sk-aitunnel-xxx"
export OPENAI_BASE_URL="https://api.aitunnel.ru/v1"
export OPENAI_MODEL="qwen/qwen3-coder"

qwen

Замените sk-aitunnel-xxx на ваш реальный API ключ AITUNNEL.

Постоянство

Чтобы переменные сохранялись между сессиями, добавьте эти строки в ваш профиль оболочки (~/.bashrc, ~/.zshrc, или ~/.config/fish/config.fish).

Безопасность

Не коммитьте API ключи в систему контроля версий. Храните их в переменных окружения, .env файле вне репозитория или в системном менеджере секретов.

Способ 2: Файл .qwen/.env

Qwen Code автоматически подгружает переменные из .env файлов. Порядок поиска:

  1. .qwen/.env в текущей директории (и всех родительских до корня ФС)
  2. .env в текущей директории (и всех родительских)
  3. ~/.qwen/.env в домашней директории
  4. ~/.env

Загружается только первый найденный файл — значения не объединяются. Переменные из .qwen/.env никогда не исключаются фильтром (в отличие от обычного .env, из которого отсекаются DEBUG и другие служебные), поэтому это рекомендованное место для API-ключей.

Создайте ~/.qwen/.env:

bash
OPENAI_API_KEY=sk-aitunnel-xxx
OPENAI_BASE_URL=https://api.aitunnel.ru/v1
OPENAI_MODEL=qwen/qwen3-coder

После этого достаточно просто запустить qwen — ключ подхватится автоматически, ничего экспортировать в shell не нужно.

Проектные ключи

Если вам нужны разные ключи для разных проектов (например, рабочий и личный), положите .qwen/.env в корень проекта и добавьте его в .gitignore. Проектный .qwen/.env имеет приоритет над глобальным ~/.qwen/.env.

Способ 3: Глобальный конфиг (рекомендуется)

Официальная документация Qwen Code рекомендует настраивать провайдеров через файл ~/.qwen/settings.json. Это позволяет держать несколько моделей одновременно и переключаться между ними командой /model прямо в интерактивной сессии.

Создайте (или отредактируйте) файл ~/.qwen/settings.json:

json
{
  "modelProviders": {
    "openai": [
      {
        "id": "qwen/qwen3-coder",
        "name": "Qwen3-Coder (AITUNNEL)",
        "baseUrl": "https://api.aitunnel.ru/v1",
        "description": "Qwen3-Coder через AITUNNEL",
        "envKey": "AITUNNEL_API_KEY"
      }
    ]
  },
  "env": {
    "AITUNNEL_API_KEY": "sk-aitunnel-xxx"
  },
  "security": {
    "auth": {
      "selectedType": "openai"
    }
  },
  "model": {
    "name": "qwen/qwen3-coder"
  }
}

Замените sk-aitunnel-xxx на ваш реальный ключ.

Что делает каждое поле:

ПолеОписание
modelProviders.openai[].idID модели, который отправляется в API (см. список моделей)
modelProviders.openai[].baseUrlБазовый URL AITUNNEL: https://api.aitunnel.ru/v1
modelProviders.openai[].envKeyИмя переменной окружения, в которой хранится ключ
envFallback-хранилище ключей (низший приоритет; лучше использовать export или .env)
security.auth.selectedTypeПротокол при запуске — для AITUNNEL всегда openai
model.nameМодель по умолчанию при старте Qwen Code

Приоритет ключей

Ключ из export в оболочке или из .qwen/.env имеет более высокий приоритет, чем значение в env внутри settings.json. Рекомендуется задавать ключ через .qwen/.env или export AITUNNEL_API_KEY="sk-aitunnel-xxx" в ~/.bashrc / ~/.zshrc, а в settings.json хранить только структуру провайдеров.

Подстановка переменных в settings.json

Строковые значения в settings.json могут ссылаться на переменные окружения через синтаксис $VAR_NAME или ${VAR_NAME} — они автоматически раскрываются при загрузке. Это удобно, если вы хотите полностью вынести ключи за пределы JSON-конфига.

Полный порядок приоритета источников API-ключей
ПриоритетИсточникПоведение
1 (высший)CLI-флаг --openai-api-keyВсегда перекрывает остальные
2Shell-переменная (export, inline)Перекрывает .env и settings.json → env
3.env файл (первый найденный по порядку поиска)Применяется, если переменная не задана в shell
4 (низший)env в settings.jsonПрименяется, если не задано нигде выше

Способ 4: Конфиг на уровне проекта

Если вам нужны разные настройки для разных проектов, создайте .qwen/settings.json в корне проекта. Формат точно такой же, как у глобального конфига; настройки проекта переопределяют пользовательские.

Это удобно, чтобы делиться конфигурацией с командой через git (не забудьте добавить .qwen/settings.json или только секцию с ключом в .gitignore, если храните ключ в env).

Шаг 3: Запуск сессии

Перейдите в директорию проекта и запустите CLI:

bash
cd /path/to/your/project
qwen

При первом запуске Qwen Code может спросить способ аутентификации. Введите /auth и выберите OpenAI — через этот меню AITUNNEL подключается корректно. Любой запрос дальше будет маршрутизироваться через AITUNNEL.

Команда qwen auth и API-ключи

Если вы запустите qwen auth (без слеша, как отдельную CLI-команду), откроется интерактивное меню, но в нём будут только Qwen OAuth и Alibaba Cloud Coding Plan. Для работы с API-ключом AITUNNEL используйте /auth внутри сессии или пропишите "security": { "auth": { "selectedType": "openai" } } в settings.json.

Шаг 4: Проверка

В интерактивной сессии выполните:

text
/stats

Будут показаны текущая модель и провайдер. Отправьте любой запрос, например «Объясни структуру этого проекта», и проверьте панель активности AITUNNEL — запросы должны появляться в реальном времени.

Несколько моделей

Qwen Code позволяет держать несколько моделей в одном конфиге и переключаться между ними командой /model:

json
{
  "modelProviders": {
    "openai": [
      {
        "id": "qwen/qwen3-coder",
        "name": "Qwen3-Coder (AITUNNEL)",
        "baseUrl": "https://api.aitunnel.ru/v1",
        "envKey": "AITUNNEL_API_KEY"
      },
      {
        "id": "claude-sonnet-4-5",
        "name": "Claude Sonnet 4.5 (AITUNNEL)",
        "baseUrl": "https://api.aitunnel.ru/v1",
        "envKey": "AITUNNEL_API_KEY"
      },
      {
        "id": "gpt-5.2-pro",
        "name": "GPT-5.2 Pro (AITUNNEL)",
        "baseUrl": "https://api.aitunnel.ru/v1",
        "envKey": "AITUNNEL_API_KEY"
      },
      {
        "id": "moonshotai/kimi-k2",
        "name": "Kimi K2 (AITUNNEL)",
        "baseUrl": "https://api.aitunnel.ru/v1",
        "envKey": "AITUNNEL_API_KEY"
      }
    ]
  },
  "security": {
    "auth": {
      "selectedType": "openai"
    }
  },
  "model": {
    "name": "qwen/qwen3-coder"
  }
}

Затем в сессии:

text
/model

Появится список моделей, между которыми можно переключаться на лету.

Один ключ на всё

AITUNNEL использует один baseUrl и один API ключ для всех моделей — не нужно настраивать отдельных провайдеров для Anthropic, OpenAI и Google.

Быстрая модель для подсказок (fastModel)

Qwen Code использует отдельную «быструю» модель для генерации follow-up suggestions и спекулятивных запросов. По умолчанию для этого используется основная модель, но можно задать более дешёвую, чтобы снизить задержки и расходы:

json
{
  "model": {
    "name": "qwen/qwen3-coder"
  },
  "fastModel": "gemini-2.5-flash"
}

Выберите любую быструю модель из списка AITUNNEL — например, gemini-2.5-flash, gpt-5-mini или deepseek-chat. Переключить на лету можно командой /model --fast в сессии.

Файл контекста QWEN.md

Qwen Code поддерживает иерархическую «память» через файлы QWEN.md (аналог CLAUDE.md или AGENTS.md). Положите QWEN.md в корень проекта — его содержимое автоматически добавится в системный промпт при каждом запросе.

Пример QWEN.md:

markdown
# Проект: AITUNNEL Next.js Frontend

## Общие правила
- TypeScript 5.0+, Node.js 20+
- Все новые функции и классы должны иметь JSDoc комментарии
- Используй строгое равенство (`===` / `!==`)

## Стиль кода
- 2 пробела для отступов
- Компоненты React в PascalCase, хуки — в camelCase с префиксом `use`

## Запрещено
- Не добавлять внешние зависимости без явной необходимости

Также работает глобальный ~/.qwen/QWEN.md — используйте его для личных предпочтений, которые применяются ко всем проектам. Управлять контекстом можно через /memory show и /memory refresh.

Полезные CLI-флаги

Основные параметры командной строки:

bash
qwen --model qwen/qwen3-coder               # модель для текущей сессии
qwen --openai-api-key sk-aitunnel-xxx       # ключ прямо через флаг (высший приоритет)
qwen -p "Сгенерируй README для проекта"     # headless (одноразовый) запрос
qwen --approval-mode auto-edit              # авто-аппрув редактирования файлов
qwen --approval-mode yolo                   # авто-аппрув всех действий (осторожно!)
qwen --allowed-tools "Shell(git status)"    # безопасный whitelist для Shell
qwen --include-directories ../shared-lib    # подтянуть дополнительные директории
qwen -o json -p "..."                       # структурированный JSON-вывод

Режимы подтверждения (--approval-mode):

  • plan — только анализ, без изменений
  • default — спрашивать перед каждой записью в файл или shell-командой
  • auto-edit — авто-аппрув редактирования, но shell требует подтверждения
  • yolo — полный автомат (включает sandbox по умолчанию)

Headless-режим для скриптов

Qwen Code можно запускать без интерактивного UI — удобно для CI/CD и автоматизации:

bash
export OPENAI_API_KEY="sk-aitunnel-xxx"
export OPENAI_BASE_URL="https://api.aitunnel.ru/v1"
export OPENAI_MODEL="qwen/qwen3-coder"

qwen -p "Сгенерируй unit-тесты для src/utils.ts"

Подробнее — в официальной документации Headless mode.

Полезные команды

Внутри сессии:

  • /help — список команд
  • /auth — сменить способ аутентификации (здесь доступен OpenAI для AITUNNEL)
  • /model — переключить модель
  • /stats — информация о текущей сессии
  • /clear — очистить историю диалога
  • /compress — сжать историю для экономии токенов
  • /memory show / /memory refresh — показать / перезагрузить QWEN.md
  • /permissions — управление разрешениями на инструменты
  • /exit — выйти

В терминале (до запуска сессии):

  • qwen auth status — показать текущую конфигурацию аутентификации
  • qwen --version — версия CLI
  • qwen --help — полный список CLI-флагов

Устранение неполадок

401/403 при запросе

  • Проверьте, что ключ действителен в личном кабинете
  • Убедитесь, что баланс на счету положительный
  • OPENAI_BASE_URL должен быть https://api.aitunnel.ru/v1/v1, без слеша в конце)
  • Убедитесь, что в ключе нет лишних пробелов или переносов строк

Qwen Code пытается аутентифицироваться через Qwen OAuth

Если CLI открывает браузер для входа в qwen.ai или просит выбрать регион Alibaba Cloud, значит выбран не тот протокол. Решения:

  1. Запустите qwen auth status — проверьте, какой selectedType активен

  2. Внутри сессии выполните /auth и выберите OpenAI (именно через /auth, а не через CLI qwen auth — там OpenAI не отображается)

  3. Или пропишите в ~/.qwen/settings.json:

    json
    {
      "security": { "auth": { "selectedType": "openai" } }
    }

Модель не найдена / 404

Проверьте актуальный ID модели на странице моделей AITUNNEL. Например, должно быть именно qwen/qwen3-coder, а не qwen3-coder или qwen-coder.

Ошибки использования инструментов

Qwen Code активно использует tool calling для чтения файлов и выполнения команд. Убедитесь, что выбранная модель поддерживает вызов инструментов. Qwen3-Coder, Claude, GPT и Gemini поддерживают его из коробки.

Ошибки лимита контекста

Для больших проектов используйте модели с расширенным контекстным окном. Также помогает команда /compress — она сжимает историю диалога.

Дополнительные ресурсы

AITUNNEL