Перейти к основному содержанию
Qwen Code — терминальный агент от команды QwenLM: он читает файлы проекта, пишет и правит код, запускает команды и работает с git. Агент устроен вокруг вызовов модели, поэтому подключение сводится к двум значениям — адрес шлюза и ключ.
От Qwen Code нужны ровно две вещи: базовый адрес https://speshu.ai/api/v1 и API-ключ. Агент говорит с /api/v1/chat/completions обычным OpenAI-совместимым запросом, поэтому код менять не нужно — указываете адрес, вставляете ключ и выбираете модель. Ключ создаётся в личном кабинете, подробности — в разделе Аутентификация.

Требования

  • Node.js 20 или новее
  • macOS, Linux или Windows
  • Ключ SpeShu.AI

Установка

После установки перезапустите терминал, чтобы команда qwen и переменные окружения вступили в силу.
1

Сохраните ключ в переменной окружения

Положите строку в ~/.zshrc или ~/.bashrc, чтобы ключ переживал новый терминал. Проверка, которая ничего не стоит:
cURL
Ответ {"RUB": "1250.00", "USD": "3.75"} означает, что ключ принят. Пустой объект {} — тоже корректный ответ: ключ рабочий, записей в кошельке пока нет.
2

Возьмите идентификатор модели из каталога

Идентификаторы текстовых моделей не зашивайте в код: состав каталога меняется, и зашитый в конфиг идентификатор начинает падать с 404 model_not_found. Возьмите его из GET /api/v1/models и сохраните рядом с ключом:
cURL
.data[0] — первый элемент, чтобы пример был запускаемым. Выбирайте модель по cost_completion, context_length и наличию зрения. Формат ответа разобран в разделе Модели и цены.
3

Укажите адрес шлюза и ключ в настройках агента

Собственная конфигурация Qwen Code — файл settings.json. Разделы Model Providers и Model в нём отвечают за то, куда агент ходит и какой моделью говорит; ключ при этом лучше оставить в переменной окружения, а в файле сослаться на её имя.
Диалоги /auth и /model — самый устойчивый путь: они есть во всех линейках и не зависят от того, как именно устроен файл конфигурации в вашей версии.
4

Запустите первый сеанс и проверьте, что всё работает

В сеансе попросите агента что-то, что не требует правок: «Прочитай README.md и перескажи его в трёх пунктах». Если модель ответила и назвала содержимое файла, адрес, ключ и идентификатор верны.
Агент выполняет команды в вашем каталоге без дополнительного подтверждения, если вы не сузили ему права. Начните с чтения: команда только просматривает файлы и ничего не меняет.

Конфигурация

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

Самый короткий способ подключения — экспортировать обе переменные и назвать их в том виде, который агент читает по умолчанию:
Имя OPENAI_BASE_URL здесь — не про провайдера OpenAI. Это штатная переменная, которую Qwen Code читает для любого OpenAI-совместимого адреса.
Значение адреса должно заканчиваться ровно на /v1, без завершающего слэша: https://speshu.ai/api/v1/ даёт путь с двойным разделителем и тот же 404, что и адрес без /v1.

Файл настроек

Если хотите зафиксировать адрес и ключ в конфигурации, откройте settings.json агента и добавьте провайдера. Местоположение: Форма раздела зависит от версии: у ранних выпусков modelProviders — объект, ключ которого — имя провайдера, у поздних — список записей с явными полями. Оба варианта описывают одно и то же: адрес шлюза, имя переменной с ключом и список моделей.
envKey — имя переменной окружения, а не сам ключ. Так секрет не попадает в файл на диске.
Проверить, какой вариант читает ваша версия, можно так: запустите qwen из временного каталога без файла .qwen/settings.json в проекте, выполните /model и посмотрите, подхватились ли адрес и ключ из переменных окружения. Если подхватились — файл можно не трогать вообще.

Что ещё работает

Потоковая передача

Отдельного флага для неё не нужно: агент всегда читает ответ по частям, иначе интерфейс замирал бы на минуты. Формат кадров, маркер [DONE] и кадр с usage.cost.total_cost разобраны в гайде Потоковая передача.

Инструменты агента

Встроенные инструменты (чтение файлов, правка, запуск команд) работают поверх обычного tools из протокола вызова функций. Полный цикл вызова — на странице Вызов функций.

MCP-серверы

Qwen Code умеет подключать внешние инструменты через MCP; конфигурация лежит в файле .mcp.json в корне проекта. Сами MCP-серверы ходят в сторонние сервисы и от SpeShu.AI ничего не требуют. Разбор подключения — в гайде MCP.

Изображения и файлы во входе

Скриншот, сохранённый в проект, агент передаёт модели как изображение — так работает зрение. Не каждая модель его принимает: запрос с картинкой к модели без зрения отвергается целиком с 400 invalid_request. Требования к ссылке и все четыре типа блоков контента — в гайде Медиаввод.

Генерация медиа

Медиа API не OpenAI-совместимый, и агент его не вызывает. Задачи создаются отдельным запросом к POST /api/v1/async/media/tasks с оплатой при создании и последующим опросом статуса — формат конверта и Idempotency-Key в разделе Создать задачу. Идентификаторы медиа-моделей, в отличие от текстовых, стабильны: берите их из GET /api/v1/media/models.

Об эмбеддингах

SpeShu.AI не отдаёт эмбеддинги: эндпоинта /embeddings в /api/v1 нет. Если вы подключаете к агенту MCP-сервер или расширение, которому нужен векторный поиск по проекту, этот шаг идёт к отдельному провайдеру со своим адресом и своим ключом — настройте их отдельно, оставив генерацию на SpeShu.AI. Подменять адрес в этом шаге на наш нельзя: запрос вернёт 404.

Частые проблемы

Проверьте адрес целиком: https://speshu.ai/api/v1, без завершающего слэша и без потерянного /v1. Диагностика: echo $OPENAI_BASE_URL. Разбор адресов — в Введении в API.
Агент читает OPENAI_API_KEY, а не SPESHU_API_KEY. Либо переименуйте переменную, либо укажите в настройках envKey с именем вашей переменной. Проверьте значение отдельно: curl -s https://speshu.ai/api/v1/balance -H "Authorization: Bearer $SPESHU_API_KEY".
В конфигурации или в выборе модели зашит идентификатор, которого больше нет в GET /api/v1/models. Обновите переменную и выберите модель заново через /model. Почему так — в разделе Модели и цены.
Агент подставляет параметры генерации, которых в API нет, — например, настройки рассуждения или температуры из своей секции настроек. Снимите их в настройках агента и повторите: незнакомые поля отвергаются целиком. Полная таблица кодов — на странице Ошибки.
На балансе нет положительной суммы. Проверка идёт до обращения к модели, деньги за отказ не списываются. Пополнение — на speshu.ai/profile, таймауты и квоты — в разделе Лимиты.
Форматы ошибок, коды и цикл повторов — на странице Ошибки.

Что дальше

Начало работы

Полный маршрут от ключа до медиа-задачи

Модели и цены

Как выбрать идентификатор и на что смотреть

Потоковая передача

SSE, [DONE] и кадр со списанием

Вызов функций

Полный цикл вызова инструмента