Qwen Code

Агентный CLI QwenLM через AITUNNEL: Custom Provider, ключ в рублях, VPN и Alibaba Cloud не нужны.

Qwen Code — форк Gemini CLI. Говорит на OpenAI Chat Completions — отдельный прокси не ставится. Через AITUNNEL в терминал попадают модели из каталога, не только Qwen.

Зачем через AITUNNEL

  • Из России без VPN. Запросы идут на api.aitunnel.ru. Аккаунт Alibaba Cloud и Qwen OAuth не нужны.
  • Оплата в рублях, бюджет на ключе, расход в панели.
  • Не только Qwen. qwen3-coder-next — основная для агентного кода. Claude, GPT, Gemini, Kimi — те же baseUrl и ключ. Слаг со слешем уходит в OpenRouter.
  • Запасные модели и провайдер. Если апстрим не ответил — fallback и выбор провайдера.

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

Официальный «самый простой» способ для API-ключа — один файл ~/.qwen/settings.json. После него qwen стартует без меню /auth.

  1. Установка

    Рекомендуемый установщик — standalone-архив. После установки перезапустите терминал, если qwen ещё нет в PATH. npm — запасной путь, нужен Node.js 22+. Инструкция Qwen Code.

    curl -fsSL https://qwen-code-assets.oss-cn-hangzhou.aliyuncs.com/installation/install-qwen-standalone.sh | bash
    Проверка
    qwen --version
  2. Ключ в ~/.qwen/.env

    Создайте ключ в панели ключей. Положите его в ~/.qwen/.env — Qwen Code подхватит файл сам. Ключ в JSON не кладите: runtime читает process.env[envKey], поле env в settings.json — самый низкий приоритет.

    ~/.qwen/.env
    OPENAI_API_KEY=sk-aitunnel-xxx

    Ищется первый файл: .qwen/.env в проекте и родителях → .env~/.qwen/.env ~/.env. Проектный .qwen/.env кладите в .gitignore.

  3. Файл ~/.qwen/settings.json

    baseUrl задаётся здесь. Не правьте model.baseUrl вручную — пикер может тихо увести ту же модель на чужой эндпоинт.

    settings.json
    {
      "modelProviders": {
        "openai": [
          {
            "id": "qwen3-coder-next",
            "name": "Qwen3 Coder Next (AITUNNEL)",
            "baseUrl": "https://api.aitunnel.ru/v1",
            "envKey": "OPENAI_API_KEY"
          }
        ]
      },
      "security": {
        "auth": {
          "selectedType": "openai"
        }
      },
      "model": {
        "name": "qwen3-coder-next"
      }
    }

    envKey — имя переменной с ключом. Здесь это OPENAI_API_KEY из .qwen/.env.

  4. Запуск

    Терминал
    cd /path/to/your/project
    qwen

    Проверка работы: /stats, любой запрос, затем панель.

Другие способы отдать ключ

Custom Provider в /auth

То же самое интерактивно: qwen/auth → Custom Provider. Подходит, если не хотите править JSON руками. Результат тот же: OpenAI-compatible эндпоинт AITUNNEL.

Переменные окружения

Профиль оболочки
# ~/.zshrc, ~/.bashrc или ~/.config/fish/config.fish
export OPENAI_API_KEY="sk-aitunnel-xxx"

Для headless без settings.json добавьте ещё OPENAI_BASE_URL и OPENAI_MODEL — см. пример ниже.

Конфиг проекта

.qwen/settings.json в корне проекта перекрывает глобальный. Формат тот же. modelProviders лучше держать в ~/.qwen/settings.json, чтобы не сливать user- и project-настройки. Не коммитьте ключ.

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

ПриоритетИсточник
1 (высший)--openai-api-key
2Переменная в shell
3Первый найденный .env
4 (низший)env в settings.json

Настройки в целом: дефолты → ~/.qwen/settings.json .qwen/settings.json в проекте → env → флаги CLI.

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

Один baseUrl и один ключ на все модели:

modelProviders
{
  "modelProviders": {
    "openai": [
      {
        "id": "qwen3-coder-next",
        "name": "Qwen3 Coder Next (AITUNNEL)",
        "baseUrl": "https://api.aitunnel.ru/v1",
        "envKey": "OPENAI_API_KEY"
      },
      {
        "id": "claude-sonnet-4.6",
        "name": "Claude Sonnet 4.6 (AITUNNEL)",
        "baseUrl": "https://api.aitunnel.ru/v1",
        "envKey": "OPENAI_API_KEY"
      },
      {
        "id": "gpt-5.6-sol",
        "name": "GPT-5.6 Sol (AITUNNEL)",
        "baseUrl": "https://api.aitunnel.ru/v1",
        "envKey": "OPENAI_API_KEY"
      },
      {
        "id": "kimi-k2.7-code",
        "name": "Kimi K2.7 Code (AITUNNEL)",
        "baseUrl": "https://api.aitunnel.ru/v1",
        "envKey": "OPENAI_API_KEY"
      }
    ]
  },
  "security": {
    "auth": { "selectedType": "openai" }
  },
  "model": {
    "name": "qwen3-coder-next"
  }
}

В сессии — /model.

fastModel

Отдельная дешёвая модель для follow-up подсказок и tool-use summaries. По умолчанию берётся основная.

fastModel
{
  "model": { "name": "qwen3-coder-next" },
  "fastModel": "gemini-3.7-flash"
}

На лету: /model --fast. Удобный кандидат — gemini-3.7-flash.

QWEN.md

Иерархическая память — аналог CLAUDE.md / AGENTS.md. Файл в корне проекта попадает в системный промпт. Есть и глобальный ~/.qwen/QWEN.md.

QWEN.md
# Проект: Next.js Frontend

## Правила
- TypeScript 5.0+, Node.js 20+
- Все новые функции документируются JSDoc
- Строгое равенство (`===` / `!==`)

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

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

/memory show и /memory refresh — посмотреть и перезагрузить.

Флаги и headless

CLI
qwen --model qwen3-coder-next
qwen --openai-api-key sk-aitunnel-xxx
qwen -p "Сгенерируй README для проекта"
qwen --approval-mode auto-edit
qwen --approval-mode yolo
qwen --allowed-tools "Shell(git status)"
qwen --include-directories ../shared-lib
qwen -o json -p "..."
--approval-modeПоведение
planТолько анализ, без изменений
defaultСпрашивать перед записью и shell
auto-editПравки сами, shell с подтверждением
autoКлассификатор сам аппрувит безопасное
yoloПолный автомат по tool calls. Sandbox сам не включается — нужен --sandbox или tools.sandbox

CI:

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

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

-o json удобно парсить в скриптах. Подробнее — headless mode.

Команды

В сессии: /help, /auth, /doctor, /model, /stats, /clear, /compress, /memory show, /memory refresh, /permissions, /theme, /language, /quit.

В терминале: qwen --version, qwen --help. qwen auth больше нет.

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

  • 401 / 403. Ключ живой в панели ключей, баланс положительный, baseUrlhttps://api.aitunnel.ru/v1 /v1, без слеша в конце). Без пробелов и переносов в ключе.
  • Меню Alibaba / Coding Plan / Third-party. Выбран не Custom Provider. В сессии /auth Custom Provider, либо:
    selectedType
    {
      "security": {
        "auth": {
          "selectedType": "openai"
        }
      }
    }
    Проверка — /doctor.
  • Qwen OAuth discontinued. Бесплатный OAuth закрыт 15 апреля 2026. Это не баг AITUNNEL — переключитесь на Custom Provider.
  • Model not found / 404. Id как в каталоге: qwen3-coder-next, не qwen/qwen3-coder-next и не qwen-coder. Слаг со слешем уходит в OpenRouter.
  • Tool calling. Нужна модель с вызовом инструментов. qwen3-coder-next, Claude, GPT и Gemini умеют.
  • Контекст. claude-sonnet-4.6 — 1M, gpt-5.6-sol — 1M. /compress сжимает историю. kimi-k2.7-code — ещё один длинный контекст.
  • qwen не в PATH. Перезапустите терминал после standalone-установщика. Если ставили через npm — глобальный bin npm должен быть в PATH.
  • Приватность. AITUNNEL не логирует исходный код промптов. Не коммитьте .env и settings.json с ключом.

Смотрите также