Gateway
Configuratie — agents
Configuratiesleutels met agentbereik onder agents.*, multiAgent.*, session.*,
messages.* en talk.*. Zie voor kanalen, tools, de Gateway-runtime en andere
sleutels op het hoogste niveau de Configuratiereferentie.
Standaardinstellingen voor agents
agents.defaults.workspace
Standaard: OPENCLAW_WORKSPACE_DIR indien ingesteld, anders ~/.openclaw/workspace (of ~/.openclaw/workspace-<profile> wanneer OPENCLAW_PROFILE is ingesteld op een niet-standaardprofiel).
{ agents: { defaults: { workspace: "~/.openclaw/workspace" } },}Een expliciete waarde voor agents.defaults.workspace heeft voorrang op
OPENCLAW_WORKSPACE_DIR. Gebruik de omgevingsvariabele om standaardagents
naar een gekoppelde werkruimte te laten verwijzen wanneer je dat pad niet in de configuratie wilt opnemen.
agents.defaults.repoRoot
Optionele hoofdmap van de repository die wordt weergegeven in de Runtime-regel van de systeemprompt. Indien niet ingesteld, detecteert OpenClaw deze automatisch door vanaf de werkruimte omhoog te navigeren.
{ agents: { defaults: { repoRoot: "~/Projects/openclaw" } },}agents.defaults.skills
Optionele standaardtoelatingslijst voor Skills voor agents die
agents.entries.*.skills niet instellen.
{ agents: { defaults: { skills: ["github", "weather"] }, list: [ { id: "writer" }, // neemt github, weather over { id: "docs", skills: ["docs-search"] }, // vervangt standaardinstellingen { id: "locked-down", skills: [] }, // geen Skills ], },}- Laat
agents.defaults.skillsweg om standaard onbeperkte Skills toe te staan. - Laat
agents.entries.*.skillsweg om de standaardinstellingen over te nemen. - Stel
agents.entries.*.skills: []in voor geen Skills. - Een niet-lege lijst voor
agents.entries.*.skillsis de definitieve set voor die agent; deze wordt niet samengevoegd met de standaardinstellingen.
agents.defaults.skipBootstrap
Schakelt het automatisch aanmaken van bootstrapbestanden voor de werkruimte uit (AGENTS.md, SOUL.md, TOOLS.md, IDENTITY.md, USER.md, BOOTSTRAP.md).
{ agents: { defaults: { skipBootstrap: true } },}agents.defaults.skipOptionalBootstrapFiles
Slaat het aanmaken van geselecteerde optionele werkruimtebestanden over, terwijl vereiste bootstrapbestanden (AGENTS.md, TOOLS.md, BOOTSTRAP.md) nog steeds worden geschreven. Geldige waarden: SOUL.md, USER.md en IDENTITY.md (HEARTBEAT.md wordt geaccepteerd, maar doet niets omdat de Heartbeat-context naar de tijdelijke opslag van de Cron-monitor is verplaatst).
{ agents: { defaults: { skipOptionalBootstrapFiles: ["SOUL.md", "USER.md"], }, },}agents.defaults.contextInjection
Bepaalt wanneer bootstrapbestanden van de werkruimte in de systeemprompt worden geïnjecteerd. Standaard: "always".
"continuation-skip": bij veilige vervolgbeurten (na een voltooid antwoord van de assistent) wordt herinjectie van de werkruimtebootstrap overgeslagen, waardoor de prompt kleiner wordt. Heartbeat-uitvoeringen en nieuwe pogingen na Compaction bouwen de context nog steeds opnieuw op."never": schakelt de injectie van de werkruimtebootstrap en contextbestanden bij elke beurt uit. Gebruik dit alleen voor agents die hun promptlevenscyclus volledig zelf beheren (aangepaste contextengines, native runtimes die hun eigen context opbouwen of gespecialiseerde workflows zonder bootstrap). Bij Heartbeat- en herstelbeurten na Compaction wordt de injectie eveneens overgeslagen.
{ agents: { defaults: { contextInjection: "continuation-skip" } },}Overschrijving per agent: agents.entries.*.contextInjection. Weggelaten waarden nemen
agents.defaults.contextInjection over.
agents.defaults.bootstrapMaxChars
Maximumaantal tekens per bootstrapbestand van de werkruimte vóór afkapping. Standaard: 20000.
{ agents: { defaults: { bootstrapMaxChars: 20000 } },}Overschrijving per agent: agents.entries.*.bootstrapMaxChars. Weggelaten waarden nemen
agents.defaults.bootstrapMaxChars over.
agents.defaults.bootstrapTotalMaxChars
Maximumaantal tekens dat in totaal uit alle bootstrapbestanden van de werkruimte wordt geïnjecteerd. Standaard: 60000.
{ agents: { defaults: { bootstrapTotalMaxChars: 60000 } },}Overschrijving per agent: agents.entries.*.bootstrapTotalMaxChars. Weggelaten waarden
nemen agents.defaults.bootstrapTotalMaxChars over.
Overschrijvingen van bootstrapprofielen per agent
Gebruik overschrijvingen van bootstrapprofielen per agent wanneer één agent ander
promptinjectiegedrag nodig heeft dan de gedeelde standaardinstellingen. Weggelaten velden nemen waarden over van
agents.defaults.
{ agents: { defaults: { contextInjection: "continuation-skip", bootstrapMaxChars: 20000, bootstrapTotalMaxChars: 60000, }, list: [ { id: "strict-worker", contextInjection: "always", bootstrapMaxChars: 50000, bootstrapTotalMaxChars: 300000, }, ], },}agents.defaults.bootstrapPromptTruncationWarning
Bepaalt de melding in de systeemprompt die voor de agent zichtbaar is wanneer de bootstrapcontext wordt afgekapt.
Standaard: "always".
"off": injecteer nooit tekst met een afkappingsmelding in de systeemprompt."once": injecteer eenmaal per unieke afkappingshandtekening een beknopte melding."always": injecteer bij elke uitvoering een beknopte melding wanneer er afkapping plaatsvindt (aanbevolen).
Gedetailleerde ruwe/geïnjecteerde aantallen en velden voor configuratieafstemming blijven beschikbaar in diagnostiek, zoals context-/statusrapporten en logboeken; de gebruikelijke gebruikers-/runtimecontext van WebChat krijgt alleen de beknopte herstelmelding.
{ agents: { defaults: { bootstrapPromptTruncationWarning: "always" } }, // off | once | always}Eigendomsoverzicht voor contextbudgetten
OpenClaw heeft meerdere omvangrijke prompt-/contextbudgetten. Deze zijn bewust per subsysteem opgesplitst in plaats van allemaal via één algemene instelling te lopen.
| Budget | Omvat |
|---|---|
agents.defaults.bootstrapMaxChars / bootstrapTotalMaxChars |
Normale injectie van de werkruimtebootstrap |
agents.defaults.startupContext.* |
Eenmalige prelude voor modeluitvoering bij reset/opstart, inclusief recente dagelijkse memory/*.md-bestanden. Kale chatopdrachten /new en /reset worden bevestigd zonder het model aan te roepen |
skills.limits.* |
De compacte lijst met Skills die in de systeemprompt wordt geïnjecteerd |
agents.defaults.contextLimits.* |
Begrensde runtimefragmenten en geïnjecteerde blokken die eigendom zijn van de runtime |
memory.qmd.limits.* |
Grootte van geïndexeerde fragmenten voor geheugenzoekopdrachten en injectie |
Overeenkomstige overschrijvingen per agent:
agents.entries.*.skillsLimits.maxSkillsPromptCharsagents.entries.*.contextInjectionagents.entries.*.bootstrapMaxCharsagents.entries.*.bootstrapTotalMaxCharsagents.entries.*.contextLimits.*
agents.defaults.startupContext
Beheert de opstartprelude voor de eerste beurt die bij modeluitvoeringen voor reset/opstart wordt geïnjecteerd.
Kale chatopdrachten /new en /reset bevestigen de reset zonder
het model aan te roepen en laden deze prelude daarom niet.
{ agents: { defaults: { startupContext: { enabled: true, applyOn: ["new", "reset"], dailyMemoryDays: 2, maxFileBytes: 16384, maxFileChars: 1200, maxTotalChars: 2800, }, }, },}agents.defaults.contextLimits
Gedeelde standaardinstellingen voor begrensde runtimecontextoppervlakken.
{ agents: { defaults: { contextLimits: { memoryGetMaxChars: 12000, postCompactionMaxChars: 1800, }, }, },}memoryGetMaxChars: standaardlimiet voormemory_get-fragmenten voordat afkappingsmetadata en een vervolgmelding worden toegevoegd.- Wanneer
memory_getgeenlinesbevat, gebruikt OpenClaw een ingebouwd venster van 120 regels en past vervolgensmemoryGetMaxCharstoe. - Live toolresultaten gebruiken een automatische limiet voor de modelcontext:
16000tekens onder 100K tokens,32000tekens bij 100K+ tokens en64000tekens bij 200K+ tokens. postCompactionMaxChars: limiet voor het AGENTS.md-fragment dat wordt gebruikt tijdens vernieuwingsinjectie na Compaction.
agents.entries.*.contextLimits
Overschrijving per agent voor de gedeelde contextLimits-instellingen. Weggelaten velden nemen waarden over
van agents.defaults.contextLimits.
{ agents: { defaults: { contextLimits: { memoryGetMaxChars: 12000 }, }, list: [ { id: "tiny-local", contextLimits: { memoryGetMaxChars: 6000, }, }, ], },}skills.limits.maxSkillsPromptChars
Algemene limiet voor de compacte lijst met Skills die in de systeemprompt wordt geïnjecteerd. Dit
heeft geen invloed op het op aanvraag lezen van SKILL.md-bestanden.
{ skills: { limits: { maxSkillsPromptChars: 18000 } },}agents.entries.*.skillsLimits.maxSkillsPromptChars
Overschrijving per agent voor het promptbudget voor Skills.
{ agents: { list: [{ id: "tiny-local", skillsLimits: { maxSkillsPromptChars: 6000 } }], },}agents.defaults.imageMaxDimensionPx
Maximale pixelafmeting voor de langste zijde van afbeeldingen in transcript-/toolafbeeldingsblokken vóór provideraanroepen.
Standaard: 1200.
Lagere waarden verminderen meestal het gebruik van visietokens en de grootte van aanvraagpayloads bij uitvoeringen met veel schermafbeeldingen. Hogere waarden behouden meer visuele details.
{ agents: { defaults: { imageMaxDimensionPx: 1200 } },}agents.defaults.imageQuality
Voorkeur voor compressie/detail van de afbeeldingstool voor afbeeldingen die uit bestandspaden, URL's en mediaverwijzingen worden geladen.
Standaard: auto.
OpenClaw past de schaalstappen aan het geselecteerde afbeeldingsmodel aan. Claude Opus 4.8, OpenAI GPT-5.6 Sol, Qwen VL en gehoste Llama 4-visiemodellen kunnen bijvoorbeeld grotere afbeeldingen gebruiken dan oudere/standaard visiepaden met veel detail, terwijl beurten met meerdere afbeeldingen in de modus auto agressiever worden gecomprimeerd om de kosten voor tokens en latentie te beheersen.
Waarden:
auto: aanpassen aan modellimieten en het aantal afbeeldingen.efficient: kleinere afbeeldingen verkiezen voor lager token- en bytegebruik.balanced: de standaard schaalstappen als middenweg gebruiken.high: meer details behouden voor schermafbeeldingen, diagrammen en documentafbeeldingen.
{ agents: { defaults: { imageQuality: "auto" } },}agents.defaults.userTimezone
Tijdzone voor context in de systeemprompt (niet voor berichttijdstempels). Valt terug op de tijdzone van de host.
{ agents: { defaults: { userTimezone: "America/Chicago" } },}agents.defaults.timeFormat
Tijdnotatie in de systeemprompt. Standaard: auto (voorkeur van het besturingssysteem).
{ agents: { defaults: { timeFormat: "auto" } }, // auto | 12 | 24}agents.defaults.model
{ agents: { defaults: { models: { "anthropic/claude-opus-4-6": { alias: "opus" }, "minimax/MiniMax-M2.7": { alias: "minimax" }, }, model: { primary: "anthropic/claude-opus-4-6", fallbacks: ["minimax/MiniMax-M2.7"], }, utilityModel: "openai/gpt-5.4-mini", imageModel: { primary: "openrouter/qwen/qwen-2.5-vl-72b-instruct:free", fallbacks: ["openrouter/google/gemini-2.0-flash-vision:free"], }, mediaModels: { image: { primary: "openai/gpt-image-2", fallbacks: ["google/gemini-3.1-flash-image"], }, video: { primary: "qwen/wan2.6-t2v", fallbacks: ["qwen/wan2.6-i2v"], }, }, pdfModel: { primary: "anthropic/claude-opus-4-6", fallbacks: ["openai/gpt-5.4-mini"], }, params: { cacheRetention: "long" }, // algemene standaardparameters voor de provider pdfMaxMb: 10, pdfMaxPages: 20, thinkingDefault: "low", verboseDefault: "off", toolProgressDetail: "explain", reasoningDefault: "off", elevatedDefault: "on", timeoutSeconds: 600, mediaMaxMb: 5, contextTokens: 200000, maxConcurrent: 4, }, },}model: accepteert een tekenreeks ("provider/model") of een object ({ primary, fallbacks }).- De tekenreeksvorm stelt alleen het primaire model in.
- De objectvorm stelt het primaire model plus geordende failovermodellen in.
utilityModel: optioneleprovider/model-verwijzing of alias voor korte interne taken. Deze wordt momenteel gebruikt voor gegenereerde sessietitels in de Control UI, onderwerptitels voor Telegram-DM's, automatische threadtitels in Discord en vertelling bij voortgangsconcepten. Wanneer deze niet is ingesteld, leidt OpenClaw de door de primaire provider opgegeven standaard voor kleine modellen af als die bestaat (OpenAI →gpt-5.6-luna, Anthropic →claude-haiku-4-5); anders gebruiken titeltaken het primaire model van de agent en blijft vertelling uitgeschakeld. Als een afzonderlijk hulpmiddelmodel een gegenereerde titel niet kan voorbereiden of voltooien, probeert OpenClaw die titel eenmaal opnieuw met het primaire model. Voor dashboardtitels gebruiken automatische afleiding van het hulpmiddelmodel en de normale terugvaloptie de effectieve sessieprovider en het authenticatieprofiel; een expliciet hulpmiddelmodel behoudt de geconfigureerde provider/authenticatie. StelutilityModel: ""in om de alternatieve hulpmiddelroute over te slaan; het genereren van dashboardtitels gaat dan nog steeds rechtstreeks verder met het normale sessiemodel.agents.entries.*.utilityModeloverschrijft de standaard en een modelspecifieke overschrijving voor de bewerking heeft voorrang op beide. Hulpmiddeltaken voeren afzonderlijke modelaanroepen uit en sturen taakspecifieke inhoud naar de geselecteerde modelprovider. Voor het genereren van dashboardtitels worden maximaal de eerste 1.000 tekens van het eerste bericht dat geen opdracht is verzonden; voor vertelling worden het binnenkomende verzoek plus compacte, geredigeerde samenvattingen van hulpmiddelen verzonden. Kies een provider die aansluit bij je vereisten voor kosten en gegevensverwerking.imageModel: accepteert een tekenreeks ("provider/model") of een object ({ primary, fallbacks }).- Wordt door het pad van het hulpmiddel
imagegebruikt als configuratie voor het visiemodel wanneer het actieve model geen afbeeldingen kan verwerken. Modellen met ingebouwde visie ontvangen in plaats daarvan de geladen afbeeldingsbytes rechtstreeks. - Wordt ook gebruikt als terugvalroutering wanneer het geselecteerde/standaardmodel geen afbeeldingsinvoer kan verwerken.
- Geef de voorkeur aan expliciete
provider/model-verwijzingen. Kale ID's worden voor compatibiliteit geaccepteerd; als een kaal ID uniek overeenkomt met een geconfigureerde vermelding met afbeeldingsondersteuning inmodels.providers.*.models, kwalificeert OpenClaw het met die provider. Bij meerdere geconfigureerde overeenkomsten is een expliciet providervoorvoegsel vereist.
- Wordt door het pad van het hulpmiddel
mediaModels.image: accepteert een tekenreeks ("provider/model") of een object ({ primary, fallbacks }).- Wordt gebruikt door de gedeelde mogelijkheid voor het genereren van afbeeldingen en elk toekomstig hulpmiddel- of Plugin-oppervlak dat afbeeldingen genereert.
- Gebruikelijke waarden:
google/gemini-3.1-flash-imagevoor ingebouwde Gemini-afbeeldingsgeneratie,fal/fal-ai/flux/devvoor fal,openai/gpt-image-2voor OpenAI Images ofopenai/gpt-image-1.5voor OpenAI-uitvoer als PNG/WebP met transparante achtergrond. - Als je rechtstreeks een provider/model selecteert, configureer dan ook de bijbehorende providerauthenticatie (bijvoorbeeld
GEMINI_API_KEYofGOOGLE_API_KEYvoorgoogle/*,OPENAI_API_KEYof OpenAI Codex OAuth vooropenai/gpt-image-2/openai/gpt-image-1.5,FAL_KEYvoorfal/*). - Als dit wordt weggelaten, kan
image_generatenog steeds een door authenticatie ondersteunde providerstandaard afleiden. Eerst wordt de huidige standaardprovider geprobeerd, daarna de overige geregistreerde providers voor afbeeldingsgeneratie in volgorde van provider-ID.
mediaModels.music: accepteert een tekenreeks ("provider/model") of een object ({ primary, fallbacks }).- Wordt gebruikt door de gedeelde mogelijkheid voor het genereren van muziek en het ingebouwde hulpmiddel
music_generate. - Gebruikelijke waarden:
google/lyria-3-clip-preview,google/lyria-3-pro-previewofminimax/music-2.6. - Als dit wordt weggelaten, kan
music_generatenog steeds een door authenticatie ondersteunde providerstandaard afleiden. Eerst wordt de huidige standaardprovider geprobeerd, daarna de overige geregistreerde providers voor muziekgeneratie in volgorde van provider-ID. - Als je rechtstreeks een provider/model selecteert, configureer dan ook de bijbehorende providerauthenticatie/API-sleutel.
- Wordt gebruikt door de gedeelde mogelijkheid voor het genereren van muziek en het ingebouwde hulpmiddel
mediaModels.video: accepteert een tekenreeks ("provider/model") of een object ({ primary, fallbacks }).- Wordt gebruikt door de gedeelde mogelijkheid voor het genereren van video's en het ingebouwde hulpmiddel
video_generate. - Gebruikelijke waarden:
qwen/wan2.6-t2v,qwen/wan2.6-i2v,qwen/wan2.6-r2v,qwen/wan2.6-r2v-flashofqwen/wan2.7-r2v. - Als dit wordt weggelaten, kan
video_generatenog steeds een door authenticatie ondersteunde providerstandaard afleiden. Eerst wordt de huidige standaardprovider geprobeerd, daarna de overige geregistreerde providers voor videogeneratie in volgorde van provider-ID. - Als je rechtstreeks een provider/model selecteert, configureer dan ook de bijbehorende providerauthenticatie/API-sleutel.
- De officiële Plugin voor Qwen-videogeneratie ondersteunt maximaal 1 uitvoervideo, 1 invoerafbeelding, 4 invoervideo's, een duur van 10 seconden en de opties
size,aspectRatio,resolution,audioenwatermarkop providerniveau.
- Wordt gebruikt door de gedeelde mogelijkheid voor het genereren van video's en het ingebouwde hulpmiddel
pdfModel: accepteert een tekenreeks ("provider/model") of een object ({ primary, fallbacks }).- Wordt door het hulpmiddel
pdfgebruikt voor modelroutering. - Als dit wordt weggelaten, valt het PDF-hulpmiddel terug op
imageModelen vervolgens op het bepaalde sessie-/standaardmodel.
- Wordt door het hulpmiddel
pdfMaxMb: standaardlimiet voor PDF-grootte voor het hulpmiddelpdfwanneermaxBytesMbniet bij de aanroep wordt doorgegeven.pdfMaxPages: standaardmaximum voor het aantal pagina's dat door de terugvalmodus voor extractie in het hulpmiddelpdfwordt meegenomen.verboseDefault: standaardniveau voor uitgebreide uitvoer van agents. Waarden:"off","on","full". Standaard:"off".toolProgressDetail: detailmodus voor samenvattingen van het hulpmiddel/verboseen hulpmiddelregels in voortgangsconcepten. Waarden:"explain"(standaard, compacte menselijk leesbare labels) of"raw"(voegt de onbewerkte opdracht/details toe indien beschikbaar).agents.entries.*.toolProgressDetailper agent overschrijft deze standaard.reasoningDefault: standaardzichtbaarheid van redenering voor agents. Waarden:"off","on","stream".agents.entries.*.reasoningDefaultper agent overschrijft deze standaard. Geconfigureerde standaardwaarden voor redenering worden alleen toegepast voor eigenaren, geautoriseerde afzenders of Gateway-contexten voor operatorbeheerders wanneer geen overschrijving van de redenering per bericht of sessie is ingesteld.elevatedDefault: standaardniveau voor verhoogde uitvoer van agents. Waarden:"off","on","ask","full". Standaard:"on".model.primary: indelingprovider/model(bijvoorbeeldopenai/gpt-5.6-solvoor Codex OAuth-toegang). Als je de provider weglaat, probeert OpenClaw eerst een alias, daarna een unieke overeenkomst met een geconfigureerde provider voor dat exacte model-ID en valt pas daarna terug op de geconfigureerde standaardprovider (verouderd compatibiliteitsgedrag; geef daarom de voorkeur aan explicieteprovider/model). Als die provider het geconfigureerde standaardmodel niet meer aanbiedt, valt OpenClaw terug op het eerste geconfigureerde provider/model in plaats van een verouderde standaard van een verwijderde provider te tonen.contextTokens: optionele limiet voor de hele agent. Deze kan het effectieve budget van een groter model verlagen, maar kan een model niet boven de geconfigureerde of gedetecteerdecontextTokensverhogen. Om één rechtstreeks OpenAI-model het grotere ingebouwde venster te laten gebruiken, stel jemodels.providers.openai.models[].contextWindowencontextTokensvoor dat model in; zie standaardwaarden voor het OpenAI-contextvenster.models: geconfigureerde aliassen en instellingen per model. Elke vermelding kanalias(snelkoppeling) enparams(providerspecifiek, bijvoorbeeldtemperature,maxTokens,cacheRetention,context1m,responsesServerCompaction,responsesCompactThreshold, OpenRouter-routering viaprovider,chat_template_kwargs,extra_body/extraBody) bevatten. Het toevoegen van vermeldingen beperkt modeloverschrijvingen niet.- Gebruik
provider/*-vermeldingen zoals"openai/*": {}of"vllm/*": {}om alle gedetecteerde modellen voor geselecteerde providers te tonen zonder elk model-ID handmatig te vermelden. - Voeg
agentRuntimetoe aan eenprovider/*-vermelding wanneer elk dynamisch gedetecteerd model voor die provider dezelfde runtime moet gebruiken. Het exacte runtimebeleid vanprovider/modelheeft nog steeds voorrang op het jokerteken. - Veilige bewerkingen van metagegevens: gebruik
openclaw config set agents.defaults.models '<json>' --strict-json --mergeom vermeldingen toe te voegen.config setweigert vervangingen die bestaande vermeldingen zouden verwijderen, tenzij je--replacedoorgeeft.
- Gebruik
modelPolicy.allow: expliciete acceptatielijst voor overschrijvingen. Accepteert aliassen, exacteprovider/model-verwijzingen en afsluitende jokertekens voor voorvoegsels, zoalsopenai/*ofclawrouter/anthropic/*. Laat deze weg of gebruik[]om elk model toe te staan.agents.entries.*.modelPolicy.allowvervangt het standaardbeleid voor die agent; met een expliciete lege lijst staat die agent alle modellen toe.- Providergebonden configuratie-/onboardingflows voegen geselecteerde providermodellen samen in deze toewijzing en behouden niet-gerelateerde providers die al zijn geconfigureerd.
- Voor rechtstreekse OpenAI Responses-modellen wordt serverzijdige Compaction automatisch ingeschakeld. Gebruik
params.responsesServerCompaction: falseom het invoegen vancontext_managementte stoppen ofparams.responsesCompactThresholdom de drempel te overschrijven. Zie serverzijdige Compaction van OpenAI.
params: algemene standaardproviderparameters die op alle modellen worden toegepast. Stel deze in bijagents.defaults.params(bijvoorbeeld{ cacheRetention: "long" }).- Samenvoegprioriteit van
params(configuratie):agents.defaults.params(algemene basis) wordt overschreven dooragents.defaults.models["provider/model"].params(per model), waarnaagents.entries.*.params(overeenkomend agent-ID) per sleutel overschrijft. Zie promptcaching voor details. models.providers.openrouter.params.provider: standaardbeleid voor providerroutering voor heel OpenRouter. OpenClaw stuurt dit door naar hetprovider-object van het OpenRouter-verzoek;agents.defaults.models["openrouter/<model>"].params.providerper model en agentparameters overschrijven per sleutel. Zie OpenRouter-providerroutering.params.extra_body/params.extraBody: geavanceerde doorvoer-JSON die wordt samengevoegd in de hoofdtekst vanapi: "openai-completions"-verzoeken voor OpenAI-compatibele proxy's. Als deze botst met gegenereerde verzoeksleutels, heeft de extra hoofdtekst voorrang; niet-native voltooiingsroutes verwijderen daarna nog steeds de uitsluitend voor OpenAI bestemdestore.params.chat_template_kwargs: argumenten voor chatsjablonen voor vLLM/OpenAI-compatibele systemen die worden samengevoegd in de hoofdtekst op het hoogste niveau vanapi: "openai-completions"-verzoeken. Voorvllm/nemotron-3-*met denken uitgeschakeld verzendt de gebundelde vLLM-Plugin automatischenable_thinking: falseenforce_nonempty_content: true; explicietechat_template_kwargsoverschrijven gegenereerde standaardwaarden enextra_body.chat_template_kwargsheeft nog steeds de uiteindelijke voorrang. Geconfigureerde denkmodellen van vLLM Qwen en Nemotron bieden binaire/think-keuzes (off,on) in plaats van de inspanningsladder met meerdere niveaus.compat.thinkingFormat: stijl van de denkpayload voor OpenAI-compatibele systemen. Gebruik"together"voorreasoning.enabledin Together-stijl,"qwen"voorenable_thinkingop het hoogste niveau in Qwen-stijl, of"qwen-chat-template"voorchat_template_kwargs.enable_thinkingop backends uit de Qwen-familie die chatsjabloon-kwargs op verzoekniveau ondersteunen, zoals vLLM. OpenClaw wijst uitgeschakeld denken toe aanfalseen ingeschakeld denken aantrue, en geconfigureerde vLLM Qwen-modellen bieden binaire/think-keuzes voor deze indelingen.compat.supportedReasoningEfforts: lijst met OpenAI-compatibele redeneerinspanningen per model. Neem"xhigh"op voor aangepaste eindpunten die dit daadwerkelijk accepteren; OpenClaw stelt vervolgens/think xhighbeschikbaar in opdrachtmenu's, Gateway-sessierijen, validatie van sessiepatches, validatie van de agent-CLI en validatie vanllm-taskvoor die geconfigureerde provider/dat model. Gebruikcompat.reasoningEffortMapwanneer de backend voor een canoniek niveau een providerspecifieke waarde verwacht.params.preserveThinking: alleen voor Z.AI beschikbare opt-in voor behouden denkwerk. Wanneer dit is ingeschakeld en denkwerk actief is, verzendt OpenClawthinking.clear_thinking: falseen speelt het eerderereasoning_contentopnieuw af; zie Denkwerk en behouden denkwerk van Z.AI.localService: optionele procesbeheerder op providerniveau voor lokale/zelfgehoste modelservers. Wanneer het geselecteerde model bij die provider hoort, controleert OpenClawhealthUrl(ofbaseUrl + "/models"), start hetcommandmetargsals het eindpunt niet beschikbaar is, wacht het maximaalreadyTimeoutMsen verzendt het vervolgens de modelaanvraag.commandmoet een absoluut pad zijn.idleStopMs: 0houdt het proces actief totdat OpenClaw wordt afgesloten; een positieve waarde stopt het door OpenClaw gestarte proces na dat aantal milliseconden inactiviteit. Zie Lokale modelservices.- Runtimebeleid hoort bij providers of modellen, niet bij
agents.defaults. Gebruikmodels.providers.<provider>.agentRuntimevoor providerbrede regels ofagents.defaults.models["provider/model"].agentRuntime/agents.entries.*.models["provider/model"].agentRuntimevoor modelspecifieke regels. Alleen een provider-/modelvoorvoegsel selecteert nooit een harness. Als de runtime niet is ingesteld ofautois, mag OpenAI Codex alleen impliciet selecteren voor een exacte officiële HTTPS-route voor Platform Responses of ChatGPT Responses zonder een handmatig ingestelde aanvraagoverschrijving. Zie Impliciete OpenAI-agentruntime. - Configuratieschrijvers die deze velden wijzigen (bijvoorbeeld
/models set,/models set-imageen opdrachten om fallbacks toe te voegen of te verwijderen) slaan de canonieke objectvorm op en behouden waar mogelijk bestaande fallbacklijsten. maxConcurrent: maximaal aantal parallelle agentuitvoeringen in verschillende sessies (elke sessie wordt nog steeds serieel verwerkt). Standaard:4.
Runtimebeleid
{ models: { providers: { openai: { agentRuntime: { id: "codex" }, }, }, }, agents: { defaults: { model: "openai/gpt-5.6-sol", models: { "anthropic/claude-opus-5": { agentRuntime: { id: "claude-cli" }, }, "vllm/*": { agentRuntime: { id: "openclaw" }, }, }, }, },}id:"auto","openclaw", een geregistreerde plugin-harness-id of een ondersteunde CLI-backendalias. De gebundelde Codex-plugin registreertcodex; de gebundelde Anthropic-plugin biedt de CLI-backendclaude-cli.id: "auto"laat geregistreerde plugin-harnassen effectieve routes claimen die hun ondersteuningscontract declareren of daar anderszins aan voldoen, en gebruikt OpenClaw wanneer geen harness overeenkomt. Een expliciete pluginruntime zoalsid: "codex"vereist die harness en een compatibele effectieve route; deze faalt gesloten als een van beide niet beschikbaar is of als de uitvoering mislukt.id: "pi"wordt alleen geaccepteerd als verouderde alias vooropenclawom uitgebrachte configuraties van v2026.5.22 en eerder te behouden. Nieuwe configuraties moetenopenclawgebruiken.- De runtimeprioriteit is eerst het exacte modelbeleid (
agents.entries.*.models["provider/model"],agents.defaults.models["provider/model"]ofmodels.providers.<provider>.models[]), daarnaagents.entries.*/agents.defaults.models["provider/*"]en vervolgens het providerbrede beleid bijmodels.providers.<provider>.agentRuntime. - Runtime-sleutels voor de volledige agent zijn verouderd.
agents.defaults.agentRuntime,agents.entries.*.agentRuntime, runtime-pins voor sessies enOPENCLAW_AGENT_RUNTIMEworden genegeerd bij de runtimeselectie. Voeropenclaw doctor --fixuit om verouderde waarden te verwijderen. - Geschikte exacte officiële HTTPS-routes voor OpenAI Responses/ChatGPT zonder handmatig ingestelde aanvraagoverschrijving mogen de Codex-harness impliciet gebruiken. Provider/model
agentRuntime.id: "codex"maakt Codex een fail-closed-vereiste, maar maakt een incompatibele route niet compatibel. - Geef voor Claude CLI-implementaties de voorkeur aan
model: "anthropic/claude-opus-5"plus modelgebondenagentRuntime.id: "claude-cli". Verouderdeclaude-cli/<model>-referenties blijven werken voor compatibiliteit, maar nieuwe configuraties moeten de provider-/modelselectie canoniek houden en de uitvoeringsbackend in het runtimebeleid voor de provider/het model plaatsen. - Dit beheert alleen de uitvoering van agentbeurten met tekst. Mediageneratie, beeldverwerking, PDF, muziek, video en TTS blijven hun provider-/modelinstellingen gebruiken.
Ingebouwde verkorte aliassen (alleen van toepassing wanneer het model in agents.defaults.models staat):
| Alias | Model |
|---|---|
opus |
anthropic/claude-opus-5 |
sonnet |
anthropic/claude-sonnet-5 |
gpt |
openai/gpt-5.4 |
gpt-mini |
openai/gpt-5.4-mini |
gpt-nano |
openai/gpt-5.4-nano |
gemini |
google/gemini-3.1-pro-preview |
gemini-flash |
google/gemini-3-flash-preview |
gemini-flash-lite |
google/gemini-3.1-flash-lite |
Jouw geconfigureerde aliassen hebben altijd voorrang op de standaardwaarden.
Z.AI GLM-4.x-modellen schakelen automatisch de denkmodus in, tenzij je --thinking off instelt of zelf agents.defaults.models["zai/<model>"].params.thinking definieert.
Z.AI-modellen schakelen tool_stream standaard in voor het streamen van toolaanroepen. Stel agents.defaults.models["zai/<model>"].params.tool_stream in op false om dit uit te schakelen.
Bij Anthropic Claude Opus 4.8 blijft denken standaard uitgeschakeld in OpenClaw; wanneer adaptief denken expliciet wordt ingeschakeld, is de door Anthropic beheerde standaardwaarde voor inspanning high. Claude 4.6-modellen gebruiken standaard adaptive wanneer geen expliciet denkniveau is ingesteld.
CLI-backendselectie
De werking van CLI-adapters wordt door plugins geregistreerd en niet onder de standaardwaarden
van agents geconfigureerd. Selecteer een geregistreerde CLI-backend met modelgebonden agentRuntime.id,
zoals hierboven weergegeven. Zie CLI-backends voor de werking en
CLI-backendplugins bouwen voor de registratie van opdrachten,
sessies, afbeeldingen en parsers.
agents.defaults.promptOverlays
Provideronafhankelijke promptoverlays die per modelfamilie worden toegepast op door OpenClaw samengestelde promptoppervlakken. Model-id's uit de GPT-5-familie ontvangen het gedeelde gedragscontract voor OpenClaw-/providerroutes; personality beheert alleen de vriendelijke interactiestijllaag. Native Codex-app-serverroutes behouden door Codex beheerde basis-/modelinstructies in plaats van deze OpenClaw GPT-5-overlay, en OpenClaw schakelt de ingebouwde persoonlijkheid van Codex uit voor native threads.
{ agents: { defaults: { promptOverlays: { gpt5: { personality: "friendly", // vriendelijk | aan | uit }, }, }, },}"friendly"(standaard) en"on"schakelen de vriendelijke interactiestijllaag in."off"schakelt alleen de vriendelijke laag uit; het getagde GPT-5-gedragscontract blijft ingeschakeld.- Het verouderde
plugins.entries.openai.config.personalitywordt nog steeds gelezen wanneer deze gedeelde instelling niet is ingesteld.
agents.defaults.heartbeat
Periodieke Heartbeat-uitvoeringen.
{ agents: { defaults: { heartbeat: { every: "30m", // 0m schakelt uit model: "openai/gpt-5.4-mini", includeReasoning: false, includeSystemPromptSection: true, // standaard: true; false laat de Heartbeat-sectie weg uit de systeemprompt lightContext: false, // standaard: false; true slaat workspace-bootstrapbestanden over voor Heartbeat-uitvoeringen isolatedSession: false, // standaard: false; true voert elke Heartbeat uit in een nieuwe sessie (zonder gespreksgeschiedenis) skipWhenBusy: false, // standaard: false; true wacht ook op de subagent-/geneste lanes van deze agent session: "main", to: "+15555550123", directPolicy: "allow", // allow (standaard) | block target: "none", // standaard: none | opties: last | whatsapp | telegram | discord | ... prompt: "Volg de tijdelijke context van de Heartbeat-monitor...", ackMaxChars: 300, suppressToolErrorWarnings: false, timeoutSeconds: 45, }, }, },}every: duurtekenreeks (ms/s/m/h). Standaard:30m(API-sleutelauthenticatie) of1h(OAuth-authenticatie). Stel in op0mom uit te schakelen.- Het interval wordt naar een systeemeigen Cron-monitorrij geschreven. Voer
openclaw doctor --fixuit om een ontbrekende of verouderde rij aan te maken. Als Cron is uitgeschakeld, worden geplande Heartbeats niet uitgevoerd en registreert de Gateway bij het opstarten een waarschuwing. includeSystemPromptSection: wanneer false, wordt de Heartbeat-sectie weggelaten uit de systeemprompt. Standaard:true.suppressToolErrorWarnings: wanneer true, worden waarschuwingspayloads voor toolfouten tijdens Heartbeat-uitvoeringen onderdrukt.timeoutSeconds: de maximale toegestane tijd in seconden voor een Heartbeat-agentbeurt voordat deze wordt afgebroken. Laat dit oningesteld omagents.defaults.timeoutSecondste gebruiken wanneer dat is ingesteld; anders wordt het Heartbeat-interval gebruikt, begrensd op 600 seconden.directPolicy: beleid voor directe/DM-bezorging.allow(standaard) staat bezorging aan directe doelen toe.blockonderdrukt bezorging aan directe doelen en genereertreason=dm-blocked.lightContext: wanneer true, gebruiken Heartbeat-uitvoeringen een lichtgewicht bootstrapcontext en slaan ze workspace-bootstrapbestanden over. De tijdelijke monitorcontext wordt in beide gevallen door de Heartbeat-runner geïnjecteerd.isolatedSession: wanneer true, wordt elke Heartbeat uitgevoerd in een nieuwe sessie zonder eerdere gespreksgeschiedenis. Hetzelfde isolatiepatroon als CronsessionTarget: "isolated". Vermindert de tokenkosten per Heartbeat van ~100K tot ~2-5K tokens.skipWhenBusy: wanneer true, worden Heartbeat-uitvoeringen uitgesteld vanwege extra bezette lanes van die agent: het eigen sessiesleutelgebonden subagentwerk of geneste opdrachtwerk. Cron-lanes stellen Heartbeats altijd uit, ook zonder deze vlag.- Per agent: stel
agents.entries.*.heartbeatin. Wanneer een agentheartbeatdefinieert, voeren alleen die agents Heartbeats uit. - Heartbeats voeren volledige agentbeurten uit — kortere intervallen verbruiken meer tokens.
agents.defaults.compaction
{ agents: { defaults: { compaction: { mode: "safeguard", // standaard | beveiliging provider: "my-provider", // id van een geregistreerde Compaction-providerplugin (optioneel) thinkingLevel: "low", // optionele denkoverschrijving uitsluitend voor Compaction timeoutSeconds: 180, keepRecentTokens: 50000, recentTurnsPreserve: 3, identifierPolicy: "strict", // strikt | uit qualityGuard: { enabled: true, maxRetries: 1 }, midTurnPrecheck: { enabled: false }, // optionele controle van de tool-loopdruk postIndexSync: "async", // uit | asynchroon | wachten postCompactionSections: ["Session Startup", "Red Lines"], model: "openrouter/anthropic/claude-sonnet-4-6", // optionele modeloverschrijving uitsluitend voor Compaction truncateAfterCompaction: true, // na Compaction roteren naar een kleinere opvolgende JSONL maxActiveTranscriptBytes: "20mb", // optionele lokale Compaction-trigger tijdens de voorafgaande controle notifyUser: true, // meldingen wanneer Compaction begint/voltooid is en bij degradatie van het geheugen doorspoelen (standaard: false) memoryFlush: { enabled: true, model: "ollama/qwen3:8b", // optionele modeloverschrijving uitsluitend voor het geheugen doorspoelen softThresholdTokens: 6000, forceFlushTranscriptBytes: "2mb", }, }, }, },}mode:defaultofsafeguard(samenvatting in delen voor lange geschiedenissen). Zie Compaction.provider: id van een geregistreerde Compaction-providerplugin. Wanneer dit is ingesteld, wordt desummarize()van de provider aangeroepen in plaats van de ingebouwde LLM-samenvatting. Valt bij een fout terug op de ingebouwde functie. Door een provider in te stellen, wordtmode: "safeguard"afgedwongen. Zie Compaction.thinkingLevel: optioneel denkniveau dat alleen wordt gebruikt voor ingebedde OpenClaw-Compaction-samenvattingen (off,minimal,low,medium,high,xhigh,adaptive,maxofultra). Dit overschrijft het huidige denkniveau van de sessie en wordt begrensd op basis van het geselecteerde Compaction-model/de geselecteerde runtime. Laat dit oningesteld om het sessieniveau over te nemen. Compaction via de systeemeigen Codex-appserver negeert deze instelling, omdat het systeemeigen compact-verzoek geen denkniveau per bewerking kan overschrijven; OpenClaw registreert een waarschuwing wanneer dit is geconfigureerd.timeoutSeconds: maximaal aantal seconden dat één Compaction-bewerking mag duren voordat OpenClaw deze afbreekt. Standaard:180.keepRecentTokens: budget voor het afkappunt van de agent om het meest recente uiteinde van het transcript woordelijk te behouden. Handmatige/compactrespecteert dit wanneer het expliciet is ingesteld; anders is handmatige Compaction een hard controlepunt.recentTurnsPreserve: aantal meest recente beurten van gebruiker/assistent dat buiten de beveiligingssamenvatting woordelijk wordt behouden. Standaard:3.identifierPolicy:strict(standaard) ofoff.strictvoegt tijdens de Compaction-samenvatting ingebouwde richtlijnen voor het behoud van ondoorzichtige identificatoren vooraan toe.qualityGuard: controles waarbij bij onjuist gevormde uitvoer opnieuw wordt geprobeerd voor beveiligingssamenvattingen. Standaard ingeschakeld in de beveiligingsmodus; stelenabled: falsein om de controle over te slaan.midTurnPrecheck: optionele controle op druk in de tool-lus. Wanneerenabled: true, controleert OpenClaw de contextdruk nadat toolresultaten zijn toegevoegd en vóór de volgende modelaanroep. Als de context niet meer past, wordt de huidige poging afgebroken voordat de prompt wordt verzonden en wordt het bestaande herstelpad van de voorafgaande controle hergebruikt om toolresultaten af te kappen of Compaction uit te voeren en het opnieuw te proberen. Werkt met zowel de Compaction-modusdefaultalssafeguard. Standaard: uitgeschakeld.postIndexSync: herindexeringsmodus voor het sessiegeheugen na Compaction. Standaard:"async". Gebruik"await"voor de grootste actualiteit,"async"voor een lagere Compaction-latentie of"off"alleen wanneer de synchronisatie van het sessiegeheugen elders wordt afgehandeld.postCompactionSections: optionele namen van H2/H3-secties in AGENTS.md die na Compaction opnieuw moeten worden geïnjecteerd. Laat dit oningesteld of gebruik[]om dit uit te schakelen.model: optioneleprovider/model-idof kale alias uitagents.defaults.models, uitsluitend voor Compaction-samenvattingen. Kale aliassen worden vóór verzending omgezet; geconfigureerde letterlijke model-id's behouden voorrang bij conflicten. Gebruik dit wanneer de hoofdsessie één model moet blijven gebruiken, maar Compaction-samenvattingen op een ander model moeten worden uitgevoerd; wanneer dit niet is ingesteld, gebruikt Compaction het primaire model van de sessie.truncateAfterCompaction: roteert het actieve sessietranscript na Compaction, zodat toekomstige beurten alleen de samenvatting en het niet-samengevatte uiteinde laden, terwijl het vorige volledige transcript gearchiveerd blijft. Voorkomt onbeperkte groei van het actieve transcript in langdurige sessies. Standaard:false.maxActiveTranscriptBytes: optionele drempelwaarde in bytes (numberof tekenreeksen zoals"20mb") die vóór een uitvoering normale lokale Compaction activeert wanneer de transcriptgeschiedenis de drempel overschrijdt. VereisttruncateAfterCompaction, zodat een geslaagde Compaction naar een kleiner opvolgend transcript kan roteren. Uitgeschakeld wanneer dit niet is ingesteld of0.notifyUser: wanneertrue, worden korte meldingen over contextonderhoud naar de gebruiker gestuurd: wanneer Compaction begint en is voltooid (bijvoorbeeld: "Context wordt gecomprimeerd..." en "Compaction voltooid"), en wanneer een geheugenopslag vóór Compaction is uitgeput, zodat het antwoord in een beperkte toestand doorgaat (bijvoorbeeld: "Geheugenonderhoud is tijdelijk mislukt; je antwoord wordt voortgezet."). Standaard uitgeschakeld om deze meldingen stil te houden.memoryFlush: stille agentische beurt vóór automatische Compaction om duurzame herinneringen op te slaan. Stelmodelin op een exacte provider/een exact model, zoalsollama/qwen3:8b, wanneer deze onderhoudsbeurt op een lokaal model moet blijven; de overschrijving neemt de actieve terugvalketen van de sessie niet over.forceFlushTranscriptBytesdwingt de opslag af wanneer de transcriptgrootte de drempel bereikt, zelfs als de tokentellers verouderd zijn. Wordt overgeslagen wanneer de werkruimte alleen-lezen is.
Aangepaste Compaction-instructies worden door de code beheerd. Implementeer een Compaction-provider-
plugin met summarize() voor aangepaste samenstellingslogica van samenvattingen en gebruik
before_prompt_build wanneer context na Compaction in latere
modelprompts moet worden geïnjecteerd. Doctor verwijdert de buiten gebruik gestelde instructievelden en verwijst naar deze
aansluitpunten.
agents.defaults.contextPruning
Snoeit oude toolresultaten uit de context in het geheugen voordat deze naar het LLM wordt verzonden. Wijzigt de sessiegeschiedenis op schijf niet. Standaard uitgeschakeld; stel mode: "cache-ttl" in om dit in te schakelen.
{ agents: { defaults: { contextPruning: { mode: "cache-ttl", // uit (standaard) | cache-ttl }, }, },}Gedrag van de cache-ttl-modus
mode: "cache-ttl"schakelt snoeirondes in.- Bij het snoeien worden te grote toolresultaten eerst licht ingekort en worden oudere toolresultaten daarna, indien nodig, volledig gewist.
Licht inkorten behoudt het begin en einde en voegt ... in het midden in.
Volledig wissen vervangt het volledige toolresultaat door de tijdelijke aanduiding.
Opmerkingen:
- Afbeeldingsblokken worden nooit ingekort/gewist.
- Verhoudingen zijn gebaseerd op tekens (bij benadering), niet op exacte aantallen tokens.
- De meest recente assistentberichten blijven behouden.
Zie Sessies snoeien voor details over het gedrag.
Blokstreaming
{ agents: { defaults: { blockStreamingDefault: "off", // on | off blockStreamingBreak: "text_end", // text_end | message_end blockStreamingChunk: { minChars: 800, maxChars: 1200, breakPreference: "paragraph" }, blockStreamingCoalesce: { idleMs: 1000 }, humanDelay: { mode: "natural" }, // off (standaard) | natural | custom (gebruik minMs/maxMs) }, },}- Voor andere kanalen dan Telegram is expliciete
*.streaming.block.enabled: truevereist om blokantwoorden in te schakelen. QQ Bot is de uitzondering: het heeft geenstreaming.block-sleutels en streamt blokantwoorden tenzijchannels.qqbot.streaming.mode"off"is. - Overschrijvingen per kanaal:
channels.<channel>.streaming.block.coalesce(en varianten per account). Discord, Google Chat, Mattermost, MS Teams, Signal en Slack gebruiken standaardminChars: 1500/idleMs: 1000. blockStreamingChunk.breakPreference: gewenste blokgrens ("paragraph" | "newline" | "sentence").humanDelay: willekeurige pauze tussen blokantwoorden. Standaard:off.natural= 800-2500ms.customgebruiktminMs/maxMs(valt voor elke niet-ingestelde grens terug op het natuurlijke bereik). Overschrijving per agent:agents.entries.*.humanDelay.
Zie Streaming voor details over gedrag en opdeling.
Typindicatoren
{ agents: { defaults: { typingMode: "instant", // never | instant | thinking | message typingIntervalSeconds: 6, }, },}- Standaardwaarden:
instantvoor directe chats/vermeldingen,messagevoor groepschats zonder vermelding. - Standaard voor
typingIntervalSeconds:6. - Overschrijving per agent:
agents.entries.*.typingMode.
Zie Typindicatoren.
agents.defaults.sandbox
Optionele sandboxing voor de ingebedde agent. Zie Sandboxing voor de volledige handleiding.
{ agents: { defaults: { sandbox: { mode: "non-main", // off (standaard) | non-main | all backend: "docker", // docker (standaard) | ssh | openshell scope: "agent", // session | agent (standaard) | shared workspaceAccess: "none", // none (standaard) | ro | rw workspaceRoot: "~/.openclaw/sandboxes", docker: { image: "openclaw-sandbox:bookworm-slim", containerPrefix: "openclaw-sbx-", workdir: "/workspace", readOnlyRoot: true, tmpfs: ["/tmp", "/var/tmp", "/run"], network: "none", user: "1000:1000", capDrop: ["ALL"], env: { LANG: "C.UTF-8" }, setupCommand: "apt-get update && apt-get install -y git curl jq", pidsLimit: 256, memory: "1g", memorySwap: "2g", cpus: 1, gpus: "all", ulimits: { nofile: { soft: 1024, hard: 2048 }, nproc: 256, }, seccompProfile: "/path/to/seccomp.json", apparmorProfile: "openclaw-sandbox", dns: ["1.1.1.1", "8.8.8.8"], extraHosts: ["internal.service:10.0.0.5"], binds: ["/home/user/source:/source:rw"], }, ssh: { target: "user@gateway-host:22", command: "ssh", workspaceRoot: "/tmp/openclaw-sandboxes", strictHostKeyChecking: true, updateHostKeys: true, identityFile: "~/.ssh/id_ed25519", certificateFile: "~/.ssh/id_ed25519-cert.pub", knownHostsFile: "~/.ssh/known_hosts", // SecretRefs / inline-inhoud wordt ook ondersteund: // identityData: { source: "env", provider: "default", id: "SSH_IDENTITY" }, // certificateData: { source: "env", provider: "default", id: "SSH_CERTIFICATE" }, // knownHostsData: { source: "env", provider: "default", id: "SSH_KNOWN_HOSTS" }, }, browser: { enabled: false, image: "openclaw-sandbox-browser:bookworm-slim", network: "openclaw-sandbox-browser", cdpPort: 9222, cdpSourceRange: "172.21.0.1/32", vncPort: 5900, noVncPort: 6080, headless: false, enableNoVnc: true, allowHostControl: false, autoStart: true, autoStartTimeoutMs: 12000, }, prune: { idleHours: 24, maxAgeDays: 7, }, }, }, }, tools: { sandbox: { tools: { allow: [ "exec", "process", "read", "write", "edit", "apply_patch", "sessions_list", "sessions_history", "sessions_send", "sessions_spawn", "session_status", ], deny: ["browser", "canvas", "nodes", "cron", "discord", "gateway"], }, }, },}De hierboven weergegeven standaardwaarden (off/docker/agent/none/bookworm-slim-image/none-netwerk/enz.) zijn de daadwerkelijke standaardwaarden van OpenClaw, niet slechts illustratieve waarden.
Sandboxdetails
Backend:
docker: lokale Docker-runtime (standaard)ssh: algemene externe runtime op basis van SSHopenshell: OpenShell-runtime
Wanneer backend: "openshell" is geselecteerd, worden runtimespecifieke instellingen verplaatst naar
plugins.entries.openshell.config.
Configuratie van de SSH-backend:
target: SSH-doel inuser@host[:port]-vormcommand: SSH-clientopdracht (standaard:ssh)workspaceRoot: absolute externe hoofdmap die wordt gebruikt voor werkruimten per bereik (standaard:/tmp/openclaw-sandboxes)identityFile/certificateFile/knownHostsFile: bestaande lokale bestanden die aan OpenSSH worden doorgegevenidentityData/certificateData/knownHostsData: inline-inhoud of SecretRefs die OpenClaw tijdens runtime omzet in tijdelijke bestandenstrictHostKeyChecking/updateHostKeys: OpenSSH-instellingen voor host-sleutelbeleid (beide standaardtrue)
Voorrangsvolgorde voor SSH-authenticatie:
identityDataheeft voorrang opidentityFilecertificateDataheeft voorrang opcertificateFileknownHostsDataheeft voorrang opknownHostsFile- Door SecretRef ondersteunde
*Data-waarden worden opgelost vanuit de actieve momentopname van de secrets-runtime voordat de sandboxsessie start
Gedrag van de SSH-backend:
- vult de externe werkruimte eenmaal na aanmaken of opnieuw aanmaken
- houdt daarna de externe SSH-werkruimte canoniek
- leidt
exec, bestandstools en mediapaden via SSH - synchroniseert externe wijzigingen niet automatisch terug naar de host
- ondersteunt geen sandbox-browsercontainers
Toegang tot de werkruimte:
none: sandboxwerkruimte per bereik onder~/.openclaw/sandboxes(standaard)ro: sandboxwerkruimte op/workspace, agentwerkruimte alleen-lezen gekoppeld op/agentrw: agentwerkruimte leesbaar/schrijfbaar gekoppeld op/workspace
Bereik:
session: container + werkruimte per sessieagent: één container + werkruimte per agent (standaard)shared: gedeelde container en werkruimte (geen isolatie tussen sessies)
OpenShell-pluginconfiguratie:
{plugins: { entries: { openshell: { enabled: true, config: { mode: "mirror", // spiegel (standaard) | extern command: "openshell", from: "openclaw", remoteWorkspaceDir: "/sandbox", remoteAgentWorkspaceDir: "/agent", gateway: "lab", // optioneel gatewayEndpoint: "https://lab.example", // optioneel policy: "strict", // optionele OpenShell-beleids-id providers: ["openai"], // optioneel autoProviders: true, timeoutSeconds: 120, }, }, },},}OpenShell-modus:
mirror: vul extern vanuit lokaal vóór uitvoering, synchroniseer terug na uitvoering; de lokale werkruimte blijft canoniekremote: vul extern eenmaal wanneer de sandbox wordt aangemaakt en houd daarna de externe werkruimte canoniek
In de modus remote worden lokale hostbewerkingen die buiten OpenClaw zijn gemaakt na de vulstap niet automatisch naar de sandbox gesynchroniseerd.
Het transport verloopt via SSH naar de OpenShell-sandbox, maar de plugin beheert de levenscyclus van de sandbox en de optionele spiegelsynchronisatie.
setupCommand wordt eenmaal uitgevoerd nadat de container is aangemaakt (via sh -lc). Vereist uitgaand netwerkverkeer, een beschrijfbare hoofdmap en de rootgebruiker.
Containers gebruiken standaard network: "none" — stel dit in op "bridge" (of een aangepast bridgenetwerk) als de agent uitgaande toegang nodig heeft.
"host" wordt geblokkeerd. "container:<id>" wordt standaard geblokkeerd, tenzij je expliciet
sandbox.docker.dangerouslyAllowContainerNamespaceJoin: true instelt (noodmaatregel).
Codex-app-serverbeurten in een actieve OpenClaw-sandbox gebruiken dezelfde instelling voor uitgaand verkeer voor hun systeemeigen netwerktoegang in codemodus.
Binnenkomende bijlagen worden klaargezet in media/inbound/* in de actieve werkruimte.
docker.binds koppelt aanvullende hostmappen; globale en agentspecifieke koppelingen worden samengevoegd.
Sandboxbrowser (sandbox.browser.enabled, standaard false): Chromium + CDP in een container. noVNC-URL wordt in de systeemprompt geïnjecteerd. Vereist geen browser.enabled in openclaw.json.
Waarnemerstoegang via noVNC gebruikt standaard VNC-authenticatie en OpenClaw genereert een URL met een kortlevend token (in plaats van het wachtwoord in de gedeelde URL bloot te stellen).
allowHostControl: false(standaard) voorkomt dat sandboxsessies de hostbrowser als doel gebruiken.networkis standaardopenclaw-sandbox-browser(speciaal bridgenetwerk). Stel dit alleen in opbridgeals je expliciet algemene bridgeconnectiviteit wilt."host"wordt hier ook geblokkeerd.cdpSourceRangebeperkt CDP-toegang bij de containerrand optioneel tot een CIDR-bereik (bijvoorbeeld172.21.0.1/32).sandbox.browser.bindskoppelt aanvullende hostmappen uitsluitend in de sandbox-browsercontainer. Wanneer dit is ingesteld (inclusief[]), vervangt hetdocker.bindsvoor de browsercontainer.- Chromium in de sandbox-browsercontainer wordt altijd gestart met
--no-sandbox --disable-setuid-sandbox(containers beschikken niet over de kernelprimitieven die Chromes eigen sandbox nodig heeft); hiervoor bestaat geen configuratieschakelaar. - De standaardinstellingen voor het starten zijn gedefinieerd in
scripts/sandbox-browser-entrypoint.shen afgestemd op containerhosts: --remote-debugging-address=127.0.0.1--remote-debugging-port=<derived from OPENCLAW_BROWSER_CDP_PORT>--user-data-dir=${HOME}/.chrome--no-first-run--no-default-browser-check--disable-dev-shm-usage--disable-background-networking--disable-breakpad--disable-crash-reporter--no-zygote--metrics-recording-only--password-store=basic--use-mock-keychain--disable-3d-apis,--disable-gpuen--disable-software-rasterizerzijn standaard ingeschakeld en kunnen worden uitgeschakeld metOPENCLAW_BROWSER_DISABLE_GRAPHICS_FLAGS=0als dit vereist is voor het gebruik van WebGL/3D.--disable-extensions(standaard ingeschakeld);OPENCLAW_BROWSER_DISABLE_EXTENSIONS=0schakelt extensies opnieuw in als je workflow ervan afhankelijk is.--renderer-process-limit=2standaard; wijzig dit metOPENCLAW_BROWSER_RENDERER_PROCESS_LIMIT=<N>, stel0in om de standaardproceslimiet van Chromium te gebruiken.--headless=newalleen wanneerheadlessis ingeschakeld.- De standaardwaarden zijn de basisinstellingen van de containerimage; gebruik een aangepaste browserimage met een aangepast toegangspunt om de standaardwaarden van de container te wijzigen.
Browsersandboxing en sandbox.docker.binds werken alleen met Docker.
Images bouwen (vanuit een broncodecheckout):
scripts/sandbox-setup.sh # hoofdimage voor de sandboxscripts/sandbox-browser-setup.sh # optionele browserimageZie voor npm-installaties zonder broncodecheckout Sandboxing § Images en installatie voor inline docker build-opdrachten.
agents.entries (overschrijvingen per agent)
Gebruik agents.entries.*.tts om een agent een eigen TTS-provider, stem, model,
stijl of automatische TTS-modus te geven. Het agentblok wordt diep samengevoegd met de globale
tts, zodat gedeelde aanmeldgegevens op één plaats kunnen blijven terwijl afzonderlijke
agents alleen de benodigde stem- of providervelden overschrijven. De overschrijving van de actieve agent
is van toepassing op automatische gesproken antwoorden, /tts audio, /tts status en
de agenttool tts. Zie Tekst-naar-spraak
voor providervoorbeelden en de voorrangsvolgorde.
{ agents: { list: [ { id: "main", default: true, name: "Main Agent", workspace: "~/.openclaw/workspace", agentDir: "~/.openclaw/agents/main/agent", model: "anthropic/claude-opus-4-6", // of { primary, fallbacks } utilityModel: "openai/gpt-5.4-mini", thinkingDefault: "high", // overschrijving van het denkniveau per agent reasoningDefault: "on", // overschrijving van de zichtbaarheid van redeneringen per agent fastModeDefault: false, // overschrijving van de snelle modus per agent params: { cacheRetention: "none" }, // overschrijft overeenkomende defaults.models-parameters per sleutel tts: { providers: { elevenlabs: { speakerVoiceId: "EXAVITQu4vr4xnSDxMaL" }, }, }, skills: ["docs-search"], // vervangt agents.defaults.skills wanneer ingesteld identity: { name: "Samantha", theme: "behulpzame luiaard", emoji: "🦥", avatar: "avatars/samantha.png", }, groupChat: { mentionPatterns: ["@openclaw"] }, sandbox: { mode: "off" }, runtime: { type: "acp", acp: { agent: "codex", backend: "acpx", mode: "persistent", // persistent | oneshot cwd: "/workspace/openclaw", }, }, subagents: { allowAgents: ["*"] }, tools: { profile: "coding", allow: ["browser"], deny: ["canvas"], elevated: { enabled: true }, }, }, ], },}id: stabiele agent-id (verplicht).default: wanneer er meerdere zijn ingesteld, wint de eerste (waarschuwing wordt gelogd). Als er geen is ingesteld, is het eerste item in de lijst de standaardwaarde.model: de tekenreeksvorm stelt een strikt primair model per agent in zonder modelfallback; de objectvorm{ primary }is ook strikt, tenzij jefallbackstoevoegt. Gebruik{ primary, fallbacks: [...] }om fallback voor die agent in te schakelen, of{ primary, fallbacks: [] }om strikt gedrag expliciet te maken. Cron-taken die alleenprimaryoverschrijven, nemen nog steeds de standaardfallbacks over, tenzij jefallbacks: []instelt.utilityModel: optionele overschrijving per agent voor korte interne taken, zoals gegenereerde sessie- en threadtitels. Valt terug opagents.defaults.utilityModelen vervolgens op de gedeclareerde standaardwaarde voor kleine modellen van de effectieve sessieprovider. Dashboardtitels proberen het eenmaal opnieuw met het effectieve reguliere sessiemodel. Een lege tekenreeks slaat de alternatieve hulproute voor deze agent over zonder het genereren van dashboardtitels uit te schakelen.params: streamparameters per agent die worden samengevoegd over de geselecteerde modelvermelding inagents.defaults.models. Gebruik dit voor agentspecifieke overschrijvingen zoalscacheRetention,temperatureofmaxTokens, zonder de volledige modelcatalogus te dupliceren.tts: optionele tekst-naar-spraakoverschrijvingen per agent. Het blok wordt diep samengevoegd overtts, dus bewaar gedeelde providerreferenties en het fallbackbeleid inttsen stel hier alleen personaspecifieke waarden in, zoals provider, stem, model, stijl of automatische modus.skills: optionele allowlist voor Skills per agent. Indien weggelaten, neemt de agentagents.defaults.skillsover wanneer dit is ingesteld; een expliciete lijst vervangt de standaardwaarden in plaats van ermee te worden samengevoegd, en[]betekent geen Skills.thinkingDefault: optioneel standaarddenkniveau per agent (off | minimal | low | medium | high | xhigh | adaptive | max). Overschrijftagents.defaults.thinkingDefaultvoor deze agent wanneer er geen overschrijving per bericht of sessie is ingesteld. Het geselecteerde provider-/modelprofiel bepaalt welke waarden geldig zijn; voor Google Gemini behoudtadaptivehet door de provider beheerde dynamische denken (thinkingLevelweggelaten bij Gemini 3/3.1,thinkingBudget: -1bij Gemini 2.5).reasoningDefault: optionele standaardzichtbaarheid van redeneringen per agent (on | off | stream). Overschrijftagents.defaults.reasoningDefaultvoor deze agent wanneer er geen overschrijving van redeneringen per bericht of sessie is ingesteld.fastModeDefault: optionele standaardwaarde per agent voor de snelle modus ("auto" | true | false). Wordt toegepast wanneer er geen overschrijving van de snelle modus per bericht of sessie is ingesteld.models: optionele overschrijvingen per agent voor de modelcatalogus/runtime, geïndexeerd op volledigeprovider/model-id's. Gebruikmodels["provider/model"].agentRuntimevoor runtime-uitzonderingen per agent.runtime: optionele runtimebeschrijving per agent. Gebruiktype: "acp"met de standaardwaarden vanruntime.acp(agent,backend,mode,cwd) wanneer de agent standaard ACP-harnesssessies moet gebruiken.identity.avatar: werkruimte-relatief pad,http(s)-URL ofdata:-URI.- Lokale werkruimte-relatieve
identity.avatar-afbeeldingsbestanden zijn beperkt tot 2 MB.http(s)-URL's endata:-URI's worden niet getoetst aan de lokale bestandsgroottelimiet. identityleidt standaardwaarden af:ackReactionuitemoji,mentionPatternsuitname/emoji.subagents.allowAgents: allowlist van geconfigureerde agent-id's voor explicietesessions_spawn.agentId-doelen (["*"]= elk geconfigureerd doel; standaard: alleen dezelfde agent). Neem de id van de aanvrager op wanneer op zichzelf gerichteagentId-aanroepen toegestaan moeten zijn. Verouderde vermeldingen waarvan de agentconfiguratie is verwijderd, worden doorsessions_spawngeweigerd en uitagents_listweggelaten; voeropenclaw doctor --fixuit om ze op te ruimen, of voeg een minimaleagents.entries.*-vermelding toe als dat doel startbaar moet blijven en tegelijk de standaardwaarden moet overnemen.- Beveiliging voor sandbox-overerving: als de sessie van de aanvrager in een sandbox draait, weigert
sessions_spawndoelen die zonder sandbox zouden worden uitgevoerd. subagents.requireAgentId: blokkeer wanneer dit waar issessions_spawn-aanroepen dieagentIdweglaten (dwingt expliciete profielselectie af; standaard: false).subagents.maxConcurrent: maximaal aantal gelijktijdige uitvoeringen van onderliggende agents voor alle subagentuitvoeringen. Standaard:8.subagents.maxChildrenPerAgent: maximaal aantal actieve onderliggende agents dat één agentsessie kan starten. Standaard:5.subagents.maxSpawnDepth: maximale nestingsdiepte voor het starten van subagents (1-5). Standaard:1(geen nesting).subagents.archiveAfterMinutes: tijd waarna de status van een voltooide subagent wordt gearchiveerd. Standaard:60.
Routering met meerdere agents
Voer meerdere geïsoleerde agents uit binnen één Gateway. Zie Meerdere agents.
{ agents: { list: [ { id: "home", default: true, workspace: "~/.openclaw/workspace-home" }, { id: "work", workspace: "~/.openclaw/workspace-work" }, ], }, bindings: [ { agentId: "home", match: { channel: "whatsapp", accountId: "personal" } }, { agentId: "work", match: { channel: "whatsapp", accountId: "biz" } }, ],}Overeenkomstvelden voor bindingen
type(optioneel):routevoor normale routering (een ontbrekend type gebruikt standaard route),acpvoor persistente ACP-gespreksbindingen.match.channel(verplicht)match.accountId(optioneel;*= elk account; weggelaten = standaardaccount)match.peer(optioneel;{ kind: direct|group|channel, id })match.guildId/match.teamId(optioneel; kanaalspecifiek)acp(optioneel; alleen voortype: "acp"):{ mode, label, cwd, backend }
Deterministische overeenkomstvolgorde:
match.peermatch.guildIdmatch.teamIdmatch.accountId(exact, zonder peer/guild/team)match.accountId: "*"(kanaalbreed)- Standaardagent
Binnen elk niveau wint de eerste overeenkomende bindings-vermelding.
Voor type: "acp"-vermeldingen zoekt OpenClaw op exacte gespreksidentiteit (match.channel + account + match.peer.id) en gebruikt het niet de bovenstaande niveauvolgorde voor routebindingen.
Toegangsprofielen per agent
Volledige toegang (geen sandbox)
{agents: { list: [ { id: "personal", workspace: "~/.openclaw/workspace-personal", sandbox: { mode: "off" }, }, ],},}Alleen-lezen-tools + werkruimte
{agents: { list: [ { id: "family", workspace: "~/.openclaw/workspace-family", sandbox: { mode: "all", scope: "agent", workspaceAccess: "ro" }, tools: { allow: [ "read", "sessions_list", "sessions_history", "sessions_send", "sessions_spawn", "session_status", ], deny: ["write", "edit", "apply_patch", "exec", "process", "browser"], }, }, ],},}Geen toegang tot het bestandssysteem (alleen berichten)
{agents: { list: [ { id: "public", workspace: "~/.openclaw/workspace-public", sandbox: { mode: "all", scope: "agent", workspaceAccess: "none" }, tools: { allow: [ "sessions_list", "sessions_history", "sessions_send", "sessions_spawn", "session_status", "whatsapp", "telegram", "slack", "discord", "gateway", ], deny: [ "read", "write", "edit", "apply_patch", "exec", "process", "browser", "canvas", "nodes", "cron", "gateway", "image", ], }, }, ],},}Zie Sandbox en tools voor meerdere agents voor details over de prioriteitsvolgorde.
Sessie
{ session: { scope: "per-sender", dmScope: "main", // main | per-peer | per-channel-peer | per-account-channel-peer identityLinks: { alice: ["telegram:123456789", "discord:987654321012345678"], }, reset: { mode: "daily", // daily | idle atHour: 4, idleMinutes: 60, }, resetByType: { thread: { mode: "daily", atHour: 4 }, direct: { mode: "idle", idleMinutes: 240 }, group: { mode: "idle", idleMinutes: 120 }, }, resetByChannel: { discord: { mode: "idle", idleMinutes: 30 }, }, resetTriggers: ["/new", "/reset"], store: "~/.openclaw/agents/{agentId}/sessions/sessions.json", maintenance: { mode: "enforce", // enforce (standaard) | warn pruneAfter: "30d", maxEntries: 500, resetArchiveRetention: "30d", // duur of false maxDiskBytes: "500mb", // optioneel hard budget highWaterBytes: "400mb", // optioneel opschoondoel }, threadBindings: { enabled: true, idleHours: 24, // standaard automatisch opheffen van focus na inactiviteit in uren (`0` schakelt dit uit) maxAgeHours: 0, // standaard absolute maximumleeftijd in uren (`0` schakelt dit uit) }, sharing: { readOnly: true, suggest: true, drafts: true, }, mainKey: "main", // verouderd (runtime gebruikt altijd "main") sendPolicy: { rules: [{ action: "deny", match: { channel: "discord", chatType: "group" } }], default: "allow", }, },}Details van sessievelden
scope: basisstrategie voor het groeperen van sessies in groepschatcontexten.per-sender(standaard): elke afzender krijgt een geïsoleerde sessie binnen een kanaalcontext.global: alle deelnemers binnen een kanaalcontext delen één sessie (alleen gebruiken wanneer een gedeelde context de bedoeling is).dmScope: hoe privéberichten worden gegroepeerd.main: alle privéberichten delen de hoofdsessie.per-peer: isoleren op afzender-id over kanalen heen.per-channel-peer: isoleren per kanaal + afzender (aanbevolen voor inboxen met meerdere gebruikers).per-account-channel-peer: isoleren per account + kanaal + afzender (aanbevolen voor meerdere accounts).identityLinks: canonieke id's koppelen aan peers met een providervoorvoegsel om sessies tussen kanalen te delen. Dock-opdrachten zoals/dock_discordgebruiken dezelfde koppeling om de antwoordroute van de actieve sessie over te schakelen naar een andere gekoppelde kanaalpeer; zie Kanalen docken.reset: primair resetbeleid.noneschakelt automatische resets uit en is de standaard; Compaction begrenst in plaats daarvan de actieve context.dailyreset omatHourlokale tijd;idlereset naidleMinutes. Wanneer beide zijn geconfigureerd, geldt degene die het eerst verloopt./newen/resetblijven in elke modus beschikbaar. De actualiteit voor dagelijkse resets gebruiktsessionStartedAtvan de sessierij; de actualiteit voor resets wegens inactiviteit gebruiktlastInteractionAt. Schrijfacties van achtergrond-/systeemgebeurtenissen, zoals Heartbeat, Cron-wake-ups, exec-meldingen en Gateway-boekhouding, kunnenupdatedAtbijwerken, maar houden dagelijkse/inactieve sessies niet actueel.resetByType: overschrijvingen per type (direct,group,thread). Doctor migreert verouderdedm-vermeldingen naardirect; het schema weigertdm.resetByChannel: overschrijvingen van resets per kanaal, met provider-/kanaal-id als sleutel. Wanneer het kanaal van de sessie een overeenkomende vermelding heeft, heeft deze voor die sessie zonder meer voorrang opresetByType/reset. Alleen gebruiken wanneer één kanaal ander resetgedrag nodig heeft dan het beleid op typeniveau.mainKey: verouderd veld. De runtime gebruikt altijd"main"voor de hoofdbucket voor directe chats.sendPolicy: vergelijken opchannel,chatType(direct|group|channel, met verouderde aliasdm),keyPrefixofrawKeyPrefix. De eerste weigering geldt.maintenance: besturingselementen voor opschoning en bewaring van de sessieopslag.mode:enforcevoert opschoning uit en is de standaard;warngeeft alleen waarschuwingen.pruneAfter: leeftijdsgrens voor verouderde vermeldingen (standaard30d).maxEntries: maximaal aantal SQLite-sessievermeldingen (standaard500). Tijdens runtimeschrijfacties wordt opschoning in batches uitgevoerd met een kleine hoogwaterbuffer voor limieten van productieomvang;openclaw sessions cleanup --enforcepast de limiet onmiddellijk toe.- Kortlevende Gateway-probesessies voor modelruns gebruiken een vaste bewaartermijn van
24h, maar de opschoning is afhankelijk van druk: verouderde rijen voor strikte modelrunprobes worden alleen verwijderd wanneer onderhoud van sessievermeldingen of limietdruk wordt bereikt. Alleen strikte, expliciete probesleutels die overeenkomen metagent:*:explicit:model-run-<uuid>komen in aanmerking; normale directe, groeps-, thread-, Cron-, hook-, Heartbeat-, ACP- en subagentsessies nemen deze bewaartermijn van 24 uur niet over. Wanneer de opschoning van modelruns wordt uitgevoerd, gebeurt dit vóór de bredere opschoning van verouderde vermeldingen viapruneAfteren vóór de limiet vanmaxEntries. - Het verouderde
rotateByteswordt door het huidige schema geweigerd;openclaw doctor --fixverwijdert het uit oudere configuraties. resetArchiveRetention: op leeftijd gebaseerde bewaring voor archieven van geresette/verwijderde transcripten. Standaard blijven archieven bestaan totdat ze wegens het schijfbudget worden verwijderd; stel een duur in om verwijdering op basis van verstreken tijd in te schakelen, offalseom dit expliciet uit te schakelen.maxDiskBytes: optioneel schijfbudget voor de sessiemap. In de moduswarnworden waarschuwingen gelogd; in de modusenforceworden de oudste artefacten/sessies het eerst verwijderd.highWaterBytes: optioneel doel na opschoning op basis van het budget. Standaard80%vanmaxDiskBytes.threadBindings: algemene standaardwaarden voor sessiefuncties die aan threads zijn gebonden.enabled: hoofdschakelaar voor ondersteunde kanaal-threadkoppelingenidleHours: standaard automatisch verlies van focus na inactiviteit, in uren (0schakelt dit uit; providers kunnen dit overschrijven)maxAgeHours: standaard absolute maximumleeftijd in uren (0schakelt dit uit; providers kunnen dit overschrijven)spawnSessions: standaardpoort voor het aanmaken van threadgebonden werksessies vanuitsessions_spawnen door ACP gestarte threads. Standaardtruewanneer threadkoppelingen zijn ingeschakeld; providers/accounts kunnen dit overschrijven.defaultSpawnContext: standaard native subagentcontext voor threadgebonden starts ("fork"of"isolated"). Standaard"fork".sharing: bepaalt welke samenwerkingsmodi per sessie eigenaren enoperator.admin-verbindingen mogen selecteren. Elke vlag is standaardtrue; door een vlag opfalsein te stellen, wordt die keuze uit de Control UI verwijderd en wordt deze bij zichtbaarheid tijdens het aanmaken of doorsession.visibility.setgeweigerd. Nieuwe sessies beginnen alsshared, tenzij de Control UI er een als concept start.readOnly:read-onlytoestaan, waarbij niet-leden kunnen meekijken maar geen berichten kunnen verzenden, bijsturen, afbreken, goedkeuren of de sessiestatus wijzigen.suggest:suggesttoestaan. In deze fase dwingt dit hetzelfde toelatingsgedrag af alsread-only; de wachtrij voor suggesties is een latere functie.drafts:drafttoestaan, waarmee de sessie wordt verborgen in sessielijsten en gebeurtenisuitzendingen voor iedereen die geen beheerder of eigenaar is.
Wijzigingen in lidmaatschap en zichtbaarheid worden als systeemnotities in het sessietranscript geschreven. Deze besturingselementen coördineren operators die één agent delen; ze vormen geen beveiligingsgrens tussen tenants. Gebruik afzonderlijke Gateways of agents wanneer het werk isolatie vereist.
Berichten
{ messages: { responsePrefix: "🦞", // of "auto" ackReaction: "👀", ackReactionScope: "group-mentions", // group-mentions | group-all | direct | all | off | none queue: { mode: "steer", // steer (standaard) | followup | collect | interrupt debounceMs: 500, cap: 20, drop: "summarize", // old | new | summarize (standaard) byChannel: { whatsapp: "followup", telegram: "followup", }, }, inbound: { debounceMs: 2000, // 0 schakelt dit uit byChannel: { whatsapp: 5000, slack: 1500, }, }, },}Antwoordvoorvoegsel
Overschrijvingen per kanaal/account: channels.<channel>.responsePrefix, channels.<channel>.accounts.<id>.responsePrefix.
Resolutie (de meest specifieke geldt): account → kanaal → algemeen. "" schakelt dit uit en stopt de cascade. "auto" leidt [{identity.name}] af.
Sjabloonvariabelen:
| Variabele | Beschrijving | Voorbeeld |
|---|---|---|
{model} |
Korte modelnaam | claude-opus-4-6 |
{modelFull} |
Volledige model-id | anthropic/claude-opus-4-6 |
{provider} |
Providernaam | anthropic |
{thinkingLevel} |
Huidig denkniveau | high, low, off |
{identity.name} |
Naam van agentidentiteit | (hetzelfde als "auto") |
Variabelen zijn niet hoofdlettergevoelig. {think} is een alias voor {thinkingLevel}.
Bevestigingsreactie
- Standaard de
identity.emojivan de actieve agent, anders"👀". Stel""in om dit uit te schakelen. - Overschrijvingen per kanaal:
channels.<channel>.ackReaction,channels.<channel>.accounts.<id>.ackReaction. - Resolutievolgorde: account → kanaal →
messages.ackReaction→ terugval op identiteit. - Bereik:
group-mentions(standaard),group-all,direct,allofoff/none(schakelt bevestigingsreacties volledig uit). messages.statusReactions.enabled: schakelt reacties voor levenscyclusstatussen in op Slack, Discord, Signal, Telegram en WhatsApp. Op Discord blijven statusreacties ingeschakeld wanneer bevestigingsreacties actief zijn als dit niet is ingesteld. Op Slack, Signal, Telegram en WhatsApp moet dit expliciet optrueworden ingesteld om reacties voor levenscyclusstatussen in te schakelen. Slack gebruikt standaard de native assistentstatus voor threads en roterende laadberichten om voortgang aan te geven, terwijl de geconfigureerde bevestigingsreactie statisch blijft.
Wachtrij
mode: wachtrijstrategie voor inkomende berichten die binnenkomen terwijl een sessierun actief is. Standaard:"steer".steer: de nieuwe prompt in de actieve run invoegen.followup: de nieuwe prompt uitvoeren nadat de actieve run is voltooid.collect: compatibele berichten bundelen en later samen uitvoeren.interrupt: de actieve run afbreken voordat de nieuwste prompt wordt gestart.
debounceMs: vertraging voordat een bericht uit de wachtrij of een bijgestuurd bericht wordt verzonden. Standaard:500.cap: maximaal aantal berichten in de wachtrij voordat het verwijderingsbeleid wordt toegepast. Standaard:20.drop: strategie wanneer de limiet wordt overschreden."summarize"(standaard) verwijdert de oudste vermeldingen maar bewaart compacte samenvattingen;"old"verwijdert de oudste zonder samenvattingen;"new"weigert het nieuwste item.byChannel: overschrijvingen per kanaal voormode, met provider-id als sleutel.debounceMsByChannel: overschrijvingen per kanaal voordebounceMs, met provider-id als sleutel.
Debounce voor inkomende berichten
Bundelt snel opeenvolgende berichten met alleen tekst van dezelfde afzender tot één agentbeurt. Media/bijlagen worden onmiddellijk verwerkt. Besturingsopdrachten omzeilen debouncing. Standaard debounceMs: 2000.
Overige berichtsleutels
channels.whatsapp.responsePrefix: voorvoegsel voor uitgaande WhatsApp-antwoorden. Doctor verplaatst de verouderde inkomende waardemessagePrefixalleen hierheen wanneer deze canonieke waarde niet is ingesteld.messages.visibleReplies: bepaalt zichtbare bronantwoorden in directe, groeps- en kanaalgesprekken ("message_tool"vereistmessage(action=send)voor zichtbare uitvoer;"automatic"plaatst normale antwoorden zoals voorheen).messages.usageTemplate/messages.responseUsage: aangepast/usage-voettekstsjabloon en standaard gebruiksmodus per antwoord (off | tokens | full, plus de verouderde aliasonvoortokens).messages.groupChat.mentionPatterns/historyLimit: triggers voor vermeldingen in groepsberichten en de grootte van het geschiedenisvenster.messages.suppressToolErrors: wanneertrue, worden waarschuwingen voor⚠️-toolfouten die aan de gebruiker worden getoond onderdrukt (de agent ziet fouten nog steeds in de context en kan het opnieuw proberen). Standaard:false.
TTS (tekst-naar-spraak)
{ tts: { auto: "off", // off (standaard) | altijd | inkomend | getagd mode: "final", // definitief | alles provider: "elevenlabs", summaryModel: "openai/gpt-5.4-mini", modelOverrides: { enabled: true }, maxTextLength: 4000, timeoutMs: 30000, providers: { elevenlabs: { apiKey: "example-elevenlabs-api-key", baseUrl: "https://api.elevenlabs.io", speakerVoiceId: "voice_id", modelId: "eleven_multilingual_v2", seed: 42, applyTextNormalization: "auto", languageCode: "en", voiceSettings: { stability: 0.5, similarityBoost: 0.75, style: 0.0, useSpeakerBoost: true, speed: 1.0, }, }, microsoft: { speakerVoice: "en-US-MichelleNeural", lang: "en-US", outputFormat: "audio-24khz-48kbitrate-mono-mp3", }, openai: { apiKey: "example-openai-api-key", baseUrl: "https://api.openai.com/v1", model: "gpt-4o-mini-tts", speakerVoice: "coral", }, }, },}Het globale voorkeurenpad is de machinestatus (standaard
~/.openclaw/settings/tts.json; overschrijf met OPENCLAW_TTS_PREFS). Geavanceerde
multi-agentconfiguraties kunnen agents.entries.<id>.tts.prefsPath instellen voor afzonderlijke
voorkeursopslagen per agent.
autobepaalt de standaardmodus voor automatische TTS:off,always,inboundoftagged./tts on|offkan lokale voorkeuren overschrijven en/tts statustoont de effectieve status.summaryModeloverschrijftagents.defaults.model.primaryvoor automatische samenvattingen.modelOverridesis standaard ingeschakeld (enabled !== false);modelOverrides.allowProvidermoet expliciet worden ingeschakeld.- API-sleutels vallen terug op
ELEVENLABS_API_KEY/XI_API_KEYenOPENAI_API_KEY. - Gebundelde spraakproviders zijn eigendom van plugins. Als
plugins.allowis ingesteld, neem dan elke TTS-providerplugin op die je wilt gebruiken, bijvoorbeeldmicrosoftvoor Edge TTS. De verouderde provider-idedgewordt geaccepteerd als alias voormicrosoft. providers.openai.baseUrloverschrijft het OpenAI TTS-eindpunt. De resolutievolgorde is configuratie, vervolgensOPENAI_TTS_BASE_URLen daarnahttps://api.openai.com/v1.- Wanneer
providers.openai.baseUrlnaar een niet-OpenAI-eindpunt verwijst, behandelt OpenClaw dit als een OpenAI-compatibele TTS-server en versoepelt het de validatie van model en stem.
Praten
Standaardwaarden voor de praatmodus (macOS/iOS/Android en de Control UI in de browser).
{ talk: { provider: "elevenlabs", providers: { elevenlabs: { speakerVoiceId: "elevenlabs_voice_id", voiceAliases: { Clawd: "EXAVITQu4vr4xnSDxMaL", Roger: "CwhRBWXzGAHq8TQ4Fs17", }, modelId: "eleven_multilingual_v2", outputFormat: "mp3_44100_128", apiKey: "elevenlabs_api_key", }, mlx: { modelId: "mlx-community/Soprano-80M-bf16", }, system: {}, }, consultThinkingLevel: "low", consultFastMode: true, speechLocale: "ru-RU", silenceTimeoutMs: 1500, interruptOnSpeech: true, realtime: { provider: "openai", providers: { openai: { model: "gpt-realtime-2.1", speakerVoice: "cedar", }, }, instructions: "Spreek hartelijk en houd antwoorden kort.", mode: "realtime", // realtime | spraak-naar-tekst-naar-spraak | transcriptie transport: "webrtc", // webrtc | provider-websocket | gateway-relay | beheerde-ruimte vadThreshold: 0.5, silenceDurationMs: 500, prefixPaddingMs: 300, reasoningEffort: "medium", brain: "agent-consult", // agent-consult | directe-tools | geen }, },}talk.providermoet overeenkomen met een sleutel intalk.providerswanneer meerdere praatproviders zijn geconfigureerd.- Verouderde platte praatsleutels (
talk.voiceId,talk.voiceAliases,talk.modelId,talk.outputFormat,talk.apiKey) dienen alleen voor compatibiliteit. Voeropenclaw doctor --fixuit om de opgeslagen configuratie te herschrijven naartalk.providers.<provider>. - Stem-id's vallen terug op
ELEVENLABS_VOICE_IDofSAG_VOICE_ID(gedrag van de macOS-praatclient). providers.*.apiKeyaccepteert tekenreeksen met platte tekst of SecretRef-objecten.- Terugvallen op
ELEVENLABS_API_KEYis alleen van toepassing wanneer er geen API-sleutel voor Praten is geconfigureerd. providers.*.voiceAliasesmaakt het mogelijk dat praatinstructies gebruiksvriendelijke namen gebruiken.providers.mlx.modelIdselecteert de Hugging Face-repository die door de lokale MLX-helper van macOS wordt gebruikt. Indien weggelaten, gebruikt macOSmlx-community/Soprano-80M-bf16.- MLX-weergave op macOS verloopt via de gebundelde helper
openclaw-mlx-ttsals die aanwezig is, of via een uitvoerbaar bestand opPATH;OPENCLAW_MLX_TTS_BINoverschrijft het helperpad voor ontwikkeling. consultThinkingLevelbepaalt het denkniveau voor de volledige OpenClaw-agentuitvoering achter realtimeopenclaw_agent_consult-aanroepen van Praten in de Control UI. Laat dit oningesteld om normaal sessie-/modelgedrag te behouden.consultFastModestelt een eenmalige overschrijving van de snelle modus in voor realtime raadplegingen van Praten in de Control UI, zonder de normale instelling voor snelle modus van de sessie te wijzigen.speechLocalestelt de BCP 47-locale-id in die door Android, iOS en macOS wordt gebruikt voor spraakherkenning in Praten. Android gebruikt ook de taalcomponent ervan als leidraad voor realtime transcriptie van invoer. Laat dit oningesteld om de standaardwaarde van het apparaat te gebruiken.silenceTimeoutMsbepaalt hoelang de praatmodus na stilte van de gebruiker wacht voordat het transcript wordt verzonden. Ongedefinieerd behoudt het standaardpauzevenster van het platform (700 ms on macOS and Android, 900 ms on iOS).realtime.instructionsvoegt systeeminstructies voor de provider toe aan de ingebouwde realtimeprompt van OpenClaw, zodat de stemstijl kan worden geconfigureerd zonder de standaardrichtlijnen vanopenclaw_agent_consultte verliezen.realtime.vadThresholdstelt de drempelwaarde voor spraakactiviteit van de provider in van0(meest gevoelig) tot1(minst gevoelig). Ongedefinieerd behoudt de standaardwaarde van de provider.realtime.silenceDurationMsstelt het positieve gehele aantal voor het stiltevenster in voordat de provider een realtime gebruikersbeurt vastlegt. Ongedefinieerd behoudt de standaardwaarde van de provider.realtime.prefixPaddingMsstelt het niet-negatieve gehele aantal aan audio in dat wordt bewaard voordat gedetecteerde spraak begint. Ongedefinieerd behoudt de standaardwaarde van de provider.realtime.reasoningEffortstelt het providerspecifieke redeneerniveau voor realtime sessies in. Ongedefinieerd behoudt de standaardwaarde van de provider.realtime.consultRouting:"provider-direct"(standaard) behoudt rechtstreekse antwoorden van de provider wanneer de realtimeprovider een definitief gebruikerstranscript produceert zonderopenclaw_agent_consult."force-agent-consult"routeert het voltooide verzoek in plaats daarvan via OpenClaw.
Gerelateerd
- Configuratiereferentie — alle overige configuratiesleutels
- Configuratie — algemene taken en snelle configuratie
- Configuratievoorbeelden