Skip to Content
Выполнение и Развертывание

Выполнение и развертывание 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 использует для выполнения инструментов, которые могут иметь побочные эффекты.

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

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

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

  • Режим разработки: Этот метод обеспечивает hot-reloading и удобен при активной разработке.

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

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

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

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

# Выполнение CLI напрямую из основной ветки на 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 Compiler (tsc). Полученный каталог dist/ и есть то, что попадает в NPM пакет. Это стандартный подход для библиотек на TypeScript.

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

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

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

Процесс релиза

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

  1. Собирает NPM пакеты с использованием tsc.
  2. Публикует NPM пакеты в artifact registry.
  3. Создает релизы в GitHub с приложенными артефактами.
Last updated on