Назад в блог

Инструменты и интеграцииИнструкция

Qwen Code и CheapTokens: переменные окружения и settings.json

Как подключить Qwen Code к OpenAI-совместимому API: три переменные или одна запись в settings.json, полный id модели и ключ вне git.

Автор: CheapTokens TeamОпубликовано 4 мин чтения

Терминал Qwen Code с переменными OPENAI_API_KEY, OPENAI_BASE_URL и OPENAI_MODEL
Содержание
  1. Установка Qwen Code
  2. Способ 1: три переменные окружения
  3. Способ 2: settings.json и ключ вне git
  4. Сколько стоит сессия с агентом
  5. Другие модели
  6. Если Qwen Code не подключается

Qwen Code умеет подключаться к собственному OpenAI-совместимому адресу, поэтому для CheapTokens нужны три значения: базовый URL https://api.cheaptokens.dev/v1, ваш API-ключ и полный id модели, например deepseek-ai/DeepSeek-V4-Flash-0731. Задайте их переменными OPENAI_API_KEY, OPENAI_BASE_URL и OPENAI_MODEL либо впишите в ~/.qwen/settings.json. Оба способа взяты из документации Qwen Code по аутентификации (страница обновлена 22 октября 2026 года).

Представьте длинную сессию: агент читает дюжину файлов, правит три, гоняет тесты. На каждом шаге контекст отправляется заново, и вход оплачивается снова и снова. Поэтому дешёвая модель с оплатой за токены хорошо подходит терминальному агенту, а настройка ниже займёт минут десять.

Установка Qwen Code#

Нужен Node.js 22 или новее. В README проекта (github.com/QwenLM/qwen-code) перечислено несколько способов установки, вот два:

Установка Qwen Code

npm

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

Homebrew

bash
brew install qwen-code

Запускается командой qwen. В документации есть ещё /auth → Custom Provider для ручного подключения прокси или неподдерживаемого провайдера. Два способа ниже расписаны построчно, так что начните с любого из них.

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

Самый быстрый путь. Откройте терминал в папке проекта и выполните:

bash
export OPENAI_API_KEY="sk-your-api-key"
export OPENAI_BASE_URL="https://api.cheaptokens.dev/v1"
export OPENAI_MODEL="deepseek-ai/DeepSeek-V4-Flash-0731"
qwen

Ключ здесь заглушка, подставьте свой из кабинета CheapTokens. Именно export OPENAI_API_KEY говорит Qwen Code, что нужна OpenAI-совместимая авторизация, если вы настраиваете всё переменными. У OPENAI_MODEL есть псевдоним QWEN_MODEL.

На чём чаще всего спотыкаются, так это на id модели. Берите полный id из документации CheapTokens. Короткое имя из таблиц цен, deepseek-v4-flash-0731, API не принимает, а у разных провайдеров id отличаются.

Кто за что отвечает? Сопоставьте:

Найдите пары

Сопоставьте переменную и её роль

  • OPENAI_API_KEYВаш ключ CheapTokens; его экспорт включает OpenAI-совместимую авторизацию
  • OPENAI_BASE_URLАдрес, на который Qwen Code шлёт запросы
  • OPENAI_MODELId модели, который уходит в API
  • QWEN_MODELПсевдоним OPENAI_MODEL

Экспорт живёт, пока открыт терминал. Чтобы настройка осталась, используйте второй способ.

Способ 2: settings.json и ключ вне git#

Допустим, репозиторий общий и ключ в конфиге никому не нужен. Тогда модель описываем в ~/.qwen/settings.json, а ключ держим в отдельном файле.

json
{
  "modelProviders": {
    "openai": [
      {
        "id": "deepseek-ai/DeepSeek-V4-Flash-0731",
        "name": "DeepSeek-V4-Flash (CheapTokens)",
        "baseUrl": "https://api.cheaptokens.dev/v1",
        "description": "DeepSeek-V4-Flash через CheapTokens",
        "envKey": "CHEAPTOKENS_API_KEY"
      }
    ]
  },
  "security": { "auth": { "selectedType": "openai" } },
  "model": { "name": "deepseek-ai/DeepSeek-V4-Flash-0731" }
}

Четыре поля решают всё:

  • id — id модели, который уходит в API, поэтому он должен быть полным.
  • model.name обязан совпадать с одним из id, иначе Qwen Code нечего выбирать.
  • security.auth.selectedType со значением "openai" включает OpenAI-совместимый путь.
  • envKey — имя переменной с ключом. Поле необязательное, по умолчанию OPENAI_API_KEY.

Сам ключ кладём в .qwen/.env: документация рекомендует его для секретов, и в git этот файл не попадает:

bash
CHEAPTOKENS_API_KEY=sk-your-api-key

Почему лучше так, а не через блок env в settings.json: значения из env имеют самый низкий приоритет, а файл с ключом легко закоммитить случайно. Подробнее о хранении ключей — в статье как безопасно хранить API-ключ.

Переменные окружения и их аналоги в settings.json: ключ, адрес, id модели
Куда идёт каждое из трёх значений: переменные слева, settings.json справа

После запуска команда /model показывает настроенные модели и переключает их. Чтобы стартовать с нужной, выполните qwen --model "deepseek-ai/DeepSeek-V4-Flash-0731".

Сколько стоит сессия с агентом#

Терминальные агенты тяжёлые по входу: на каждом шаге они несут всё, что успели собрать. Возьмём задачу на 40 шагов и допустим 30 000 токенов входа и 1 000 токенов выхода на шаг. Получается 40 × 30 000 = 1 200 000 токенов входа и 40 × 1 000 = 40 000 токенов выхода. Вся задача по живым ценам:

Модель За запрос 40 запросов OpenRouter, 40 запросов
GLM-5.3-Flash $0.00064 $0.0256 $0.0526
DeepSeek-V4-Flash $0.00055 $0.022 $0.0633
MiniMax-M2.7 $0.0017 $0.066 $0.408

30 000 входных и 1 000 выходных токенов на запрос. Цены за 1M токенов актуальны и меняются вместе с нашими тарифами; столбец OpenRouter показывает справочные цены для той же нагрузки.

В сумме, с учётом входа и выхода, CheapTokens дешевле OpenRouter по каждой модели из таблицы. Для такого цикла хорошо подходит DeepSeek-V4-Flash: контекст 380K, до 32 768 токенов в одном ответе, одна цена в любое время суток и один баланс на все модели. У вас цифры будут другие, так что подвигайте ползунки:

Калькулятор стоимости

Ваш день с терминальным агентом

Входные токены на запрос: 25 000 · Выходные токены на запрос: 800 · Запросов в день: 120

МодельВ деньВ месяц
GLM-5.3-Flash$0.0638$1.92
DeepSeek-V4-Flash$0.0546$1.64
MiniMax-M2.7$0.164$4.93

Цены собраны на странице тарифов. Если интересно, как считается другой агент, в статье сколько стоит Cline та же арифметика.

Другие модели#

Переключение — это замена id и ничего больше. Возьмите его на странице моделей или из GET /v1/models:

  • zai-org/GLM-5.3-Flash: контекст 390K, до 8 192 токенов в ответе, итоговая цена ниже, чем у OpenRouter.
  • MiniMaxAI/MiniMax-M2.7: контекст 180K, до 8 192 токенов в ответе, итоговая цена ниже, чем у OpenRouter.

Смените OPENAI_MODEL или добавьте вторую запись в modelProviders.openai и переключайтесь через /model.

Если Qwen Code не подключается#

  • Не выбран тип авторизации. При настройке переменными должен быть экспортирован OPENAI_API_KEY. При settings.json проверьте, что selectedType равен "openai".
  • Модель не найдена. model.name должен совпадать с id до символа, а сам id — быть полным.
  • 401. Ключ не передан или неверный. Если используете envKey, убедитесь, что такая переменная есть в .qwen/.env или в оболочке.
  • 404. Проверьте, что адрес заканчивается на /v1, а в id нет опечатки. Подробный разбор — в статье ошибка API 401 или 404: ключ, адрес или id модели.
  • Переменная будто игнорируется. Значения из env в settings.json имеют самый низкий приоритет, поэтому заданная где-то ещё переменная победит.

Другие терминальные агенты настраиваются по той же схеме, например OpenCode и Aider. Всё остальное, от ключей до первого запроса, — в документации CheapTokens.