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