Skip to Content
Руководство для разработчиковDaemonСправочник по конфигурации

Справочник по конфигурации

Обзор

На этой странице собраны все настройки, влияющие на работу демона qwen serve и его адаптеров: переменные окружения, флаги CLI, ключи settings.json и программные параметры. Страницы, посвящённые отдельным функциям, ссылаются сюда, когда требуется описание сквозных настроек.

Флаги CLI (qwen serve)

ФлагТипПо умолчаниюОписание
--hostname <host>строка127.0.0.1Адрес привязки. Значения loopback: 127.0.0.1, localhost, ::1, [::1]. Для non‑loopback требуется bearer‑токен при запуске. Ввод host:port отвергается с рекомендацией использовать --port.
--port <n>число4170Порт прослушивания; 0 означает эфемерный порт.
--token <s>строкаenvBearer‑токен. Переопределяет QWEN_SERVER_TOKEN и обрезается при запуске. Отображается в командной строке процесса, поэтому в развёртываниях предпочтительнее использовать окружение.
--require-authбулевоfalseРаспространяет bearer‑аутентификацию на loopback и /health; без токена при запуске отказывает.
--workspace <dir>абсолютный путьprocess.cwd()Привязанная рабочая область. Должен быть абсолютным путём к каталогу; канонизируется один раз при запуске.
--max-sessions <n>число20Лимит активных сессий. 0 / Infinity — без ограничений; NaN / отрицательные значения вызывают ошибку.
--max-pending-prompts-per-session <n>число5Лимит принятых, но ожидающих/выполняющихся подсказок на сессию. При превышении возвращается 503. 0 / Infinity — без ограничений; отрицательные или нецелые значения вызывают ошибку.
--max-connections <n>число256Параметр server.maxConnections HTTP‑слушателя; 0 / Infinity — без ограничений.
--enable-session-shellбулевоfalseВключает прямое выполнение POST /session/:id/shell. Требует bearer‑токен, каждый вызов должен содержать привязанный к сессии X-Qwen-Client-Id.
--event-ring-size <n>число8000Размер кольца повторного воспроизведения SSE на сессию; мягкий лимит — 1_000_000.
--http-bridgeбулевоtrueРежим моста этапа 1. --no-http-bridge всё равно переключается на http‑bridge и выводит сообщение в stderr.
--mcp-client-budget <n>положительное целоене заданоУстанавливает WorkspaceMcpBudget.clientBudget и передаёт его дочернему процессу ACP через childEnvOverrides.
--mcp-budget-mode <m>off / warn / enforcewarn, если задан бюджет, иначе offУстанавливает WorkspaceMcpBudget.mode; enforce требует --mcp-client-budget.
--allow-origin <pattern>повторяемая строкане заданоБелый список источников для кросс‑доменных запросов, заменяющий стандартный запрет CORS. * разрешает любой источник, но требует токена.
--allow-private-auth-base-urlбулевоfalseРазрешает /workspace/auth/provider устанавливать baseUrl провайдера аутентификации на localhost / частную сеть; использовать только в доверенной локальной разработке.
--prompt-deadline-ms <n>положительное целоене заданоСерверный лимит времени выполнения подсказки в миллисекундах. При тайм‑ауте прерывание и возврат ошибки.
--writer-idle-timeout-ms <n>положительное целоене заданоТайм‑аут простоя на одно SSE‑соединение в миллисекундах. Демон закрывает SSE‑соединение, если за это время не отправлено ни одного события.
--channel-idle-timeout-ms <n>неотрицательное целое0Сколько времени держать дочерний процесс ACP после закрытия последней сессии. 0 означает немедленное освобождение.
--session-reap-interval-ms <n>неотрицательное целое60000Интервал сканирования сборщика сессий; 0 отключает его.
--session-idle-timeout-ms <n>неотрицательное целое1800000Время простоя отключённой сессии до удаления; 0 отключает.
--rate-limit / --no-rate-limitбулевоenv / offВключает поуровневое ограничение HTTP‑запросов для маршрутов prompt, mutation и read.
--rate-limit-prompt <n>положительное целое10Лимит запросов prompt за окно; требует включения ограничения.
--rate-limit-mutation <n>положительное целое30Лимит запросов mutation за окно; требует включения ограничения.
--rate-limit-read <n>положительное целое120Лимит запросов read за окно; требует включения ограничения.
--rate-limit-window-ms <n>целое >= 100060000Длина окна ограничения; требует включения ограничения.
без флага--QWEN_SERVE_NO_MCP_POOL=1 полностью отключает пул.

Переменные окружения

Читаемые runQwenServe / Express middleware

Переменная окруженияДействие
QWEN_SERVER_TOKENBearer-токен; обрезается при запуске.
QWEN_SERVE_DEBUG1 / true / on / yes (без учёта регистра) включает подробные логи в stderr. См. 19-observability.md.
QWEN_SERVE_NO_MCP_POOL1 отключает пул транспортов MCP рабочей области и возвращается к McpClientManager на сессию; возможности перестают рекламировать mcp_workspace_pool / mcp_pool_restart.
QWEN_SERVE_PROMPT_DEADLINE_MSРезервное значение из окружения для --prompt-deadline-ms.
QWEN_SERVE_WRITER_IDLE_TIMEOUT_MSРезервное значение из окружения для --writer-idle-timeout-ms.
QWEN_SERVE_RATE_LIMIT1 / true включает поуровневое HTTP-ограничение запросов; CLI --rate-limit / --no-rate-limit имеет приоритет.
QWEN_SERVE_RATE_LIMIT_PROMPTРезервное значение из окружения для --rate-limit-prompt.
QWEN_SERVE_RATE_LIMIT_MUTATIONРезервное значение из окружения для --rate-limit-mutation.
QWEN_SERVE_RATE_LIMIT_READРезервное значение из окружения для --rate-limit-read.
QWEN_SERVE_RATE_LIMIT_WINDOW_MSРезервное значение из окружения для --rate-limit-window-ms.

Передаваемые дочернему процессу ACP через BridgeOptions.childEnvOverrides

runQwenServe формирует эти переменные для каждого дескриптора, чтобы два демона в одном процессе не конкурировали за process.env. Переменные бюджета не являются резервными значениями из окружения родительского процесса для qwen serve; путь CLI должен генерировать их из --mcp-client-budget / --mcp-budget-mode.

Переменная окруженияДействие
QWEN_SERVE_MCP_CLIENT_BUDGETСтрока положительного целого числа, используемая дочерним процессом ACP через readBudgetFromEnv().
QWEN_SERVE_MCP_BUDGET_MODEoff / warn / enforce.
QWEN_SERVE_MCP_POOL_TRANSPORTSРазрешённые транспорты через запятую; по умолчанию в пул включены stdio,websocket; можно явно добавить http,sse.
QWEN_SERVE_MCP_POOL_DRAIN_MSЗадержка сброса простаивающего элемента пула; значение по умолчанию 30000, ограничено диапазоном 1000..600000 мс.

Читаемые SDK / адаптерами

Переменная окруженияДействие
QWEN_DAEMON_URLБазовый URL демона для TUI-адаптера CLI, каналов и IDE-компаньона.
QWEN_DAEMON_TOKENBearer-токен.
QWEN_DAEMON_WORKSPACEПереопределяет cwd, отправляемый в POST /session.

Ключи settings.json

Демон считывает настройки один раз при запуске через loadSettings(boundWorkspace) внутри runQwenServe. Некорректные настройки возвращаются к значениям по умолчанию через защитную конструкцию try/catch.

КлючТипДействие
policy.permissionStrategy'first-responder' | 'designated' | 'consensus' | 'local-only'Устанавливает BridgeOptions.permissionPolicy; активное значение отображается в /capabilities как policy.permission. Загрузка проверяет через validatePolicyConfig() на соответствие SERVE_CAPABILITY_REGISTRY.permission_mediation.modes. Неизвестные литералы выбрасывают InvalidPolicyConfigError и явно прерывают запуск.
policy.consensusQuorumположительное целоеN для политики consensus. По умолчаниюfloor(M/2) + 1 от votersAtIssue.size (M=2 означает единогласие; чётное большее M — большинство). Если задано при политике, отличной от consensus, игнорируется, а загрузка выводит предупреждение в stderr. Неположительные целые выбрасывают InvalidPolicyConfigError. См. 04-permission-mediation.md.
context.fileNameстрокаПереопределяет getCurrentGeminiMdFilename() через BridgeOptions.contextFilename.
tools.disabledstring[]Инструменты, отключённые при следующем запуске дочернего процесса ACP. Нормализуется через normalizeDisabledToolList() (packages/cli/src/config/normalizeDisabledTools.ts): не массив превращается в [], нестроковые записи пропускаются, пробелы обрезаются, пустые записи удаляются, дубликаты удаляются с сохранением первого вхождения. При обновлении настроек при загрузке и restartMcpServer используется эта функция. ToolRegistry.has(name) чувствительно к регистру и точному совпадению. POST /workspace/tools/:name/enable и tool_toggled обновляют этот ключ.
tools.approvalMode'default' | 'auto' | ...Режим подтверждения сеанса по умолчанию; POST /session/:id/approval-mode записывает сюда при persist: true.
telemetryobjectКонфигурация OpenTelemetry. Ключи включают enabled, otlpEndpoint, otlpProtocol, otlpTracesEndpoint, otlpLogsEndpoint, otlpMetricsEndpoint, target, outfile, includeSensitiveSpanAttributes, resourceAttributes и metrics.includeSessionId. resolveTelemetrySettings() читает это при запуске и инициализирует initializeTelemetry().

ServeOptions (встраивание через API)

packages/cli/src/serve/types.ts определяет типизированный объект опций, принимаемый как runQwenServe, так и createServeApp. Он повторяет флаги CLI, перечисленные выше, и добавляет:

ПолеЭффект
eventRingSizeПереопределяет размер кольцевого буфера по умолчанию для каждой сессии.
maxPendingPromptsPerSessionЛимит ожидающих запросов на сессию; 0 / Infinity означает неограниченно.
mcpPoolActiveПрограммный переключатель, по умолчанию из QWEN_SERVE_NO_MCP_POOL.
allowOriginsСписок разрешённых источников (string[]), соответствует --allow-origin.
allowPrivateAuthBaseUrlРазрешает установку baseUrl провайдера аутентификации на частном / localhost адресе.
enableSessionShellВключает выполнение shell-команд в сессии; по-прежнему требуются bearer-токен и идентификатор клиента, привязанный к сессии.
promptDeadlineMsЛимит времени выполнения запроса.
writerIdleTimeoutMsТайм-аут бездействия SSE-писателя.
channelIdleTimeoutMsПродолжительность удержания дочернего ACP-процесса активным после закрытия последней сессии.
sessionReapIntervalMsИнтервал сканирования сборщика сессий.
sessionIdleTimeoutMsВремя бездействия отключённой сессии до её сбора.
rateLimit*Переключатель, пороги и окно лимита HTTP-запросов по уровням.

BridgeOptions (встраивание моста через API)

packages/acp-bridge/src/bridgeOptions.ts определяет опции моста. Полную таблицу см. в 03-acp-bridge.md. Ключевые поля:

ПолеЭффект
boundWorkspaceОбязательное каноническое рабочее пространство.
sessionScope'single' (по умолчанию) vs 'thread'.
initializeTimeoutMs, maxSessions, eventRingSize, permissionResponseTimeoutMs, maxPendingPermissionsPerSessionОграничения ресурсов.
channelFactoryПодключаемая фабрика дочерних ACP-процессов; по умолчанию — defaultSpawnChannelFactory.
fileSystemАдаптер BridgeFileSystem. См. 07-workspace-filesystem.md.
permissionPolicy, permissionConsensusQuorum, permissionAuditПодключение посредника.
statusProviderЯчейки предварительной проверки демона.
childEnvOverridesДобавление или удаление переменных окружения для каждого дескриптора.
contextFilenameПереопределяет getCurrentGeminiMdFilename().
channelIdleTimeoutMsПродолжительность удержания дочернего ACP-процесса живым после закрытия последней сессии, в мс; по умолчанию 0.

Важные умолчания

КонстантаФайлЗначениеСмысл
DEFAULT_MAX_SESSIONSbridge.ts20Лимит сессий до SessionLimitExceededError.
MAX_EVENT_RING_SIZEbridge.ts1_000_000Мягкий лимит для BridgeOptions.eventRingSize; защита от опечаток.
DEFAULT_RING_SIZEeventBus.ts8000Глубина кольцевого буфера повтора SSE для одной сессии.
DEFAULT_MAX_QUEUEDeventBus.ts256Лимит очереди на подписчика.
DEFAULT_MAX_SUBSCRIBERSeventBus.ts64Лимит подписчиков на шину.
WARN_THRESHOLD_RATIOeventBus.ts0.75Триггер slow_client_warning.
WARN_RESET_RATIOeventBus.ts0.375Порог перевооружения гистерезиса.
DEFAULT_INIT_TIMEOUT_MSbridge.ts10_000Тайм-аут рукопожатия initialize ACP.
MCP_RESTART_TIMEOUT_MSbridge.ts300_000Тайм-аут моста для /workspace/mcp/:server/restart.
DEFAULT_PERMISSION_TIMEOUT_MSbridge.ts5 * 60_000Общее время выполнения запроса разрешения.
DEFAULT_MAX_PENDING_PER_SESSIONbridge.ts64Соответствует DEFAULT_MAX_SUBSCRIBERS.
MAX_RESOLVED_PERMISSION_RECORDSpermissionMediator.ts512FIFO для недавно разрешённых разрешений.
KILL_HARD_DEADLINE_MSspawnChannel.ts10_000Окно корректного завершения на канал.
SHUTDOWN_FORCE_CLOSE_MSrun-qwen-serve.ts5_000Таймер принудительного закрытия HTTP-сервера.
MAX_READ_BYTESfs/policy.ts256 * 1024Лимит на чтение.
MAX_WRITE_BYTESfs/policy.ts5 * 1024 * 1024Лимит на запись.
MAX_DISPLAY_NAME_LENGTHbridge.ts256Лимит displayName сессии.

Перекрёстные ссылки

Last updated on