Skip to Content
EntwicklerhandbuchDaemon-Modus (Deep Dive für Entwickler)Konfigurationsreferenz

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: 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>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. 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).
--openbooleanfalseÖ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-authbooleanfalseÖ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-authbooleanfalseErweitert 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 / repeatableprocess.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 / workspaceworkspaceProject-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>number32Obergrenze für aktive Sessions pro Workspace. 0 / Infinity bedeutet unbegrenzt; NaN / negative Werte lösen einen Fehler aus.
--max-total-sessions <n>number800, oder abgeleitet bei Kapazität 25 oder wenigerDaemon-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>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. Wirksam mit Bearer-Auth oder Trusted-Loopback-Authority; 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.
--session-prompt-settled-close-grace-ms <n>non-negative integer0Gnadenfrist, 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 integer4194304Byte-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 integer10000Pro-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 integer8388608 (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 | observeobserveOb 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 | observeobserveOb 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-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.
--external-tool-guard-mode <m>off / requiredoffAktiviert 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) originunsetProvider-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..300003000Deadline 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 stringunsetCross-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-urlbooleanfalseErlaubt /workspace/auth/provider, die baseUrl eines Localhost-/Private-Network-Auth-Providers zu installieren; nur in vertrauenswürdiger lokaler Entwicklung verwenden.
--web / --no-webbooleantrueStellt 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 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 integer0ACP-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 integer10000ACP-Child-Start-Deadline (Channel-Factory + Initialize-Handshake) und Standard-Request-Timeout (ms).
--session-restore-timeout-ms <n>positive integer60000Timeout 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 integer0Geteiltes 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 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. --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_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.
QWEN_SERVE_NEW_FILE_MODENew-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_SCOPEworkspace 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

EnvEffekt
QWEN_CODE_EXTERNAL_TOOL_GUARD_TOKENNicht-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.

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 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.

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.fileNamestringWorkspace-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.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, 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:

FeldEffekt
eventRingSizeÜberschreibt die Standard-Ringgröße pro Session.
sessionPromptSettledCloseGraceMsGnadenfrist, nachdem ein Prompt sich gesetzt hat, bevor eine ansonsten inaktive Session automatisch geschlossen werden darf. 0 = sofortiges Schließen.
memoryProjectScopeNur runQwenServe; Präzedenz ist Option, Launch-Env, dann workspace. Direkte createServeApp-Aufrufer verwenden deps.daemonEnv.
maxPendingPromptsPerSessionObergrenze für ausstehende Prompts pro Session; 0 / Infinity bedeutet unbegrenzt.
mcpPoolActiveProgrammatischer Schalter, Standardwert abgeleitet von QWEN_SERVE_NO_MCP_POOL.
externalToolGuardOptional {mode:'required', endpoint, token, timeoutMs?}. Weglassen ist vollständig aus; im Required-Modus wird der Provider-Handshake vor dem Lauschen durchgeführt.
allowOriginsCross-Origin-Allowlist (string[]), entspricht --allow-origin.
allowPrivateAuthBaseUrlErlaubt die Installation der baseUrl für private / Localhost-Auth-Provider.
serveWebShellStellt 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.
enableSessionShellAktiviert die Session-Shell-Ausführung; Bearer-Auth oder Trusted-Loopback-Authority und eine session-gebundene Client-ID sind weiterhin erforderlich.
promptDeadlineMsPrompt-Wallclock-Limit.
writerIdleTimeoutMsSSE-Writer-Idle-Timeout.
channelIdleTimeoutMsACP-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.
initializeTimeoutMsACP-Child-Request-Timeout, einschließlich des Initialize-Handshakes.
sessionRestoreTimeoutMsTimeout 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.
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:

FeldEffekt
boundWorkspaceErforderlicher kanonischer Workspace.
sessionScope'single' (Standard) vs. 'thread'.
initializeTimeoutMs, sessionRestoreTimeoutMs, maxSessions, eventRingSize, permissionResponseTimeoutMs, maxPendingPermissionsPerSessionBegrenzte Ressourcenlimits. permissionResponseTimeoutMs wird von gewöhnlichen Permissions und Fragen geteilt; 0 oder Weglassen deaktiviert den Timer.
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.
externalToolGuardOptionaler 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.
channelIdleTimeoutMsACP-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

KonstanteDateiWertBedeutung
DEFAULT_MAX_SESSIONSbridge.ts32Session-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.375Hysterese-Re-Arm-Schwelle.
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.ts0Geteiltes Wallclock-Limit für Permissions und Fragen; 0 deaktiviert den Timer.
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 * 1024Full-Snapshot- und Returned-Text-Limit; größerer UTF-8-Text erfordert ein endliches Zeilenlimit.
MAX_WRITE_BYTESfs/policy.ts5 * 1024 * 1024Schreib-Limit.
MAX_DISPLAY_NAME_LENGTHbridge.ts256Limit für Session-displayName.

Querverweise

Last updated on