Выполнение и развертывание 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 релиза выполняет следующие действия:
- Собирает NPM пакеты с использованием
tsc
. - Публикует NPM пакеты в artifact registry.
- Создает релизы в GitHub с приложенными артефактами.