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.10
  • Использование флага --sandbox: Если у вас локально установлен Qwen Code (стандартной установкой, описанной выше), вы можете указать ему запускаться внутри контейнера песочницы.
    qwen --sandbox -y -p "your prompt here"

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

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

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

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

    # Линкуем локальный 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 пакеты в реестре артефактов.
  3. Создает релизы GitHub с приложенными бандлами.
Last updated on