Skip to Content
EntwicklerhandbuchDaemonKonfigurationsreferenz

Konfigurationsreferenz

Übersicht

Diese Seite sammelt alle Einstellungen, die den qwen serve-Daemon und seine Adapter betreffen: Umgebungsvariablen, CLI-Flags, settings.json-Schlüssel und programmatische Optionen. Feature-spezifische Seiten verlinken hierher zurück, wenn sie übergreifende Konfigurationsdetails benötigen.

CLI-Flags (qwen serve)

FlagTypStandardEffekt
--hostname <host>string127.0.0.1Bindungsadresse. Loopback-Werte: 127.0.0.1, localhost, ::1, [::1]. Non-Loopback erfordert beim Start ein Bearer-Token. Die Eingabe host:port wird abgelehnt mit dem Hinweis, --port zu verwenden.
--port <n>number4170Listen-Port; 0 bedeutet ein ephemeraler Port.
--token <s>stringenvBearer-Token. Überschreibt QWEN_SERVER_TOKEN und wird beim Start getrimmt. Es erscheint in der Prozess-Befehlszeile, daher in Deployments bevorzugt die Umgebungsvariable verwenden.
--require-authbooleanfalseErweitert die Bearer-Authentifizierung auf Loopback und /health; der Start wird ohne Token verweigert.
--workspace <dir>absolute pathprocess.cwd()Gebundener Workspace. Muss absolut und ein Verzeichnis sein; wird beim Start einmal kanonisiert.
--max-sessions <n>number20Obergrenze für aktive Sessions. 0 / Infinity bedeutet unbegrenzt; NaN / negative Werte lösen einen Fehler aus.
--max-pending-prompts-per-session <n>number5Obergrenze für akzeptierte, aber ausstehende/laufende Prompts pro Session. Überschüssige Prompts geben 503 zurück. 0 / Infinity bedeutet unbegrenzt; negative oder nicht-ganzzahlige Werte lösen einen Fehler aus.
--max-connections <n>number256HTTP-Listener server.maxConnections; 0 / Infinity bedeutet unbegrenzt.
--enable-session-shellbooleanfalseAktiviert die direkte POST /session/:id/shell-Ausführung. Erfordert ein Bearer-Token und jeder Aufruf muss eine session-gebundene X-Qwen-Client-Id mitführen.
--event-ring-size <n>number8000SSE-Replay-Ring pro Session; Soft-Limit ist 1_000_000.
--http-bridgebooleantrueStage-1-Bridge-Modus. --no-http-bridge fällt dennoch auf die HTTP-Bridge zurück und gibt eine Meldung auf stderr aus.
--mcp-client-budget <n>positive integerunsetSetzt WorkspaceMcpBudget.clientBudget und leitet es über childEnvOverrides an den ACP-Child weiter.
--mcp-budget-mode <m>off / warn / enforcewarn wenn Budget gesetzt, sonst offSetzt WorkspaceMcpBudget.mode; enforce erfordert --mcp-client-budget.
--allow-origin <pattern>repeatable stringunsetCross-Origin-Allowlist, die die Standard-CORS-Ablehnung ersetzt. * erlaubt jeden Origin, erfordert aber ein Token.
--allow-private-auth-base-urlbooleanfalseErlaubt /workspace/auth/provider, die baseUrl eines Localhost-/Private-Network-Auth-Providers zu installieren; nur in vertrauenswürdiger lokaler Entwicklung verwenden.
--prompt-deadline-ms <n>positive integerunsetServerseitiges Prompt-Wallclock-Limit in ms. Timeout bricht ab und gibt einen Fehler zurück.
--writer-idle-timeout-ms <n>positive integerunsetIdle-Timeout pro SSE-Verbindung in ms. Der Daemon schließt die SSE-Verbindung, wenn für diese Dauer kein Ereignis gesendet wird.
--channel-idle-timeout-ms <n>non-negative integer0Wie lange der ACP-Child nach dem Schließen der letzten Session am Leben gehalten wird. 0 bedeutet sofortige Freigabe.
--session-reap-interval-ms <n>non-negative integer60000Scan-Intervall des Session-Reapers; 0 deaktiviert ihn.
--session-idle-timeout-ms <n>non-negative integer1800000Idle-Reaping-Zeit für getrennte Sessions; 0 deaktiviert sie.
--rate-limit / --no-rate-limitbooleanenv / offAktiviert das HTTP-Rate-Limiting pro Stufe für Prompt-, Mutations- und Lese-Routen.
--rate-limit-prompt <n>positive integer10Prompt-Request-Limit pro Zeitfenster; erfordert aktiviertes Rate-Limiting.
--rate-limit-mutation <n>positive integer30Mutations-Request-Limit pro Zeitfenster; erfordert aktiviertes Rate-Limiting.
--rate-limit-read <n>positive integer120Lese-Request-Limit pro Zeitfenster; erfordert aktiviertes Rate-Limiting.
--rate-limit-window-ms <n>integer >= 100060000Länge des Rate-Limit-Zeitfensters; erfordert aktiviertes Rate-Limiting.
kein Flag--QWEN_SERVE_NO_MCP_POOL=1 deaktiviert den Pool vollständig.

Umgebungsvariablen

Gelesen von runQwenServe / Express-Middleware

EnvEffekt
QWEN_SERVER_TOKENBearer-Token; wird beim Start getrimmt.
QWEN_SERVE_DEBUG1 / true / on / yes (Groß-/Kleinschreibung wird ignoriert) aktiviert ausführliche stderr-Logs. Siehe 19-observability.md.
QWEN_SERVE_NO_MCP_POOL1 deaktiviert den Workspace-MCP-Transport-Pool und fällt auf den session-spezifischen McpClientManager zurück; Capabilities bewerben nicht mehr mcp_workspace_pool / mcp_pool_restart.
QWEN_SERVE_PROMPT_DEADLINE_MSUmgebungs-Fallback für --prompt-deadline-ms.
QWEN_SERVE_WRITER_IDLE_TIMEOUT_MSUmgebungs-Fallback für --writer-idle-timeout-ms.
QWEN_SERVE_RATE_LIMIT1 / true aktiviert das HTTP-Rate-Limiting pro Stufe; CLI --rate-limit / --no-rate-limit hat Vorrang.
QWEN_SERVE_RATE_LIMIT_PROMPTUmgebungs-Fallback für --rate-limit-prompt.
QWEN_SERVE_RATE_LIMIT_MUTATIONUmgebungs-Fallback für --rate-limit-mutation.
QWEN_SERVE_RATE_LIMIT_READUmgebungs-Fallback für --rate-limit-read.
QWEN_SERVE_RATE_LIMIT_WINDOW_MSUmgebungs-Fallback für --rate-limit-window-ms.

An den ACP-Child weitergeleitet über BridgeOptions.childEnvOverrides

runQwenServe erstellt diese pro Handle, sodass zwei Daemons in einem Prozess nicht um process.env konkurrieren. Die Budget-Variablen sind keine Umgebungs-Fallbacks des Elternprozesses für qwen serve; der CLI-Pfad muss sie aus --mcp-client-budget / --mcp-budget-mode generieren.

EnvEffekt
QWEN_SERVE_MCP_CLIENT_BUDGETPositiver Integer-String, der von readBudgetFromEnv() des ACP-Childs konsumiert wird.
QWEN_SERVE_MCP_BUDGET_MODEoff / warn / enforce.
QWEN_SERVE_MCP_POOL_TRANSPORTSKommagetrennte Transport-Allowlist; Standard-Pool-Transports sind stdio,websocket; kann explizit http,sse enthalten.
QWEN_SERVE_MCP_POOL_DRAIN_MSIdle-Drain-Verzögerung für Pool-Einträge; Standard ist 30000, begrenzt auf 1000..600000 ms.

Gelesen von SDK / Adaptern

EnvEffekt
QWEN_DAEMON_URLDaemon-Basis-URL für CLI-TUI-Adapter, Channels und IDE-Companion.
QWEN_DAEMON_TOKENBearer-Token.
QWEN_DAEMON_WORKSPACEÜberschreibt das cwd, das an POST /session gesendet wird.

settings.json-Schlüssel

Der Daemon liest die Einstellungen einmal beim Start über loadSettings(boundWorkspace) innerhalb von runQwenServe. Fehlerhafte Einstellungen fallen über einen try/catch-Schutzmechanismus auf die Standardwerte zurück.

KeyTypEffekt
policy.permissionStrategy'first-responder' | 'designated' | 'consensus' | 'local-only'Setzt BridgeOptions.permissionPolicy; der aktive Wert erscheint in /capabilities als policy.permission. Der Start validiert über validatePolicyConfig() gegen SERVE_CAPABILITY_REGISTRY.permission_mediation.modes. Unbekannte Literale lösen einen InvalidPolicyConfigError aus und brechen den Start explizit ab.
policy.consensusQuorumpositive integerN für die consensus-Policy. Standard ist floor(M/2) + 1 über votersAtIssue.size (M=2 bedeutet einstimmig; größeres gerades M bedeutet mehr als die Hälfte). Wenn es unter einer Nicht-Consensus-Policy gesetzt wird, wird es ignoriert und der Start gibt eine stderr-Warnung aus. Nicht-positive Ganzzahlen lösen einen InvalidPolicyConfigError aus. Siehe 04-permission-mediation.md.
context.fileNamestringÜberschreibt getCurrentGeminiMdFilename() über BridgeOptions.contextFilename.
tools.disabledstring[]Tools, die für den nächsten ACP-Child-Spawn deaktiviert sind. Normalisiert über normalizeDisabledToolList() (packages/cli/src/config/normalizeDisabledTools.ts): Nicht-Arrays werden zu [], Nicht-String-Einträge werden übersprungen, Leerzeichen werden getrimmt, leere Einträge werden verworfen und Duplikate werden entfernt, wobei das erste Vorkommen beibehalten wird. Sowohl der Start als auch die Aktualisierung der restartMcpServer-Einstellungen durchlaufen diese Funktion. ToolRegistry.has(name) ist exakt und beachtet die Groß-/Kleinschreibung. POST /workspace/tools/:name/enable und tool_toggled aktualisieren diesen Schlüssel.
tools.approvalMode'default' | 'auto' | ...Standard-Session-Genehmigungsmodus; POST /session/:id/approval-mode schreibt hierhin, wenn persist: true.
telemetryobjectOTel-Konfiguration. Schlüssel umfassen enabled, otlpEndpoint, otlpProtocol, otlpTracesEndpoint, otlpLogsEndpoint, otlpMetricsEndpoint, target, outfile, includeSensitiveSpanAttributes, sensitiveSpanAttributeMaxLength, resourceAttributes und metrics.includeSessionId. resolveTelemetrySettings() liest dies beim Start und initialisiert initializeTelemetry().

ServeOptions (programmatische Einbettung)

packages/cli/src/serve/types.ts definiert das typisierte Optionsobjekt, das sowohl von runQwenServe als auch von createServeApp akzeptiert wird. Es spiegelt die obigen CLI-Flags wider und fügt hinzu:

FieldEffekt
eventRingSizeÜberschreibt die Standard-Ringgröße pro Session.
maxPendingPromptsPerSessionObergrenze für ausstehende Prompts pro Session; 0 / Infinity bedeutet unbegrenzt.
mcpPoolActiveProgrammatischer Schalter, Standardwert abgeleitet von QWEN_SERVE_NO_MCP_POOL.
allowOriginsCross-Origin-Allowlist (string[]), entspricht --allow-origin.
allowPrivateAuthBaseUrlErlaubt die Installation der baseUrl für private / Localhost-Auth-Provider.
enableSessionShellAktiviert die Session-Shell-Ausführung; Bearer-Token und session-gebundene Client-ID sind weiterhin erforderlich.
promptDeadlineMsPrompt-Wallclock-Limit.
writerIdleTimeoutMsSSE-Writer-Idle-Timeout.
channelIdleTimeoutMsWie lange der ACP-Child nach dem Schließen der letzten Session warmgehalten wird.
sessionReapIntervalMsScan-Intervall des Session-Reapers.
sessionIdleTimeoutMsIdle-Reaping-Zeit für getrennte Sessions.
rateLimit*HTTP-Rate-Limit-Schalter, Schwellenwerte und Zeitfenster pro Stufe.

BridgeOptions (programmatische Bridge-Einbettung)

packages/acp-bridge/src/bridgeOptions.ts definiert die Bridge-Optionen. Die vollständige Tabelle findest du in 03-acp-bridge.md. Wichtige Felder:

FeldAuswirkung
boundWorkspaceErforderlicher kanonischer Workspace.
sessionScope'single' (Standard) vs. 'thread'.
initializeTimeoutMs, maxSessions, eventRingSize, permissionResponseTimeoutMs, maxPendingPermissionsPerSessionBegrenzte Ressourcenlimits.
channelFactorySteckbare ACP-Child-Factory; Standard ist defaultSpawnChannelFactory.
fileSystemBridgeFileSystem-Adapter. Siehe 07-workspace-filesystem.md.
permissionPolicy, permissionConsensusQuorum, permissionAuditMediator-Verkabelung.
statusProviderDaemon-Host-Preflight-Zellen.
childEnvOverridesUmgebungsvariablen-Ergänzungen oder -Entfernungen pro Handle.
contextFilenameÜberschreibt getCurrentGeminiMdFilename().
channelIdleTimeoutMsWie lange das ACP-Child nach dem Schließen der letzten Sitzung in ms am Leben gehalten wird; Standard 0.

Wichtige Standardwerte

KonstanteDateiWertBedeutung
DEFAULT_MAX_SESSIONSbridge.ts20Session-Limit vor SessionLimitExceededError.
MAX_EVENT_RING_SIZEbridge.ts1_000_000Soft-Limit für BridgeOptions.eventRingSize; schützt vor Tippfehlern.
DEFAULT_RING_SIZEeventBus.ts8000SSE-Replay-Ringtiefe pro Session.
DEFAULT_MAX_QUEUEDeventBus.ts256Warteschlangenlimit pro Subscriber.
DEFAULT_MAX_SUBSCRIBERSeventBus.ts64Subscriber-Limit pro Bus.
WARN_THRESHOLD_RATIOeventBus.ts0.75Auslöser für slow_client_warning.
WARN_RESET_RATIOeventBus.ts0.375Schwellenwert für Hysterese-Re-Arm.
DEFAULT_INIT_TIMEOUT_MSbridge.ts10_000ACP-initialize-Handshake-Timeout.
MCP_RESTART_TIMEOUT_MSbridge.ts300_000Bridge-Timeout für /workspace/mcp/:server/restart.
DEFAULT_PERMISSION_TIMEOUT_MSbridge.ts5 * 60_000Wallclock-Timeout pro Permission-Anfrage.
DEFAULT_MAX_PENDING_PER_SESSIONbridge.ts64Abgestimmt auf DEFAULT_MAX_SUBSCRIBERS.
MAX_RESOLVED_PERMISSION_RECORDSpermissionMediator.ts512FIFO für kürzlich aufgelöste Permissions.
KILL_HARD_DEADLINE_MSspawnChannel.ts10_000Graceful-Shutdown-Fenster pro Channel.
SHUTDOWN_FORCE_CLOSE_MSrun-qwen-serve.ts5_000Force-Close-Timer des HTTP-Servers.
MAX_READ_BYTESfs/policy.ts256 * 1024Lese-Limit.
MAX_WRITE_BYTESfs/policy.ts5 * 1024 * 1024Schreib-Limit.
MAX_DISPLAY_NAME_LENGTHbridge.ts256Limit für Session-displayName.

Querverweise

Last updated on