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)
| Flag | Typ | Standard | Effekt |
|---|---|---|---|
--hostname <host> | string | 127.0.0.1 | Bindungsadresse. Loopback-Werte: jede 127.0.0.0/8-Adresse, localhost, ::1, [::1]; localhost wird einmal aufgelöst und gepinnt, und im Trusted-Modus wird auch die tatsächliche Listener-Adresse vor Abschluss des Starts verifiziert. Ein Non-Loopback-Ergebnis trägt immer ein Bearer-Token: vom Operator angegeben oder beim Start generiert, wenn weder --token noch QWEN_SERVER_TOKEN vorhanden ist – die Generierung hängt von der angeforderten Schreibweise ab, sodass ein localhost, der zu einer Non-Loopback-Adresse aufgelöst wird, niemals ein Token generiert und nur bootet, wenn eine Token-Quelle aufgelöst wurde (die Ablehnung nennt die aufgelöste Adresse), während ein nicht-literaler Name, der zu Loopback aufgelöst wird, ein Token generiert und nur das Bearer-Token ausgibt. Die Eingabe host:port wird mit dem Hinweis auf --port abgelehnt. |
--port <n> | number | 4170 | Listen-Port; 0 bedeutet ein ephemeraler Port. |
--token <s> | string | env | Bearer-Token. Überschreibt QWEN_SERVER_TOKEN und wird beim Start getrimmt. Es erscheint in der Prozess-Befehlszeile, daher in Deployments bevorzugt die Umgebungsvariable verwenden. Wenn weder dieses Flag noch die Umgebungsvariable vorhanden ist, generiert ein Non-Loopback-Bind ein ephemerales 128-Bit-Base64url-Bearer-Token (22 Zeichen) und gibt es einmal beim Start aus; Loopback-Schreibweisen generieren nichts. Ein explizit leerer Wert ist eine angegebene Quelle, keine fehlende: er verdeckt die Umgebungsvariable, sodass ein Non-Loopback-Bind den Start verweigert und auf Loopback den vertrauenswürdigen Token-losen Modus wählt (oder unter --require-auth verweigert). |
--open | boolean | false | Öffnet die gemountete WebShell nach Runtime-Readiness. Ein aufgelöstes Token (konfiguriert oder generiert) wird als URL-Fragment übergeben. Bare --open bleibt ein stilles No-Op, wenn der Browser-Start nicht möglich ist. |
--open-with-auth | boolean | false | Öffnet die WebShell mit Bearer-Authentifizierung auf Loopback. Erfordert eine aktivierte WebShell und gebaute Assets. Verwendet ein ausgewähltes --token / QWEN_SERVER_TOKEN wieder oder generiert vor dem Listen einen 256-Bit-Bearer mit Prozesslebensdauer – dieser generierte Wert wird vor dem Start auf das Options-Token installiert, was dieses Flag zu einer dritten Token-Quelle macht, die --require-auth auf Loopback erfüllt. In einer Browser-ungeeigneten Umgebung wird gestartet und die Secret-haltige Fragment-URL ausgegeben. Keine ServeOptions- oder SDK-Einstellung. |
--require-auth | boolean | false | Erweitert die Bearer-Authentifizierung auf Loopback und /health. Der Start verweigert, wenn keine Token-Quelle aufgelöst wird, was nach dem Non-Loopback-Generierungsschritt einen Loopback-Bind bedeutet: auf einem Non-Loopback-Bind erfüllt das generierte ephemere Token das Flag, sodass sein “kein konfiguriertes Secret, kein Daemon”-Fail-Fast nur auf Loopback wirkt. Loopback-Token-Quellen sind --token, QWEN_SERVER_TOKEN und --open-with-auth. |
--workspace <dir> | absolute path / repeatable | process.cwd() | Startup-Workspace-Runtime; wiederholbar, um zusätzliche isolierte Runtimes zu registrieren. Der erste ist primär. Jeder Wert muss absolut und ein Verzeichnis sein; wird beim Start kanonisiert. |
--memory-project-scope <mode> | git-root / workspace | workspace | Project-Memory-Partitionierung. workspace isoliert nach exaktem Workspace-Verzeichnis; git-root ist der Legacy-Kompatibilitäts-Scope, der von Workspaces am selben Git-Root geteilt wird. Überschreibt QWEN_CODE_MEMORY_PROJECT_SCOPE. |
--max-sessions <n> | number | 32 | Obergrenze für aktive Sessions pro Workspace. 0 / Infinity bedeutet unbegrenzt; NaN / negative Werte lösen einen Fehler aus. |
--max-total-sessions <n> | number | 800, oder abgeleitet bei Kapazität 25 oder weniger | Daemon-weite Obergrenze für aktive Sessions. Wenn weggelassen, ist sie 800 bei Registrierungs-Kapazitäten über 25 (einschließlich des Standardwerts 256), auch mit einem Workspace. Bei Kapazitäten von 25 oder weniger wird sie einmalig aus der pro-Workspace-Obergrenze und der Anzahl der Startup-/wiederhergestellten Workspaces abgeleitet, wobei ein solcher Workspace unbegrenzt ist. 0 / Infinity bedeutet unbegrenzt. |
--max-pending-prompts-per-session <n> | number | 5 | Obergrenze 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> | number | 256 | HTTP-Listener server.maxConnections; 0 / Infinity bedeutet unbegrenzt. |
--enable-session-shell | boolean | false | Aktiviert die direkte POST /session/:id/shell-Ausführung. Wirksam mit Bearer-Auth oder Trusted-Loopback-Authority; jeder Aufruf muss eine session-gebundene X-Qwen-Client-Id mitführen. |
--event-ring-size <n> | number | 8000 | SSE-Replay-Ring pro Session; Soft-Limit ist 1_000_000. |
--session-prompt-settled-close-grace-ms <n> | non-negative integer | 0 | Gnadenfrist, nachdem ein Prompt sich gesetzt hat, bevor eine ansonsten inaktive Session automatisch geschlossen werden darf (ms). Poll-basierte SSE-Clients nutzen dieses Fenster, um sich neu zu verbinden, ohne einen Session-Rebuild auszulösen. 0 = sofortiges Schließen. |
--compacted-replay-max-bytes <n> | positive integer | 4194304 | Byte-Obergrenze für den begrenzten In-Memory-Replay-Snapshot, der von POST /session/:id/load zurückgegeben wird; Hard-Limit ist 268435456. |
--max-journal-events <n> | positive safe integer | 10000 | Pro-Session Basis-Obergrenze für Inflight-liveJournal-Replay-Einträge des unfertigen Turns. Adaptives Wachstum kann sie erhöhen (siehe --max-journal-bytes); das Pinnen eines der beiden Journal-Flags deaktiviert das Wachstum. |
--max-journal-bytes <n> | positive safe integer | 8388608 (8 MiB) | Pro-Session Basis-Byte-Obergrenze für das Inflight-liveJournal. Wenn ein Turn sie überschreitet, erhöht adaptives Wachstum die Session-Obergrenzen bei Bedarf, bis zum Doppelten, begrenzt durch den verbleibenden Pool-Headroom und niemals über einen 256-MiB-Pro-Session-Hardcap – innerhalb eines Daemon-weiten Pools von 5 % des effektiven --memory-budget-mb (gedeckelt bei 1024 MB; 0 – Wachstum deaktiviert – wenn das effektive Budget unter dem 1024-MB-Minimum liegt), geteilt von jeder Workspace-Bridge; ohne Headroom werden die ältesten Einträge mit einem history_truncated-Marker verworfen. Das Pinnen eines der beiden Journal-Flags deaktiviert das Wachstum. |
--memory-budget-mb <n> | integer in [1024, 1048576] | 50% des Cgroup-begrenzten oder Host-Speichers, gedeckelt beim Flag-Maximum (1048576 MB) | Gesamtspeicherbudget für den Daemon-Prozessbaum, gedeckelt beim aufgelösten verfügbaren Speicher. Wird unter limits.memory im Daemon-Status gemeldet; es bestimmt nicht die Größe eines Kindprozesses – der einzige Consumer heute ist das adaptive Live-Journal-Wachstum (siehe --max-journal-bytes). Der Start lehnt Werte außerhalb des Bereichs ab. |
--memory-pressure-mode <mode> | off | observe | observe | Ob der Daemon einen Memory-Pressure-Level aus eigenem RSS und V8-Heap ableitet. Beide Modi melden runtime.memory.pressure; nur observe löst daemon_memory_pressure aus. Nur Root-Prozess; keine Abhilfe. |
--child-heap-mode <mode> | off | observe | observe | Ob der Daemon eine pro-Child-Heap-Partition des Budgets modelliert. observe meldet sie und zählt Spawns darüber hinaus; nichts wird angewendet. off veröffentlicht keinerlei Partition — maxConcurrentChildren und perChildCeilingMb sind beide null. |
--http-bridge | boolean | true | Stage-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 integer | unset | Setzt WorkspaceMcpBudget.clientBudget und leitet es über childEnvOverrides an den ACP-Child weiter. |
--mcp-budget-mode <m> | off / warn / enforce | warn wenn Budget gesetzt, sonst off | Setzt WorkspaceMcpBudget.mode; enforce erfordert --mcp-client-budget. |
--external-tool-guard-mode <m> | off / required | off | Aktiviert den verwalteten ACP-externen Pre-Execution-Guard. required verweigert den Start, es sei denn, sein Loopback-Provider schließt den v1-Handshake erfolgreich ab. |
--external-tool-guard-endpoint <url> | loopback HTTP(S) origin | unset | Provider-Origin, die nur im required-Modus verwendet wird. Sie muss origin-only sein und 127.0.0.1, localhost oder ::1 verwenden; Pfade, Credentials, Redirects und Proxy-Routing werden abgelehnt. |
--external-tool-guard-timeout-ms <n> | integer 100..30000 | 3000 | Deadline pro Handshake und pro Prepare. Ein Timeout verweigert den Start während des Handshakes oder failt die Invocation closed während eines Turns. |
--allow-origin <pattern> | repeatable string | unset | Cross-Origin-Allowlist, die die Standard-CORS-Ablehnung ersetzt. Wildcard- und Non-Loopback-HTTP(S)-Origins erfordern ein aufgelöstes Token, sodass auf einem Non-Loopback-Bind das generierte ephemere Bearer-Token beide Prüfungen erfüllt und die Ablehnungen nur auf Loopback wirken; Token-lose HTTP(S)-Origins müssen Loopback sein. |
--allow-private-auth-base-url | boolean | false | Erlaubt /workspace/auth/provider, die baseUrl eines Localhost-/Private-Network-Auth-Providers zu installieren; nur in vertrauenswürdiger lokaler Entwicklung verwenden. |
--web / --no-web | boolean | true | Stellt die gebaute Web-Shell-SPA am Daemon-Root bereit (GET /, /assets/* und /session/:id Dokument-Navigationen). Diese Einstiegspunkte werden vor bearerAuth gemountet; API-Aufrufe folgen weiterhin der konfigurierten Bearer-Auth oder Trusted-Loopback-Authority. --no-web lässt den Daemon API-only. |
--prompt-deadline-ms <n> | positive integer | unset | Serverseitiges Prompt-Wallclock-Limit in ms. Timeout bricht ab und gibt einen Fehler zurück. |
--writer-idle-timeout-ms <n> | positive integer | unset | Idle-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 integer | 0 | ACP-Child-Auto-Reap-Verzögerung nach Abschluss der Runtime-Arbeit. Plain-Preheat bleibt für die erste Nutzung erhalten. Ein expliziter Keepalive kann die konfigurierte Verzögerung verlängern; die längere verbleibende Verzögerung gewinnt. |
--initialize-timeout-ms <n> | positive integer | 10000 | ACP-Child-Start-Deadline (Channel-Factory + Initialize-Handshake) und Standard-Request-Timeout (ms). |
--session-restore-timeout-ms <n> | positive integer | 60000 | Timeout für das Laden/Fortsetzen einer ACP-Session (ms). Wenn dieses Flag weggelassen wird, erhöht ein explizit angegebener Initialize-Timeout das Budget, senkt es aber niemals unter den Standardwert. |
--permission-response-timeout-ms <n> | non-negative integer | 0 | Geteiltes Wallclock-Timeout für gewöhnliche Permission- und ask_user_question-Antworten. 0 oder ein weggelassenes Flag wartet unbegrenzt; ein positiver Wert aktiviert den Timer. |
--session-reap-interval-ms <n> | non-negative integer | 60000 | Scan-Intervall des Session-Reapers; 0 deaktiviert ihn. |
--session-idle-timeout-ms <n> | non-negative integer | 1800000 | Idle-Reaping-Zeit für getrennte Sessions; 0 deaktiviert sie. |
--rate-limit / --no-rate-limit | boolean | env / off | Aktiviert das HTTP-Rate-Limiting pro Stufe für Prompt-, Mutations- und Lese-Routen. |
--rate-limit-prompt <n> | positive integer | 10 | Prompt-Request-Limit pro Zeitfenster; erfordert aktiviertes Rate-Limiting. |
--rate-limit-mutation <n> | positive integer | 30 | Mutations-Request-Limit pro Zeitfenster; erfordert aktiviertes Rate-Limiting. |
--rate-limit-read <n> | positive integer | 120 | Lese-Request-Limit pro Zeitfenster; erfordert aktiviertes Rate-Limiting. |
--rate-limit-window-ms <n> | integer >= 1000 | 60000 | Lä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
| Env | Effekt |
|---|---|
QWEN_SERVER_TOKEN | Bearer-Token; wird beim Start getrimmt. --token hat Vorrang. Ein explizit leerer Wert gilt als angegeben statt fehlend, sodass er zu keinem Token aufgelöst wird – und --token '' verdeckt ebenfalls einen hier gesetzten Wert. Wenn weder diese Variable noch --token gesetzt ist, generiert ein Non-Loopback-Bind ein ephemeres Bearer-Token und gibt es einmal aus; der Daemon schreibt diese Variable niemals zurück in die Umgebung. |
QWEN_SERVE_DEBUG | 1 / true / on / yes (Groß-/Kleinschreibung wird ignoriert) aktiviert ausführliche stderr-Logs. Siehe 19-observability.md. |
QWEN_SERVE_NO_MCP_POOL | 1 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_MS | Umgebungs-Fallback für --prompt-deadline-ms. |
QWEN_SERVE_WRITER_IDLE_TIMEOUT_MS | Umgebungs-Fallback für --writer-idle-timeout-ms. |
QWEN_SERVE_RATE_LIMIT | 1 / true aktiviert das HTTP-Rate-Limiting pro Stufe; CLI --rate-limit / --no-rate-limit hat Vorrang. |
QWEN_SERVE_RATE_LIMIT_PROMPT | Umgebungs-Fallback für --rate-limit-prompt. |
QWEN_SERVE_RATE_LIMIT_MUTATION | Umgebungs-Fallback für --rate-limit-mutation. |
QWEN_SERVE_RATE_LIMIT_READ | Umgebungs-Fallback für --rate-limit-read. |
QWEN_SERVE_RATE_LIMIT_WINDOW_MS | Umgebungs-Fallback für --rate-limit-window-ms. |
QWEN_SERVE_NEW_FILE_MODE | New-File-Mode-Policy für Daemon-Textschreibvorgänge: owner (Standard — NEUE Dateien werden 0600 erstellt, umask-unabhängig) oder system (NEUE Dateien folgen 0o666 & ~umask). Groß-/Kleinschreibung wird ignoriert; das Literal 0600 wird als Alias für owner akzeptiert (keine anderen Oktalmodi unterstützt), und nicht erkannte Werte warnen auf stderr und behalten den 0600-Standard. Bestehende Dateien behalten immer ihren Modus. Siehe qwen-serve.md — New-file mode for agent text writes. |
QWEN_SERVE_SESSION_ATTACHMENTS_ROOT | Überschreibt, wo Session-Attachments gespeichert werden; Lese-/Entfernungs-Operationen, die das konfigurierte Root verfehlen, fallen auf das Standard-Temp-Verzeichnis der Runtime zurück, sodass Attachments vor dem Wechsel lesbar bleiben. Akzeptiert einen absoluten Pfad, einen Pfad relativ zum Daemon-cwd oder ~ / ~/…. Siehe qwen-serve.md — Session attachment storage. |
QWEN_CODE_MEMORY_PROJECT_SCOPE | workspace schlüsselt Project-Memory nach dem exakten Workspace-Verzeichnis auf; git-root wählt den Legacy-geteilten Scope. Wenn nicht gesetzt, injiziert der Daemon workspace; nicht erkannte Werte warnen einmal und behalten das Legacy-git-root-Verhalten. Wird über die Runtime-Basis-Umgebung propagiert, nicht über childEnvOverrides; --memory-project-scope hat Vorrang. Jede Workspace-remember/forget/dream-Lane deckelt ausstehende Tasks bei MAX_PENDING = 16; N Workspaces erlauben bis zu 16·N wartende Tasks ohne daemon-weites Limit. |
Leere QWEN_CODE_MEMORY_PROJECT_SCOPE-Werte werden als nicht gesetzt behandelt und fallen daher auf workspace zurück; nicht erkannte nicht-leere Werte warnen weiterhin einmal und behalten das Legacy-git-root-Verhalten.
Gelesen vom qwen serve-CLI-Wrapper
| Env | Effekt |
|---|---|
QWEN_CODE_EXTERNAL_TOOL_GUARD_TOKEN | Nicht-leerer Bearer-Token mit höchstens 8192 UTF-16 Code Units ohne Steuerzeichen, der nur im Required-Modus in ServeOptions.externalToolGuard kopiert wird. Der CLI löscht dann den ambienten Wert, bevor Runtime-Umgebungen eingefroren werden; ACP-Children, Channel-Worker und Executor-Umgebungen entfernen ihn ebenfalls defensiv. |
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.
| Env | Effekt |
|---|---|
QWEN_SERVE_MCP_CLIENT_BUDGET | Positiver Integer-String, der von readBudgetFromEnv() des ACP-Childs konsumiert wird. |
QWEN_SERVE_MCP_BUDGET_MODE | off / warn / enforce. |
QWEN_SERVE_MCP_POOL_TRANSPORTS | Kommagetrennte Transport-Allowlist; Standard-Pool-Transports sind stdio,websocket; kann explizit http,sse enthalten. |
QWEN_SERVE_MCP_POOL_DRAIN_MS | Idle-Drain-Verzögerung für Pool-Einträge; Standard ist 30000, begrenzt auf 1000..600000 ms. |
Gelesen von SDK / Adaptern
| Env | Effekt |
|---|---|
QWEN_DAEMON_URL | Daemon-Basis-URL für CLI-TUI-Adapter, Channels und IDE-Companion. |
QWEN_DAEMON_TOKEN | Bearer-Token. |
QWEN_DAEMON_WORKSPACE | Überschreibt das cwd, das an POST /session gesendet wird. |
settings.json-Schlüssel
Der Daemon konstruiert jede Workspace-Runtime aus den zusammengeführten Einstellungen und dem Umgebungs-Overlay dieses Workspaces. Prozessglobale Listener-/Auth-Optionen werden einmal aufgelöst, während runtime-spezifische Services und ACP-Children den Snapshot der besitzenden Runtime erhalten. Fehlerhafte Einstellungen folgen dem dokumentierten Start-Fallback- oder Fehlerverhalten für die betroffene Runtime; sie dürfen nicht dazu führen, dass die Einstellungen eines anderen Workspaces wiederverwendet werden.
| Key | Typ | Effekt |
|---|---|---|
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.consensusQuorum | positive integer | N 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.fileName | string | Workspace-Memory-Dateiname. qwen serve erstellt einen Snapshot über extractContextFilename() und übergibt ihn als contextFilename an den Workspace-Service; POST /workspace/init schreibt diese Datei. |
tools.disabled | string[] | 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. |
telemetry | object | OTel-Konfiguration. Schlüssel umfassen enabled, otlpEndpoint, otlpProtocol, otlpTracesEndpoint, otlpLogsEndpoint, otlpMetricsEndpoint, target, outfile, userId, includeSensitiveSpanAttributes, sensitiveSpanAttributeMaxLength, resourceAttributes und metrics.includeSessionId. resolveTelemetrySettings() liest dies beim Start und initialisiert initializeTelemetry(). userId ist prozessweit und darf nicht als Endbenutzer-Identität konfiguriert werden, wenn der Daemon mehrere Benutzer bedient. |
ServeOptions (programmatische Einbettung)
packages/cli/src/serve/types.ts definiert das typisierte Optionsobjekt, das über die öffentlichen Serve-APIs übergeben wird. Es spiegelt die obigen CLI-Flags wider und fügt hinzu:
| Feld | Effekt |
|---|---|
eventRingSize | Überschreibt die Standard-Ringgröße pro Session. |
sessionPromptSettledCloseGraceMs | Gnadenfrist, nachdem ein Prompt sich gesetzt hat, bevor eine ansonsten inaktive Session automatisch geschlossen werden darf. 0 = sofortiges Schließen. |
memoryProjectScope | Nur runQwenServe; Präzedenz ist Option, Launch-Env, dann workspace. Direkte createServeApp-Aufrufer verwenden deps.daemonEnv. |
maxPendingPromptsPerSession | Obergrenze für ausstehende Prompts pro Session; 0 / Infinity bedeutet unbegrenzt. |
mcpPoolActive | Programmatischer Schalter, Standardwert abgeleitet von QWEN_SERVE_NO_MCP_POOL. |
externalToolGuard | Optional {mode:'required', endpoint, token, timeoutMs?}. Weglassen ist vollständig aus; im Required-Modus wird der Provider-Handshake vor dem Lauschen durchgeführt. |
allowOrigins | Cross-Origin-Allowlist (string[]), entspricht --allow-origin. |
allowPrivateAuthBaseUrl | Erlaubt die Installation der baseUrl für private / Localhost-Auth-Provider. |
serveWebShell | Stellt die gebaute Web-Shell-SPA am Daemon-Root bereit (Standard true); false (das --no-web der CLI) lässt den Daemon API-only. Keine Wirkung, wenn der Build die Shell-Assets auslässt. |
enableSessionShell | Aktiviert die Session-Shell-Ausführung; Bearer-Auth oder Trusted-Loopback-Authority und eine session-gebundene Client-ID sind weiterhin erforderlich. |
promptDeadlineMs | Prompt-Wallclock-Limit. |
writerIdleTimeoutMs | SSE-Writer-Idle-Timeout. |
channelIdleTimeoutMs | ACP-Child-Auto-Reap-Verzögerung nach Abschluss der Runtime-Arbeit. Plain-Preheat bleibt für die erste Nutzung erhalten; aktive Keepalive-Fenster können die Verzögerung verlängern. |
initializeTimeoutMs | ACP-Child-Request-Timeout, einschließlich des Initialize-Handshakes. |
sessionRestoreTimeoutMs | Timeout für das Laden/Fortsetzen einer ACP-Session. Reihenfolge: expliziter Restore-Wert; sonst erhöht ein expliziter Initialize-Wert den Standard von 60000, senkt ihn aber nie darunter; sonst 60000. |
sessionReapIntervalMs | Scan-Intervall des Session-Reapers. |
sessionIdleTimeoutMs | Idle-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:
| Feld | Effekt |
|---|---|
boundWorkspace | Erforderlicher kanonischer Workspace. |
sessionScope | 'single' (Standard) vs. 'thread'. |
initializeTimeoutMs, sessionRestoreTimeoutMs, maxSessions, eventRingSize, permissionResponseTimeoutMs, maxPendingPermissionsPerSession | Begrenzte Ressourcenlimits. permissionResponseTimeoutMs wird von gewöhnlichen Permissions und Fragen geteilt; 0 oder Weglassen deaktiviert den Timer. |
channelFactory | Steckbare ACP-Child-Factory; Standard ist defaultSpawnChannelFactory. |
fileSystem | BridgeFileSystem-Adapter. Siehe 07-workspace-filesystem.md. |
permissionPolicy, permissionConsensusQuorum, permissionAudit | Mediator-Verkabelung. |
statusProvider | Daemon-Host-Preflight-Zellen. |
childEnvOverrides | Umgebungsvariablen-Ergänzungen oder -Entfernungen pro Handle. |
externalToolGuard | Optionaler daemon-seitiger Handler für die private Child-to-Parent-Prepare-RPC. Die Bridge validiert Channel-Eigentümerschaft und den aktiven Prompt vor und nach dem Aufruf des Handlers. |
channelIdleTimeoutMs | ACP-Child-Auto-Reap-Verzögerung nach Abschluss der Runtime-Arbeit. Plain-Preheat bleibt für die erste Nutzung erhalten; aktive Keepalive-Fenster können die Verzögerung verlängern. |
Wichtige Standardwerte
| Konstante | Datei | Wert | Bedeutung |
|---|---|---|---|
DEFAULT_MAX_SESSIONS | bridge.ts | 32 | Session-Limit vor SessionLimitExceededError. |
MAX_EVENT_RING_SIZE | bridge.ts | 1_000_000 | Soft-Limit für BridgeOptions.eventRingSize; schützt vor Tippfehlern. |
DEFAULT_RING_SIZE | eventBus.ts | 8000 | SSE-Replay-Ringtiefe pro Session. |
DEFAULT_MAX_QUEUED | eventBus.ts | 256 | Warteschlangenlimit pro Subscriber. |
DEFAULT_MAX_SUBSCRIBERS | eventBus.ts | 64 | Subscriber-Limit pro Bus. |
WARN_THRESHOLD_RATIO | eventBus.ts | 0.75 | Auslöser für slow_client_warning. |
WARN_RESET_RATIO | eventBus.ts | 0.375 | Hysterese-Re-Arm-Schwelle. |
DEFAULT_INIT_TIMEOUT_MS | bridge.ts | 10_000 | ACP-initialize-Handshake-Timeout. |
MCP_RESTART_TIMEOUT_MS | bridge.ts | 300_000 | Bridge-Timeout für /workspace/mcp/:server/restart. |
DEFAULT_PERMISSION_TIMEOUT_MS | bridge.ts | 0 | Geteiltes Wallclock-Limit für Permissions und Fragen; 0 deaktiviert den Timer. |
DEFAULT_MAX_PENDING_PER_SESSION | bridge.ts | 64 | Abgestimmt auf DEFAULT_MAX_SUBSCRIBERS. |
MAX_RESOLVED_PERMISSION_RECORDS | permissionMediator.ts | 512 | FIFO für kürzlich aufgelöste Permissions. |
KILL_HARD_DEADLINE_MS | spawnChannel.ts | 10_000 | Graceful-Shutdown-Fenster pro Channel. |
SHUTDOWN_FORCE_CLOSE_MS | run-qwen-serve.ts | 5_000 | Force-Close-Timer des HTTP-Servers. |
MAX_READ_BYTES | fs/policy.ts | 256 * 1024 | Full-Snapshot- und Returned-Text-Limit; größerer UTF-8-Text erfordert ein endliches Zeilenlimit. |
MAX_WRITE_BYTES | fs/policy.ts | 5 * 1024 * 1024 | Schreib-Limit. |
MAX_DISPLAY_NAME_LENGTH | bridge.ts | 256 | Limit für Session-displayName. |
Querverweise
- Auth-Einstellungen:
12-auth-security.md - Capabilities und Protokollversion:
11-capabilities-versioning.md - Event-Ring- und Backpressure-Tuning:
10-event-bus.md - MCP-Pool / -Budget:
05-mcp-transport-pool.mdund06-mcp-budget-guardrails.md - Permission-Policy:
04-permission-mediation.md - Benutzer-Betriebsanleitung:
../../users/qwen-serve.md