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

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

Обзор

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

Флаги CLI (qwen serve)

ФлагТипПо умолчаниюДействие
--hostname <host>string127.0.0.1Адрес привязки. Значения loopback: 127.0.0.1, localhost, ::1, [::1]. Для не-loopback адресов при запуске требуется bearer-токен. Ввод в формате host:port отклоняется с рекомендацией использовать --port.
--port <n>number4170Порт прослушивания; 0 означает эфемерный порт.
--token <s>stringenvBearer-токен. Переопределяет QWEN_SERVER_TOKEN и обрезается при запуске. Отображается в командной строке процесса, поэтому при развертывании лучше использовать переменную окружения.
--require-authbooleanfalseРасширяет действие bearer-аутентификации на loopback и /health; запуск прерывается, если токен не задан.
--workspace <dir>absolute pathprocess.cwd()Привязанная рабочая область. Должна быть абсолютным путем и указывать на директорию; канонизируется один раз при запуске.
--max-sessions <n>number20Лимит активных сессий. 0 / Infinity означает без ограничений; NaN / отрицательные значения вызывают ошибку.
--max-pending-prompts-per-session <n>number5Лимит принятых, но ожидающих/выполняющихся промптов на сессию. Превышение лимита возвращает 503. 0 / Infinity означает без ограничений; отрицательные или нецелые значения вызывают ошибку.
--max-connections <n>number256server.maxConnections для HTTP-слушателя; 0 / Infinity означает без ограничений.
--enable-session-shellbooleanfalseВключает прямое выполнение POST /session/:id/shell. Требуется bearer-токен, и каждый вызов должен содержать привязанный к сессии X-Qwen-Client-Id.
--event-ring-size <n>number8000Кольцо повтора SSE для каждой сессии; мягкий лимит — 1_000_000.
--http-bridgebooleantrueРежим моста этапа 1. --no-http-bridge все равно использует резервный http-bridge и выводит предупреждение в stderr.
--mcp-client-budget <n>positive integerunsetУстанавливает WorkspaceMcpBudget.clientBudget и передает его дочернему процессу ACP через childEnvOverrides.
--mcp-budget-mode <m>off / warn / enforcewarn, если задан бюджет, иначе offУстанавливает WorkspaceMcpBudget.mode; для enforce требуется --mcp-client-budget.
--allow-origin <pattern>repeatable stringunsetБелый список cross-origin, заменяющий стандартный запрет CORS. * разрешает любой origin, но требует токен.
--allow-private-auth-base-urlbooleanfalseПозволяет /workspace/auth/provider устанавливать baseUrl для провайдера аутентификации localhost / частной сети; использовать только в доверенной локальной среде разработки.
--prompt-deadline-ms <n>positive integerunsetСерверный лимит реального времени выполнения промпта в мс. При тайм-ауте выполнение прерывается и возвращается ошибка.
--writer-idle-timeout-ms <n>positive integerunsetТайм-аут простоя для каждого SSE-соединения в мс. Демон закрывает SSE-соединение, если в течение этого времени не отправлено ни одного события.
--channel-idle-timeout-ms <n>non-negative integer0Как долго держать дочерний процесс ACP активным после закрытия последней сессии. 0 означает немедленное освобождение ресурсов.
--session-reap-interval-ms <n>non-negative integer60000Интервал сканирования сборщика неактивных сессий; 0 отключает его.
--session-idle-timeout-ms <n>non-negative integer1800000Время простоя отключенной сессии перед сборкой; 0 отключает его.
--rate-limit / --no-rate-limitbooleanenv / offВключает HTTP rate limiting для маршрутов промптов, мутаций и чтения с разделением по уровням.
--rate-limit-prompt <n>positive integer10Лимит запросов промптов в окне; требует включения rate limiting.
--rate-limit-mutation <n>positive integer30Лимит запросов мутаций в окне; требует включения rate limiting.
--rate-limit-read <n>positive integer120Лимит запросов на чтение в окне; требует включения rate limiting.
--rate-limit-window-ms <n>integer >= 100060000Длина окна rate limiting; требует включения rate limiting.
нет флага--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 rate limiting с разделением по уровням; флаги 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Строка с положительным целым числом, потребляемая readBudgetFromEnv() дочернего процесса ACP.
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 демона для CLI TUI адаптера, каналов и 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.consensusQuorumpositive integerN для политики consensus. По умолчанию равно floor(M/2) + 1 от votersAtIssue.size (M=2 означает единогласие; большее четное M означает больше половины). Если задано для политики, отличной от consensus, игнорируется, и при запуске выводится предупреждение в stderr. Не положительные целые числа вызывают InvalidPolicyConfigError. См. 04-permission-mediation.md.
context.fileNamestringПереопределяет 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Конфигурация OTel. Ключи включают enabled, otlpEndpoint, otlpProtocol, otlpTracesEndpoint, otlpLogsEndpoint, otlpMetricsEndpoint, target, outfile, includeSensitiveSpanAttributes, sensitiveSpanAttributeMaxLength, resourceAttributes и metrics.includeSessionId. resolveTelemetrySettings() читает её при запуске и инициализирует initializeTelemetry().

ServeOptions (программное встраивание)

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

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

BridgeOptions (программное встраивание bridge)

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

FieldEffect
boundWorkspaceОбязательное каноническое рабочее пространство.
sessionScope'single' (по умолчанию) или '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.

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

ConstantFileValueMeaning
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Таймаут bridge для /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