Qwen Code CLI
Подключение Qwen Code — терминального AI-агента от Alibaba (форк gemini-cli) — к Hubris.
Qwen Code — терминальный AI-агент от Alibaba, форк gemini-cli от Google. Несмотря на название, поддерживает любые OpenAI-совместимые провайдеры — не только модели семейства Qwen. Минималистичный TUI, удобен для CLI-сценариев и автоматизации.
Требования
- macOS / Linux / WSL / Windows
- Node.js 22+
- Аккаунт на hubris.pw и API-ключ
Установка
npm install -g @qwen-code/qwen-codeПосле установки команда qwen должна быть доступна в PATH:
qwen --versionПодключение к Hubris
Конфиг живёт в ~/.qwen/settings.json. Модели объявляются в секции modelProviders под провайдером openai — так Qwen Code называет любой OpenAI-совместимый API. Создайте файл или дополните существующий:
{
"security": { "auth": { "selectedType": "openai" } },
"modelProviders": {
"openai": [
{
"id": "anthropic/claude-haiku-4.5",
"name": "Claude Haiku",
"envKey": "HUBRIS_API_KEY",
"baseUrl": "https://api.hubris.pw/v1",
"generationConfig": { "contextWindowSize": 200000 }
},
{
"id": "openai/gpt-4o-mini",
"name": "GPT-4o mini",
"envKey": "HUBRIS_API_KEY",
"baseUrl": "https://api.hubris.pw/v1",
"generationConfig": { "contextWindowSize": 128000 }
},
{
"id": "google/gemini-3.7-flash",
"name": "Gemini Flash",
"envKey": "HUBRIS_API_KEY",
"baseUrl": "https://api.hubris.pw/v1",
"generationConfig": { "contextWindowSize": 1048576 }
}
]
}
}Сам ключ в файл не пишется: envKey — имя переменной окружения, из которой Qwen Code его прочитает. Задайте её в оболочке:
export HUBRIS_API_KEY="sk-gw-..."contextWindowSize для каждой модели подсмотрите в каталоге — это размер контекстного окна, на основе которого Qwen Code решает, когда обрезать историю диалога.
Старый формат с selectedAuthType и секцией openai.baseUrl Qwen Code молча переписывает в новый, но адрес из него не подхватывает — запросы уходят в Alibaba Model Studio и получают 401 со ссылкой на help.aliyun.com. Если видите такую ошибку, переведите конфиг на modelProviders.
Альтернатива без конфига — переменные окружения плюс флаг --auth-type openai:
export OPENAI_BASE_URL="https://api.hubris.pw/v1"
export OPENAI_API_KEY="sk-gw-..."
export OPENAI_MODEL="anthropic/claude-haiku-4.5"
qwen --auth-type openaiЗапустите агента в папке проекта:
cd /path/to/your/project
qwenПроверить подключение без интерфейса — одним запросом, промпт передаётся аргументом:
qwen -m google/gemini-3.7-flash "Ответь одним словом: ок"Переключение моделей
В рантайме:
/model anthropic/claude-haiku-4.5Или при запуске:
qwen --model openai/gpt-4o-miniРекомендуемые модели
| ID | Когда подходит |
|---|---|
anthropic/claude-haiku-4.5 | быстрая работа |
openai/gpt-4o-mini | универсальный выбор |
google/gemini-3.7-flash | мультимодальные сценарии, большой контекст |
Для сложных задач — Claude Sonnet/Opus или Qwen Coder из каталога.
Решение проблем
qwen: command not found после установки
- Проверьте, что глобальный bin-каталог npm в PATH:
npm prefix -gпокажет, где он (на Linux/macOS — подкаталогbin). Добавьте этот путь в$PATH.
[API Error: 401 Неверный API-ключ]
- Переменная из
envKey(в примере —HUBRIS_API_KEY) должна быть задана в той же оболочке, из которой запущен Qwen Code, и начинаться сsk-gw-. - После правки переменных окружения перезапустите терминал.
401 Incorrect API key provided … help.aliyun.com
- Запрос ушёл не в Hubris, а в Alibaba: в конфиге нет
baseUrlили он записан в старом формате. Переведите модели вmodelProviders(см. выше) или задайтеOPENAI_BASE_URL.
/model не показывает модели Hubris
- Проверьте, что массив
modelProviders.openaiнепустой и ID моделей совпадают с каталогом символ в символ. - Правки
modelProvidersподхватываются на лету, аsecurity.auth.selectedType— только при перезапуске.
Длинный контекст вылетает с ошибкой
- Поле
contextWindowSizeв конфиге должно соответствовать реальному контексту модели. Загляните в карточку модели в каталоге.
Что дальше
- Каталог моделей — ID и
contextWindowSizeдля всех моделей. - Управление API-ключами — отдельный ключ под Qwen Code.
- Расходы — детализация сессий.
- OpenCode — альтернативный терминальный агент.
Обновлено: