Skip to Content
Руководство для разработчиковРазработкаВыполнение и развертывание Qwen Code

Выполнение и развертывание Qwen Code

Этот документ описывает, как запустить Qwen Code, и объясняет архитектуру развертывания, используемую Qwen Code.

Запуск Qwen Code

Существует несколько способов запуска Qwen Code. Выбор варианта зависит от того, как вы планируете его использовать.


1. Стандартная установка (рекомендуется для обычных пользователей)

Это рекомендуемый способ установки Qwen Code для конечных пользователей. Он включает загрузку пакета Qwen Code из реестра NPM.

  • Глобальная установка:

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

    Затем запускайте CLI из любого места:

    qwen
  • Выполнение через NPX:

    # Выполнить последнюю версию из NPM без глобальной установки npx @qwen-code/qwen-code

2. Запуск в песочнице (Docker/Podman)

Для безопасности и изоляции Qwen Code можно запускать внутри контейнера. Это способ по умолчанию, которым CLI выполняет инструменты, способные иметь побочные эффекты.

  • Напрямую из реестра: Вы можете запустить опубликованный образ песочницы напрямую. Это полезно для сред, где есть только Docker и нужно запустить CLI.
    # Запустить опубликованный образ песочницы docker run --rm -it ghcr.io/qwenlm/qwen-code:0.0.11
  • С использованием флага --sandbox: Если Qwen Code установлен локально (с помощью стандартной установки, описанной выше), вы можете указать ему запускаться внутри контейнера песочницы.
    qwen --sandbox -y -p "ваш запрос здесь"

3. Запуск из исходного кода (рекомендуется для контрибьюторов Qwen Code)

Контрибьюторы проекта захотят запускать CLI напрямую из исходного кода.

  • Режим разработки: Этот метод обеспечивает горячую перезагрузку и полезен для активной разработки.

    # Из корня репозитория npm run start
  • Режим, приближенный к продакшену (связанный пакет): Этот метод имитирует глобальную установку путем привязки вашего локального пакета. Полезен для тестирования локальной сборки в рабочем процессе продакшена.

    # Привязать локальный пакет CLI к глобальному node_modules npm link packages/cli # Теперь вы можете запустить вашу локальную версию с помощью команды `qwen` qwen

4. Запуск последнего коммита Qwen Code из GitHub

Вы можете запустить самую последнюю закоммиченную версию Qwen Code напрямую из репозитория GitHub. Это полезно для тестирования функций, находящихся в разработке.

# Выполнить CLI напрямую из ветки main на GitHub npx https://github.com/QwenLM/qwen-code

Архитектура развертывания

Описанные выше методы выполнения стали возможны благодаря следующим архитектурным компонентам и процессам:

Пакеты NPM

Проект Qwen Code представляет собой монорепозиторий, публикующий основные пакеты в реестр NPM:

  • @qwen-code/qwen-code-core: Серверная часть, обрабатывающая логику и выполнение инструментов.
  • @qwen-code/qwen-code: Клиентская часть для пользователя.

Эти пакеты используются при стандартной установке и при запуске Qwen Code из исходного кода.

Процессы сборки и упаковки

Используются два различных процесса сборки в зависимости от канала распространения:

  • Публикация в NPM: Для публикации в реестр NPM исходный код TypeScript в @qwen-code/qwen-code-core и @qwen-code/qwen-code транспилируется в стандартный JavaScript с помощью компилятора TypeScript (tsc). Полученная директория dist/ публикуется в пакете NPM. Это стандартный подход для библиотек TypeScript.

  • Выполнение через npx из GitHub: При запуске последней версии Qwen Code напрямую из GitHub запускается другой процесс, инициируемый скриптом prepare в package.json. Этот скрипт использует esbuild для сборки всего приложения и его зависимостей в один самодостаточный JavaScript-файл. Эта сборка создается на лету на машине пользователя и не сохраняется в репозитории.

Docker-образ песочницы

Метод выполнения на основе Docker поддерживается контейнерным образом qwen-code-sandbox. Этот образ публикуется в реестре контейнеров и содержит предустановленную глобальную версию Qwen Code.

Процесс выпуска

Процесс выпуска автоматизирован через GitHub Actions. Рабочий процесс выпуска выполняет следующие действия:

  1. Собирает пакеты NPM с помощью tsc.
  2. Публикует пакеты NPM в реестр артефактов.
  3. Создает релизы на GitHub с собранными артефактами.

Предварительная сборка OpenTUI

Автономные архивы по умолчанию поставляются в классическом варианте Node.js. Установка переменной репозитория OPENTUI_PREVIEW_RELEASE_ENABLED в значение true дополнительно собирает предварительную сборку bun/OpenTUI, архивы которой имеют суффикс -opentui-preview, а лаунчер по умолчанию устанавливает QWEN_TUI_RENDERER в значение opentui. Если переменная не установлена, эта сборка не создается.

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

Last updated on