Запуск управляемых сессий локально
Управляемый локальный режим использует постоянную встроенную базу данных H2. При наличии локальной Java 21 первый запуск Managed автоматически загружает соответствующий JAR Java-сервера. Он повторно использует исполняемый файл Node, на котором работает Qwen, его Hosted Harness, нативную точку входа воркера и production WebShell. Пользователям не нужно устанавливать MySQL, Docker, Maven или systemd. Опциональная предустановленная среда выполнения включает Java; стандартная загрузка и облегчённая редакция требуют локальную Java 21.
Этот режим является экспериментальным. Реализация поддерживает нативные macOS и Linux на arm64 и x64. Результаты проверки платформы записываются отдельно; указание целевой платформы для упаковки не означает, что эта платформа прошла сквозную валидацию. Архивы среды выполнения Managed собираются явно, как описано ниже; обычные пакеты CLI не содержат Java-нагрузку. Опциональный полный автономный архив Managed объединяет все компоненты.
Запуск и остановка
Используйте версию Qwen с поддержкой Managed local. Для старых релизов требуется
обновление CLI; установка среды выполнения сама по себе не добавит лаунчер. Установите Java 21
и задайте JAVA_HOME как её домашний каталог или поместите её исполняемый файл в PATH, затем выполните:
qwen serve --managed --openПеред созданием данных приложения или запуском сервисов Qwen проверяет Java 21 и
загружает qwen-managed-agent-server-<cli-version>.jar вместе с контрольной суммой
с официального зеркала релизов Aliyun OSS, с тем же GitHub Release в качестве фолбэка.
Он проверяет контрольную сумму и атомарно устанавливает полную среду выполнения в
<Qwen home>/managed-runtime/<cli-version>/<platform>-<arch>/. Последующие запуски
используют этот кэш без обращения к сети. Обычные команды Qwen не загружают её.
Загружается только JAR сервиса; Qwen не устанавливает Java и не запускает Maven.
Если соответствующий релиз недоступен или загрузка завершается ошибкой, данные приложения
и дочерние процессы сервиса не создаются. Повторите попытку позже или предустановите подходящую среду выполнения.
Для автономного использования или пакетной Java получите подходящий
qwen-code-managed-runtime-<platform>-<arch>.tar.gz и его файл .sha256 у
вашего сборщика дистрибутива. Проверьте и распакуйте его перед запуском:
shasum -a 256 -c qwen-code-managed-runtime-darwin-arm64.tar.gz.sha256
mkdir -p "${QWEN_HOME:-$HOME/.qwen}"
tar -xzf qwen-code-managed-runtime-darwin-arm64.tar.gz -C "${QWEN_HOME:-$HOME/.qwen}"
qwen serve --managed --openАрхив устанавливается в
<Qwen home>/managed-runtime/<cli-version>/<platform>-<arch>/. Qwen обнаруживает
каталог для своей точной версии и платформы автоматически. Среда выполнения
не включает отдельную установку Node, CLI, Harness, воркера или WebShell.
Для меньшей автономной нагрузки выберите qwen-code-managed-runtime-lite-<platform>-<arch>.tar.gz
и проверьте/распакуйте его тем же способом. Он содержит только JAR сервера и
манифест. Установите одну редакцию в чистый каталог версии/целевой платформы; не
накладывайте облегчённый и пакетный архивы друг на друга. Облегчённый лаунчер использует
JAVA_HOME/bin/java, если JAVA_HOME не пуст, иначе первый исполняемый файл
java в PATH. Ему требуется именно Java 21, и он проверяет исполняемый файл
перед созданием состояния приложения. Некорректный JAVA_HOME является ошибкой, даже если
PATH содержит другую рабочую Java. Например:
JAVA_HOME=/absolute/java-21-home qwen serve --managed --openНа macOS JAVA_HOME обычно заканчивается на Contents/Home. Отсутствие или несовместимость
Java приводит к ошибке установки/конфигурации перед загрузкой JAR; Qwen не загружает Java.
Пакетная редакция всегда использует собственную Java и не переключается на
системную Java, если её нагрузка повреждена.
Опциональный полный qwen-code-managed-local-<platform>-<arch>.tar.gz также
работает: распакуйте его и выполните ./qwen-code/bin/qwen serve --managed --open.
Приложение привязывается к 127.0.0.1:4170. Используйте --port 0 для свободного
порта или выберите фиксированный порт. Держите терминал открытым; Ctrl+C завершает
обычный демон, Java-сервис и Harness. systemd является опциональным для развёртываний под управлением оператора
и не используется этой командой.
Занятый публичный порт следует ограниченной логике повторного подбора ближайшего порта обычного демона;
используйте адрес браузера, напечатанный лаунчером.
Эта одна команда запускает и обычный демон, и Managed Agent. Тот же WebShell перечисляет обычные и управляемые рабочие пространства и сессии вместе в разделе Projects, с меткой Managed на управляемых рабочих пространствах и без вкладок режима выполнения. Новая задача следует за выбранным рабочим пространством или разговором. Локальные сессии используют каталог, в котором была выполнена команда, тогда как управляемые сессии используют созданные приложением рабочие пространства или явно импортированные локальные проекты. Оба используют один и тот же аутентифицированный источник браузера; не нужно запускать вторую команду демона или открывать вторую страницу браузера.
В Add workspace выберите Local (daemon) или Managed (Managed Agent) перед отправкой. Выбор по умолчанию соответствует сервису текущего разговора. Строки рабочих пространств и New task показывают этот сервис, и новые задачи наследуют выбранное рабочее пространство. Существующая поддержка SSH-рабочих пространств демона остаётся доступной; регистрация Managed SSH не интегрирована в этот общий диалог.
Терминал печатает URL браузера с фрагментом токена. Относитесь к нему как к локальному
паролю. Браузер использует токен для аутентификации каждого API-запроса; ключи подписи Java
и внутренние учётные данные никогда не попадают в браузер. Слушатель работает
только на loopback. Для headless-машины пропустите --open и откройте напечатанный URL
на этой машине или используйте управляемый вами аутентифицированный туннель.
Унифицированное прилож��ние в настоящее время поддерживает только локальную loopback-страницу. Существующий пункт Mobile access / Local Control полной оболочки не интегрирован с загрузкой Managed: сопряжённый LAN-слушатель не может открыть эту унифицированную страницу. Мобильный доступ требует отдельной интеграции; обычный демон сохраняет своё существующее поведение Local Control.
Harness использует обычную конфигурацию моделей Qwen и учётные данные провайдеров.
Настройте модель с помощью обычной настройки Qwen CLI перед отправкой первого
промпта. Files и Shell используют режим одобрения default; Managed UI запрашивает
одобрение перед действием, требующим его.
После перезапуска продолжение существующей сессии может ожидать истечения предыдущей аренды writer SQL (по умолчанию 60 секунд). Сохраните исходный каталог данных и повторите попытку после этого интервала; перезапуск процессов не снимает владение.
Рабочие пространства и постоянные данные
Стандартный закрытый каталог данных — <Qwen home>/managed-local, обычно
~/.qwen/managed-local. Переопределите его с помощью:
qwen serve --managed --managed-data-dir /absolute/private/data --openКаталог должен находиться вне каждого Git worktree. Один лаунчер может использовать его в один момент времени; Java также удерживает эксклюзивную файловую блокировку базы данных. Частные порты сервиса и учётные данные остаются стабильными между перезапусками. Частный порт, занятый другим приложением, приводит к сбою запуска; выберите другой чистый каталог данных или остановите конфликтующий сервис вместо редактирования сохранённых фактов.
Запуск создаёт принадлежащее приложению рабочее пространство по умолчанию и его OWNER grant через существующий идемпотентный Workspace API. Чтобы использовать существующий локальный проект, откройте Workspace → Choose existing directory, найдите или введите его абсолютный путь, затем добавьте папку. Сервис регистрирует её родителя и автоматически предоставляет OWNER доступ, сохраняя существующие файлы на месте. Новые задачи начинаются в выбранном проекте. Вы также можете создать пустое рабочее пространство.
Каталог запуска остаётся доступным для локальных сессий и не импортируется
автоматически. --workspace по-прежнему не поддерживается в режиме Managed local; выберите
проект в UI. Служебный маркер .qwen-managed-storage.json
хранится вне Git worktree; не редактируйте, не удаляйте, не отправляйте в stash и не коммитьте его. Импортированные
файлы проекта остаются вне закрытого каталога данных Managed и требуют
собственного резервного копирования.
История локальных сессий продолжает использовать обычное хранилище Qwen. Она отделена от каталога данных Managed и не включается в резервную копию только Managed.
Сохраняйте полный каталог данных целиком, включая state.json,
database/, runtime/, worker-home/ и workspaces/. Завершите или отмените
активную работу, закройте её сессии, затем остановите приложение перед созданием
резервной копии файловой системы. Долговечные оригинальные воркеры могут пережить выход плоскости управления;
подтвердите, что все writer рабочих пространств остановились. Неизвестное выполнение требует
существующей процедуры восстановления оригинального владельца перед автономным резервным копированием.
Учётные данные, база данных, история воркеров и идентичность рабочего пространства принадлежат одной
установке. Восстановление только подмножества
может закрыть допуск восстановления. Запуск не воссоздаёт отсутствующий маркер и
не заменяет повреждённые учётные данные. Сервисная диагностика находится в logs/.
macOS поддерживает нативных воркеров и устойчивое усыновление в рамках одной загрузки. Доверенное восстановление после перезагрузки всего хоста в настоящее время отключено в локальном лаунчере. Неизвестные результаты инструментов сохраняют существующие правила восстановления оригинального владельца и никогда не воспроизводятся вслепую. Этот режим не добавляет автоматический запуск при входе в систему и не предотвращает сон ноутбука.
Сборка дистрибутива
Эти команды предназначены для сборщиков релизов, а не для конечных пользователей. Соберите CLI и Java сервер из одного и того же чекаута с Node 22+, Java 21 и Maven 3.8.9+:
corepack pnpm install --frozen-lockfile
npm run build
npm run typecheck
npm run bundle
npm run prepare:package
mvn -f packages/sdk-java/qwencode/pom.xml -DskipTests -Dgpg.skip=true install
mvn -f packages/managed-agent-server/pom.xml verify
npm run package:managed-runtime -- \
--target darwin-arm64 \
--server-jar packages/managed-agent-server/target/qwen-managed-agent-server-0.1.0-alpha.jar \
--jre-home /verified/java-21-home \
--out-dir /output/managed-runtimeСборщику среды выполнения нужны только соответствующий JAR сервера, среда выполнения Java и версия CLI
из этого чекаута. Ему не нужны собранные ресурсы CLI или архив Node.
По умолчанию он записывает в
packages/managed-agent-server/target/managed-runtime, вне ресурсов CLI
dist/. Он создаёт архив среды выполнения и файл .sha256 для каждого архива. Обычный
CLI собирается/выпускается отдельно.
Соберите облегчённую среду выполнения с тем же JAR сервера, используя --without-jre
вместо --jre-home:
npm run package:managed-runtime -- \
--target darwin-arm64 \
--server-jar packages/managed-agent-server/target/qwen-managed-agent-server-0.1.0-alpha.jar \
--without-jre \
--out-dir /output/managed-runtimeЭто создаёт qwen-code-managed-runtime-lite-darwin-arm64.tar.gz и его контрольную сумму.
Облегчённому сборщику не нужны входные данные Java. Для опционального полного дистрибутива:
npm run package:standalone -- \
--target darwin-arm64 \
--node-archive /verified/node-v22-darwin-arm64.tar.gz \
--managed-server-jar packages/managed-agent-server/target/qwen-managed-agent-server-0.1.0-alpha.jar \
--managed-jre-home /verified/java-21-home \
--out-dir /output/managed-localИспользуйте полный распакованный домашний каталог среды выполнения, содержащий bin/java, lib/modules,
release и legal/. macOS JRE может размещать это в Contents/Home.
Сборщик проверяет мажорную версию Java, ОС и архитектуру, включает её
лицензии и записывает SHA-256 сервера и соответствующую версию CLI в
манифест нагрузки. Полный автономный использует lib/managed-runtime/ и
создаёт SHA256SUMS. Проверьте контрольные суммы издателя входных данных среды выполнения перед сборкой.
Windows и Bun managed execution отклоняются; лаунчер требует Node 22+.
Для явного расположения среды выполнения
QWEN_MANAGED_LOCAL_RUNTIME_DIR=/absolute/managed-runtime направляет локальный
CLI непосредственно на каталог, содержащий manifest.json и server.jar
(плюс jre/ для пакетной редакции).
Он имеет приоритет над совместно расположенной нагрузкой и версионной установкой Qwen-home.
Существующая совместно расположенная нагрузка имеет приоритет над установкой Qwen-home.
Выбранная некорректная или неполная нагрузка никогда не заменяется другой.
Отсутствующая явно выбранная нагрузка, неверная версия CLI, целевая платформа,
мажорная версия Java или контрольная сумма сервера приводят к сбою до запуска дочерних процессов. Только отсутствующий
кэш по умолчанию запускает установку JAR; существующие повреждённые нагрузки не заменяются.
Maven никогда не запускается при старте приложения.
Публикация JAR первого использования
Рабочий процесс Release Managed server runtime собирается из уже опубликованного
тега релиза CLI, используя SDK и сервер из этой точной ревизии исходного кода. Ручной
запуск должен быть отправлен из main и по умолчанию выполняется в режиме dry run. Он проверяет
CLI и Java-модуль, собирает профиль central-release и сохраняет
JAR и контрольную сумму как артефакты рабочего процесса без изменения публичных репозиториев.
После проверки dry run операторы релиза могут запустить тот же тег с
dry_run=false через защищённое окружение production-release. Рабочий процесс
устанавливает версию артефакта сервера равной версии CLI, публикует
com.alibaba:qwen-managed-agent-server:<cli-version> в Maven Central с
исходниками, Javadoc и подписями, и распространяет тот же основной JAR и его
.sha256 через этот GitHub Release и существующее версионное зеркало OSS.
Вспомогательные JAR оператора не прилагаются к публикации Central. Существующие
ресурсы сравниваются побайтово и никогда не заменяются другим содержимым.
Опубликованные события релиза CLI также запускают этот рабочий процесс автоматически.
CLI загружается из OSS/GitHub, а не Maven Central. Он не разрешает SDK как отдельную зависимость пользователя: исполняемый JAR сервера включает свои Java зависимости. Ресурсы среды выполнения должны существовать для точного релиза CLI до того, как загрузка первого использования завершится успешно. Локальная валидация этого PR не публикует эти ресурсы и не обходит production окружение релиза.
Смотрите двуязычный дизайн-документ для границ владения и критериев валидации, и справочник Java-сервера для ориентированных на оператора развёртываний MySQL.