Przejdź do głównej treści

Documentation Index

Fetch the complete documentation index at: https://docs2.openclaw.ai/llms.txt

Use this file to discover all available pages before exploring further.

Klucze konfiguracji o zakresie agenta pod agents.*, multiAgent.*, session.*, messages.* i talk.*. Klucze dotyczące kanałów, narzędzi, środowiska uruchomieniowego Gateway i innych kluczy najwyższego poziomu znajdziesz w referencji konfiguracji.

Domyślne ustawienia agenta

agents.defaults.workspace

Domyślnie: ~/.openclaw/workspace.
{
  agents: { defaults: { workspace: "~/.openclaw/workspace" } },
}

agents.defaults.repoRoot

Opcjonalny katalog główny repozytorium pokazywany w wierszu Runtime promptu systemowego. Jeśli nie jest ustawiony, OpenClaw wykrywa go automatycznie, przechodząc w górę od obszaru roboczego.
{
  agents: { defaults: { repoRoot: "~/Projects/openclaw" } },
}

agents.defaults.skills

Opcjonalna domyślna lista dozwolonych Skills dla agentów, które nie ustawiają agents.list[].skills.
{
  agents: {
    defaults: { skills: ["github", "weather"] },
    list: [
      { id: "writer" }, // inherits github, weather
      { id: "docs", skills: ["docs-search"] }, // replaces defaults
      { id: "locked-down", skills: [] }, // no skills
    ],
  },
}
  • Pomiń agents.defaults.skills, aby domyślnie zezwolić na nieograniczone Skills.
  • Pomiń agents.list[].skills, aby dziedziczyć wartości domyślne.
  • Ustaw agents.list[].skills: [], aby nie zezwalać na żadne Skills.
  • Niepusta lista agents.list[].skills jest ostatecznym zestawem dla tego agenta; nie jest scalana z wartościami domyślnymi.

agents.defaults.skipBootstrap

Wyłącza automatyczne tworzenie plików rozruchowych obszaru roboczego (AGENTS.md, SOUL.md, TOOLS.md, IDENTITY.md, USER.md, HEARTBEAT.md, BOOTSTRAP.md).
{
  agents: { defaults: { skipBootstrap: true } },
}

agents.defaults.skipOptionalBootstrapFiles

Pomija tworzenie wybranych opcjonalnych plików obszaru roboczego, nadal zapisując wymagane pliki rozruchowe. Prawidłowe wartości: SOUL.md, USER.md, HEARTBEAT.md i IDENTITY.md.
{
  agents: {
    defaults: {
      skipOptionalBootstrapFiles: ["SOUL.md", "USER.md"],
    },
  },
}

agents.defaults.contextInjection

Kontroluje, kiedy pliki rozruchowe obszaru roboczego są wstrzykiwane do promptu systemowego. Domyślnie: "always".
  • "continuation-skip": bezpieczne tury kontynuacji (po ukończonej odpowiedzi asystenta) pomijają ponowne wstrzykiwanie rozruchu obszaru roboczego, zmniejszając rozmiar promptu. Uruchomienia Heartbeat i ponowne próby po Compaction nadal odbudowują kontekst.
  • "never": wyłącza rozruch obszaru roboczego i wstrzykiwanie plików kontekstu w każdej turze. Używaj tego tylko dla agentów, które w pełni kontrolują cykl życia swojego promptu (niestandardowe silniki kontekstu, natywne środowiska uruchomieniowe budujące własny kontekst lub wyspecjalizowane przepływy pracy bez rozruchu). Tury Heartbeat i odzyskiwania po Compaction również pomijają wstrzykiwanie.
{
  agents: { defaults: { contextInjection: "continuation-skip" } },
}

agents.defaults.bootstrapMaxChars

Maksymalna liczba znaków na plik rozruchowy obszaru roboczego przed obcięciem. Domyślnie: 12000.
{
  agents: { defaults: { bootstrapMaxChars: 12000 } },
}

agents.defaults.bootstrapTotalMaxChars

Maksymalna łączna liczba znaków wstrzykiwanych ze wszystkich plików rozruchowych obszaru roboczego. Domyślnie: 60000.
{
  agents: { defaults: { bootstrapTotalMaxChars: 60000 } },
}

agents.defaults.bootstrapPromptTruncationWarning

Kontroluje widoczne dla agenta powiadomienie w prompcie systemowym, gdy kontekst rozruchowy zostanie obcięty. Domyślnie: "once".
  • "off": nigdy nie wstrzykuj tekstu powiadomienia o obcięciu do promptu systemowego.
  • "once": wstrzyknij zwięzłe powiadomienie raz dla każdej unikalnej sygnatury obcięcia (zalecane).
  • "always": wstrzyknij zwięzłe powiadomienie przy każdym uruchomieniu, gdy istnieje obcięcie.
Szczegółowe surowe/wstrzyknięte liczniki i pola dostrajania konfiguracji pozostają w diagnostyce, takiej jak raporty stanu/kontekstu i logi; rutynowy kontekst użytkownika/środowiska uruchomieniowego WebChat otrzymuje tylko zwięzłe powiadomienie odzyskiwania.
{
  agents: { defaults: { bootstrapPromptTruncationWarning: "once" } }, // off | once | always
}

Mapa własności budżetu kontekstu

OpenClaw ma wiele wysokowolumenowych budżetów promptu/kontekstu i są one celowo rozdzielone według podsystemu, zamiast przepływać przez jedno ogólne pokrętło.
  • agents.defaults.bootstrapMaxChars / agents.defaults.bootstrapTotalMaxChars: standardowe wstrzykiwanie rozruchu obszaru roboczego.
  • agents.defaults.startupContext.*: jednorazowy prelude uruchomienia modelu po resecie/starcie, w tym ostatnie dzienne pliki memory/*.md. Same polecenia czatu /new i /reset są potwierdzane bez wywoływania modelu.
  • skills.limits.*: kompaktowa lista Skills wstrzykiwana do promptu systemowego.
  • agents.defaults.contextLimits.*: ograniczone fragmenty środowiska uruchomieniowego i wstrzykiwane bloki należące do środowiska uruchomieniowego.
  • memory.qmd.limits.*: rozmiarowanie indeksowanego fragmentu wyszukiwania pamięci i wstrzyknięcia.
Użyj pasującego nadpisania dla konkretnego agenta tylko wtedy, gdy jeden agent potrzebuje innego budżetu:
  • agents.list[].skillsLimits.maxSkillsPromptChars
  • agents.list[].contextLimits.*

agents.defaults.startupContext

Kontroluje prelude pierwszej tury uruchomienia wstrzykiwany przy uruchomieniach modelu po resecie/starcie. Same polecenia czatu /new i /reset potwierdzają reset bez wywoływania modelu, więc nie ładują tego prelude.
{
  agents: {
    defaults: {
      startupContext: {
        enabled: true,
        applyOn: ["new", "reset"],
        dailyMemoryDays: 2,
        maxFileBytes: 16384,
        maxFileChars: 1200,
        maxTotalChars: 2800,
      },
    },
  },
}

agents.defaults.contextLimits

Wspólne wartości domyślne dla ograniczonych powierzchni kontekstu środowiska uruchomieniowego.
{
  agents: {
    defaults: {
      contextLimits: {
        memoryGetMaxChars: 12000,
        memoryGetDefaultLines: 120,
        toolResultMaxChars: 16000,
        postCompactionMaxChars: 1800,
      },
    },
  },
}
  • memoryGetMaxChars: domyślny limit fragmentu memory_get przed dodaniem metadanych obcięcia i powiadomienia o kontynuacji.
  • memoryGetDefaultLines: domyślne okno linii memory_get, gdy lines jest pominięte.
  • toolResultMaxChars: limit wyników narzędzi na żywo używany dla utrwalanych wyników i odzyskiwania po przepełnieniu.
  • postCompactionMaxChars: limit fragmentu AGENTS.md używany podczas wstrzykiwania odświeżenia po Compaction.

agents.list[].contextLimits

Nadpisanie dla konkretnego agenta dla wspólnych pokręteł contextLimits. Pominięte pola dziedziczą z agents.defaults.contextLimits.
{
  agents: {
    defaults: {
      contextLimits: {
        memoryGetMaxChars: 12000,
        toolResultMaxChars: 16000,
      },
    },
    list: [
      {
        id: "tiny-local",
        contextLimits: {
          memoryGetMaxChars: 6000,
          toolResultMaxChars: 8000,
        },
      },
    ],
  },
}

skills.limits.maxSkillsPromptChars

Globalny limit dla kompaktowej listy Skills wstrzykiwanej do promptu systemowego. Nie wpływa to na odczytywanie plików SKILL.md na żądanie.
{
  skills: {
    limits: {
      maxSkillsPromptChars: 18000,
    },
  },
}

agents.list[].skillsLimits.maxSkillsPromptChars

Nadpisanie dla konkretnego agenta dla budżetu promptu Skills.
{
  agents: {
    list: [
      {
        id: "tiny-local",
        skillsLimits: {
          maxSkillsPromptChars: 6000,
        },
      },
    ],
  },
}

agents.defaults.imageMaxDimensionPx

Maksymalny rozmiar w pikselach najdłuższego boku obrazu w blokach obrazów transkryptu/narzędzia przed wywołaniami dostawcy. Domyślnie: 1200. Niższe wartości zwykle zmniejszają użycie tokenów wizyjnych i rozmiar ładunku żądania w uruchomieniach z dużą liczbą zrzutów ekranu. Wyższe wartości zachowują więcej szczegółów wizualnych.
{
  agents: { defaults: { imageMaxDimensionPx: 1200 } },
}

agents.defaults.userTimezone

Strefa czasowa dla kontekstu promptu systemowego (nie znaczników czasu wiadomości). W razie braku ustawienia używa strefy czasowej hosta.
{
  agents: { defaults: { userTimezone: "America/Chicago" } },
}

agents.defaults.timeFormat

Format czasu w prompcie systemowym. Domyślnie: auto (preferencja systemu operacyjnego).
{
  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"],
      },
      imageModel: {
        primary: "openrouter/qwen/qwen-2.5-vl-72b-instruct:free",
        fallbacks: ["openrouter/google/gemini-2.0-flash-vision:free"],
      },
      imageGenerationModel: {
        primary: "openai/gpt-image-2",
        fallbacks: ["google/gemini-3.1-flash-image-preview"],
      },
      videoGenerationModel: {
        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" }, // global default provider params
      pdfMaxBytesMb: 10,
      pdfMaxPages: 20,
      thinkingDefault: "low",
      verboseDefault: "off",
      toolProgressDetail: "explain",
      reasoningDefault: "off",
      elevatedDefault: "on",
      timeoutSeconds: 600,
      mediaMaxMb: 5,
      contextTokens: 200000,
      maxConcurrent: 3,
    },
  },
}
  • model: akceptuje ciąg znaków ("provider/model") albo obiekt ({ primary, fallbacks }).
    • Forma ciągu znaków ustawia tylko model główny.
    • Forma obiektu ustawia model główny oraz uporządkowane modele przełączania awaryjnego.
  • imageModel: akceptuje ciąg znaków ("provider/model") albo obiekt ({ primary, fallbacks }).
    • Używane przez ścieżkę narzędzia image jako konfiguracja modelu wizyjnego.
    • Używane także jako trasa rezerwowa, gdy wybrany/domyślny model nie może przyjmować wejścia obrazu.
    • Preferuj jawne referencje provider/model. Same identyfikatory są akceptowane dla zgodności; jeśli sam identyfikator jednoznacznie pasuje do skonfigurowanego wpisu obsługującego obrazy w models.providers.*.models, OpenClaw kwalifikuje go do tego dostawcy. Niejednoznaczne skonfigurowane dopasowania wymagają jawnego prefiksu dostawcy.
  • imageGenerationModel: akceptuje ciąg znaków ("provider/model") albo obiekt ({ primary, fallbacks }).
    • Używane przez współdzieloną funkcję generowania obrazów i każdą przyszłą powierzchnię narzędzia/pluginu, która generuje obrazy.
    • Typowe wartości: google/gemini-3.1-flash-image-preview dla natywnego generowania obrazów Gemini, fal/fal-ai/flux/dev dla fal, openai/gpt-image-2 dla OpenAI Images albo openai/gpt-image-1.5 dla wyjścia OpenAI PNG/WebP z przezroczystym tłem.
    • Jeśli wybierzesz dostawcę/model bezpośrednio, skonfiguruj także pasujące uwierzytelnianie dostawcy (na przykład GEMINI_API_KEY albo GOOGLE_API_KEY dla google/*, OPENAI_API_KEY albo OpenAI Codex OAuth dla openai/gpt-image-2 / openai/gpt-image-1.5, FAL_KEY dla fal/*).
    • Jeśli pominięto, image_generate nadal może wywnioskować domyślnego dostawcę wspieranego uwierzytelnieniem. Najpierw próbuje bieżącego domyślnego dostawcy, a potem pozostałych zarejestrowanych dostawców generowania obrazów w kolejności identyfikatorów dostawców.
  • musicGenerationModel: akceptuje ciąg znaków ("provider/model") albo obiekt ({ primary, fallbacks }).
    • Używane przez współdzieloną funkcję generowania muzyki i wbudowane narzędzie music_generate.
    • Typowe wartości: google/lyria-3-clip-preview, google/lyria-3-pro-preview albo minimax/music-2.6.
    • Jeśli pominięto, music_generate nadal może wywnioskować domyślnego dostawcę wspieranego uwierzytelnieniem. Najpierw próbuje bieżącego domyślnego dostawcy, a potem pozostałych zarejestrowanych dostawców generowania muzyki w kolejności identyfikatorów dostawców.
    • Jeśli wybierzesz dostawcę/model bezpośrednio, skonfiguruj także pasujące uwierzytelnianie/klucz API dostawcy.
  • videoGenerationModel: akceptuje ciąg znaków ("provider/model") albo obiekt ({ primary, fallbacks }).
    • Używane przez współdzieloną funkcję generowania wideo i wbudowane narzędzie video_generate.
    • Typowe wartości: qwen/wan2.6-t2v, qwen/wan2.6-i2v, qwen/wan2.6-r2v, qwen/wan2.6-r2v-flash albo qwen/wan2.7-r2v.
    • Jeśli pominięto, video_generate nadal może wywnioskować domyślnego dostawcę wspieranego uwierzytelnieniem. Najpierw próbuje bieżącego domyślnego dostawcy, a potem pozostałych zarejestrowanych dostawców generowania wideo w kolejności identyfikatorów dostawców.
    • Jeśli wybierzesz dostawcę/model bezpośrednio, skonfiguruj także pasujące uwierzytelnianie/klucz API dostawcy.
    • Dołączony dostawca generowania wideo Qwen obsługuje do 1 wyjściowego wideo, 1 obrazu wejściowego, 4 wejściowych wideo, czas trwania 10 sekund oraz opcje na poziomie dostawcy size, aspectRatio, resolution, audio i watermark.
  • pdfModel: akceptuje ciąg znaków ("provider/model") albo obiekt ({ primary, fallbacks }).
    • Używane przez narzędzie pdf do trasowania modeli.
    • Jeśli pominięto, narzędzie PDF przechodzi awaryjnie do imageModel, a następnie do rozwiązanego modelu sesji/domyślnego.
  • pdfMaxBytesMb: domyślny limit rozmiaru PDF dla narzędzia pdf, gdy maxBytesMb nie zostanie przekazane w czasie wywołania.
  • pdfMaxPages: domyślna maksymalna liczba stron uwzględnianych przez tryb awaryjnego wyodrębniania w narzędziu pdf.
  • verboseDefault: domyślny poziom szczegółowości dla agentów. Wartości: "off", "on", "full". Domyślnie: "off".
  • toolProgressDetail: tryb szczegółów dla podsumowań narzędzi /verbose i szkicowych linii postępu narzędzi. Wartości: "explain" (domyślne, kompaktowe etykiety czytelne dla człowieka) albo "raw" (dołącz surowe polecenie/szczegóły, gdy są dostępne). agents.list[].toolProgressDetail dla danego agenta zastępuje tę wartość domyślną.
  • reasoningDefault: domyślna widoczność rozumowania dla agentów. Wartości: "off", "on", "stream". agents.list[].reasoningDefault dla danego agenta zastępuje tę wartość domyślną. Skonfigurowane domyślne wartości rozumowania są stosowane tylko dla właścicieli, autoryzowanych nadawców albo kontekstów Gateway operator-admin, gdy nie ustawiono zastąpienia rozumowania dla wiadomości lub sesji.
  • elevatedDefault: domyślny poziom wyniku podniesionego dla agentów. Wartości: "off", "on", "ask", "full". Domyślnie: "on".
  • model.primary: format provider/model (np. openai/gpt-5.5 dla dostępu przez klucz API OpenAI albo Codex OAuth). Jeśli pominiesz dostawcę, OpenClaw najpierw próbuje aliasu, potem unikalnego dopasowania skonfigurowanego dostawcy dla dokładnie tego identyfikatora modelu, a dopiero potem wraca do skonfigurowanego domyślnego dostawcy (przestarzałe zachowanie zgodności, więc preferuj jawne provider/model). Jeśli ten dostawca nie udostępnia już skonfigurowanego domyślnego modelu, OpenClaw przechodzi awaryjnie do pierwszego skonfigurowanego dostawcy/modelu zamiast ujawniać nieaktualną wartość domyślną usuniętego dostawcy.
  • models: skonfigurowany katalog modeli i lista dozwolonych dla /model. Każdy wpis może zawierać alias (skrót) i params (specyficzne dla dostawcy, na przykład temperature, maxTokens, cacheRetention, context1m, responsesServerCompaction, responsesCompactThreshold, chat_template_kwargs, extra_body/extraBody).
    • Używaj wpisów provider/*, takich jak "openai-codex/*": {} albo "vllm/*": {}, aby pokazać wszystkie wykryte modele dla wybranych dostawców bez ręcznego wypisywania każdego identyfikatora modelu.
    • Bezpieczne edycje: użyj openclaw config set agents.defaults.models '<json>' --strict-json --merge, aby dodać wpisy. config set odmawia zastąpień, które usunęłyby istniejące wpisy listy dozwolonych, chyba że przekażesz --replace.
    • Przepływy konfiguracji/onboardingu w zakresie dostawcy scalają wybrane modele dostawcy z tą mapą i zachowują już skonfigurowanych, niepowiązanych dostawców.
    • Dla bezpośrednich modeli OpenAI Responses Compaction po stronie serwera jest włączana automatycznie. Użyj params.responsesServerCompaction: false, aby przestać wstrzykiwać context_management, albo params.responsesCompactThreshold, aby zastąpić próg. Zobacz Compaction po stronie serwera OpenAI.
  • params: globalne domyślne parametry dostawcy stosowane do wszystkich modeli. Ustawiane w agents.defaults.params (np. { cacheRetention: "long" }).
  • Pierwszeństwo scalania params (konfiguracja): agents.defaults.params (globalna baza) jest zastępowane przez agents.defaults.models["provider/model"].params (dla modelu), a następnie agents.list[].params (pasujący identyfikator agenta) zastępuje według klucza. Szczegóły znajdziesz w Prompt Caching.
  • params.extra_body/params.extraBody: zaawansowany przekazywany JSON scalany z treściami żądań api: "openai-completions" dla proxy zgodnych z OpenAI. Jeśli koliduje z wygenerowanymi kluczami żądania, dodatkowa treść wygrywa; nienatywne trasy completions nadal później usuwają store specyficzne tylko dla OpenAI.
  • params.chat_template_kwargs: argumenty szablonu czatu zgodne z vLLM/OpenAI scalane z treściami żądań najwyższego poziomu api: "openai-completions". Dla vllm/nemotron-3-* z wyłączonym myśleniem dołączony plugin vLLM automatycznie wysyła enable_thinking: false i force_nonempty_content: true; jawne chat_template_kwargs zastępują wygenerowane wartości domyślne, a extra_body.chat_template_kwargs nadal ma ostateczny priorytet. Dla kontrolek myślenia Qwen ustaw params.qwenThinkingFormat na "chat-template" albo "top-level" w tym wpisie modelu.
  • compat.thinkingFormat: styl ładunku myślenia zgodny z OpenAI. Użyj "qwen" dla stylu Qwen z enable_thinking najwyższego poziomu albo "qwen-chat-template" dla chat_template_kwargs.enable_thinking na backendach z rodziny Qwen, które obsługują kwargs szablonu czatu na poziomie żądania, takich jak vLLM. OpenClaw mapuje wyłączone myślenie na false, a włączone myślenie na true.
  • compat.supportedReasoningEfforts: lista poziomów wysiłku rozumowania zgodna z OpenAI dla danego modelu. Uwzględnij "xhigh" dla niestandardowych punktów końcowych, które naprawdę go akceptują; OpenClaw udostępnia wtedy /think xhigh w menu poleceń, wierszach sesji Gateway, walidacji poprawek sesji, walidacji CLI agenta i walidacji llm-task dla tego skonfigurowanego dostawcy/modelu. Użyj compat.reasoningEffortMap, gdy backend wymaga wartości specyficznej dla dostawcy dla kanonicznego poziomu.
  • params.preserveThinking: opcjonalna zgoda tylko dla Z.AI na zachowane myślenie. Gdy włączone i myślenie jest włączone, OpenClaw wysyła thinking.clear_thinking: false i odtwarza wcześniejsze reasoning_content; zobacz myślenie i zachowane myślenie Z.AI.
  • localService: opcjonalny menedżer procesów na poziomie dostawcy dla lokalnych/samodzielnie hostowanych serwerów modeli. Gdy wybrany model należy do tego dostawcy, OpenClaw sprawdza healthUrl (albo baseUrl + "/models"), uruchamia command z args, jeśli punkt końcowy jest niedostępny, czeka do readyTimeoutMs, a następnie wysyła żądanie modelu. command musi być ścieżką bezwzględną. idleStopMs: 0 utrzymuje proces przy życiu do zakończenia OpenClaw; wartość dodatnia zatrzymuje proces uruchomiony przez OpenClaw po tylu milisekundach bezczynności. Zobacz Lokalne usługi modeli.
  • Polityka runtime należy do dostawców lub modeli, nie do agents.defaults. Użyj models.providers.<provider>.agentRuntime dla reguł obejmujących całego dostawcę albo agents.defaults.models["provider/model"].agentRuntime / agents.list[].models["provider/model"].agentRuntime dla reguł specyficznych dla modelu. Modele agentów OpenAI u oficjalnego dostawcy OpenAI domyślnie wybierają Codex.
  • Programy zapisujące konfigurację, które modyfikują te pola (na przykład /models set, /models set-image i polecenia dodawania/usuwania awaryjnych modeli), zapisują kanoniczną formę obiektu i w miarę możliwości zachowują istniejące listy awaryjne.
  • maxConcurrent: maksymalna liczba równoległych uruchomień agentów między sesjami (każda sesja nadal jest serializowana). Domyślnie: 4.

Polityka runtime

{
  models: {
    providers: {
      openai: {
        agentRuntime: { id: "codex" },
      },
    },
  },
  agents: {
    defaults: {
      model: "openai/gpt-5.5",
      models: {
        "anthropic/claude-opus-4-7": {
          agentRuntime: { id: "claude-cli" },
        },
      },
    },
  },
}
  • id: "auto", "pi", zarejestrowany identyfikator harnessu pluginu albo obsługiwany alias backendu CLI. Dołączony plugin Codex rejestruje codex; dołączony plugin Anthropic udostępnia backend CLI claude-cli.
  • id: "auto" pozwala zarejestrowanym harnessom pluginów przejmować obsługiwane tury i używa PI, gdy żaden harness nie pasuje. Jawny runtime pluginu, taki jak id: "codex", wymaga tego harnessu i kończy się zamkniętą porażką, jeśli jest niedostępny albo zawiedzie.
  • Klucze runtime całego agenta są przestarzałe. agents.defaults.agentRuntime, agents.list[].agentRuntime, przypięcia runtime sesji i OPENCLAW_AGENT_RUNTIME są ignorowane przez wybór runtime. Uruchom openclaw doctor --fix, aby usunąć nieaktualne wartości.
  • Modele agentów OpenAI domyślnie używają harnessu Codex; agentRuntime.id: "codex" dostawcy/modelu pozostaje poprawne, gdy chcesz ustawić to jawnie.
  • Dla wdrożeń Claude CLI preferuj model: "anthropic/claude-opus-4-7" plus agentRuntime.id: "claude-cli" w zakresie modelu. Starsze referencje modeli claude-cli/claude-opus-4-7 nadal działają dla zgodności, ale nowa konfiguracja powinna utrzymywać kanoniczny wybór dostawcy/modelu i umieszczać backend wykonawczy w polityce runtime dostawcy/modelu.
  • To kontroluje wyłącznie wykonywanie tekstowych tur agenta. Generowanie mediów, wizja, PDF, muzyka, wideo i TTS nadal używają swoich ustawień dostawcy/modelu.
Wbudowane skróty aliasów (mają zastosowanie tylko wtedy, gdy model jest w agents.defaults.models):
AliasModel
opusanthropic/claude-opus-4-6
sonnetanthropic/claude-sonnet-4-6
gptopenai/gpt-5.5
gpt-miniopenai/gpt-5.4-mini
gpt-nanoopenai/gpt-5.4-nano
geminigoogle/gemini-3.1-pro-preview
gemini-flashgoogle/gemini-3-flash-preview
gemini-flash-litegoogle/gemini-3.1-flash-lite-preview
Skonfigurowane aliasy zawsze mają pierwszeństwo przed wartościami domyślnymi. Modele Z.AI GLM-4.x automatycznie włączają tryb rozumowania, chyba że ustawisz --thinking off lub samodzielnie zdefiniujesz agents.defaults.models["zai/<model>"].params.thinking. Modele Z.AI domyślnie włączają tool_stream do strumieniowania wywołań narzędzi. Ustaw agents.defaults.models["zai/<model>"].params.tool_stream na false, aby to wyłączyć. Modele Anthropic Claude 4.6 domyślnie używają rozumowania adaptive, gdy nie ustawiono jawnego poziomu rozumowania.

agents.defaults.cliBackends

Opcjonalne zaplecza CLI dla tekstowych uruchomień awaryjnych (bez wywołań narzędzi). Przydatne jako kopia zapasowa, gdy dostawcy API zawodzą.
{
  agents: {
    defaults: {
      cliBackends: {
        "codex-cli": {
          command: "/opt/homebrew/bin/codex",
        },
        "my-cli": {
          command: "my-cli",
          args: ["--json"],
          output: "json",
          modelArg: "--model",
          sessionArg: "--session",
          sessionMode: "existing",
          systemPromptArg: "--system",
          // Or use systemPromptFileArg when the CLI accepts a prompt file flag.
          systemPromptWhen: "first",
          imageArg: "--image",
          imageMode: "repeat",
        },
      },
    },
  },
}
  • Zaplecza CLI są zorientowane na tekst; narzędzia są zawsze wyłączone.
  • Sesje są obsługiwane, gdy ustawiono sessionArg.
  • Przekazywanie obrazów jest obsługiwane, gdy imageArg przyjmuje ścieżki plików.
  • reseedFromRawTranscriptWhenUncompacted: true pozwala zapleczu odzyskać bezpieczne unieważnione sesje z ograniczonego surowego końca transkrypcji OpenClaw, zanim pojawi się pierwsze podsumowanie Compaction. Zmiany profilu uwierzytelniania lub epoki poświadczeń nadal nigdy nie używają ponownego zasiewania z surowej transkrypcji.

agents.defaults.systemPromptOverride

Zastępuje cały prompt systemowy złożony przez OpenClaw stałym ciągiem znaków. Ustaw na poziomie domyślnym (agents.defaults.systemPromptOverride) lub dla agenta (agents.list[].systemPromptOverride). Wartości dla agenta mają pierwszeństwo; wartość pusta lub zawierająca tylko białe znaki jest ignorowana. Przydatne do kontrolowanych eksperymentów z promptami.
{
  agents: {
    defaults: {
      systemPromptOverride: "You are a helpful assistant.",
    },
  },
}

agents.defaults.promptOverlays

Niezależne od dostawcy nakładki promptów stosowane według rodziny modelu. Identyfikatory modeli z rodziny GPT-5 otrzymują wspólny kontrakt zachowania u różnych dostawców; personality steruje tylko przyjazną warstwą stylu interakcji.
{
  agents: {
    defaults: {
      promptOverlays: {
        gpt5: {
          personality: "friendly", // friendly | on | off
        },
      },
    },
  },
}
  • "friendly" (domyślnie) i "on" włączają przyjazną warstwę stylu interakcji.
  • "off" wyłącza tylko przyjazną warstwę; oznaczony kontrakt zachowania GPT-5 pozostaje włączony.
  • Starsze plugins.entries.openai.config.personality jest nadal odczytywane, gdy to wspólne ustawienie nie jest ustawione.

agents.defaults.heartbeat

Okresowe uruchomienia Heartbeat.
{
  agents: {
    defaults: {
      heartbeat: {
        every: "30m", // 0m disables
        model: "openai/gpt-5.4-mini",
        includeReasoning: false,
        includeSystemPromptSection: true, // default: true; false omits the Heartbeat section from the system prompt
        lightContext: false, // default: false; true keeps only HEARTBEAT.md from workspace bootstrap files
        isolatedSession: false, // default: false; true runs each heartbeat in a fresh session (no conversation history)
        skipWhenBusy: false, // default: false; true also waits for this agent's subagent/nested lanes
        session: "main",
        to: "+15555550123",
        directPolicy: "allow", // allow (default) | block
        target: "none", // default: none | options: last | whatsapp | telegram | discord | ...
        prompt: "Read HEARTBEAT.md if it exists...",
        ackMaxChars: 300,
        suppressToolErrorWarnings: false,
        timeoutSeconds: 45,
      },
    },
  },
}
  • every: ciąg czasu trwania (ms/s/m/h). Domyślnie: 30m (uwierzytelnianie kluczem API) lub 1h (uwierzytelnianie OAuth). Ustaw na 0m, aby wyłączyć.
  • includeSystemPromptSection: gdy ma wartość false, pomija sekcję Heartbeat w prompcie systemowym i pomija wstrzyknięcie HEARTBEAT.md do kontekstu rozruchowego. Domyślnie: true.
  • suppressToolErrorWarnings: gdy ma wartość true, wycisza ładunki ostrzeżeń o błędach narzędzi podczas uruchomień Heartbeat.
  • timeoutSeconds: maksymalny czas w sekundach dozwolony dla tury agenta Heartbeat przed jej przerwaniem. Pozostaw nieustawione, aby użyć agents.defaults.timeoutSeconds.
  • directPolicy: zasady dostarczania bezpośredniego/DM. allow (domyślnie) zezwala na dostarczanie do celu bezpośredniego. block wycisza dostarczanie do celu bezpośredniego i emituje reason=dm-blocked.
  • lightContext: gdy ma wartość true, uruchomienia Heartbeat używają lekkiego kontekstu rozruchowego i zachowują tylko HEARTBEAT.md z plików rozruchowych obszaru roboczego.
  • isolatedSession: gdy ma wartość true, każde Heartbeat działa w nowej sesji bez wcześniejszej historii rozmowy. Ten sam wzorzec izolacji co w Cron sessionTarget: "isolated". Zmniejsza koszt tokenów na Heartbeat z ~100K do ~2-5K tokenów.
  • skipWhenBusy: gdy ma wartość true, uruchomienia Heartbeat są odraczane na dodatkowych zajętych ścieżkach tego agenta: jego własnej, kluczowanej sesją pracy subagenta lub zagnieżdżonych poleceń. Ścieżki Cron zawsze odraczają Heartbeat, nawet bez tej flagi.
  • Dla agenta: ustaw agents.list[].heartbeat. Gdy dowolny agent definiuje heartbeat, tylko ci agenci uruchamiają Heartbeat.
  • Heartbeat uruchamiają pełne tury agenta — krótsze interwały zużywają więcej tokenów.

agents.defaults.compaction

{
  agents: {
    defaults: {
      compaction: {
        mode: "safeguard", // default | safeguard
        provider: "my-provider", // id of a registered compaction provider plugin (optional)
        timeoutSeconds: 900,
        reserveTokensFloor: 24000,
        keepRecentTokens: 50000,
        identifierPolicy: "strict", // strict | off | custom
        identifierInstructions: "Preserve deployment IDs, ticket IDs, and host:port pairs exactly.", // used when identifierPolicy=custom
        qualityGuard: { enabled: true, maxRetries: 1 },
        midTurnPrecheck: { enabled: false }, // optional Pi tool-loop pressure check
        postCompactionSections: ["Session Startup", "Red Lines"], // [] disables reinjection
        model: "openrouter/anthropic/claude-sonnet-4-6", // optional compaction-only model override
        truncateAfterCompaction: true, // rotate to a smaller successor JSONL after compaction
        maxActiveTranscriptBytes: "20mb", // optional preflight local compaction trigger
        notifyUser: true, // send brief notices when compaction starts and completes (default: false)
        memoryFlush: {
          enabled: true,
          model: "ollama/qwen3:8b", // optional memory-flush-only model override
          softThresholdTokens: 6000,
          systemPrompt: "Session nearing compaction. Store durable memories now.",
          prompt: "Write any lasting notes to memory/YYYY-MM-DD.md; reply with the exact silent token NO_REPLY if nothing to store.",
        },
      },
    },
  },
}
  • mode: default lub safeguard (fragmentaryczne podsumowywanie długich historii). Zobacz Compaction.
  • provider: identyfikator zarejestrowanego Plugin dostawcy Compaction. Gdy jest ustawiony, wywoływane jest summarize() dostawcy zamiast wbudowanego podsumowywania LLM. W razie niepowodzenia następuje powrót do wbudowanego mechanizmu. Ustawienie dostawcy wymusza mode: "safeguard". Zobacz Compaction.
  • timeoutSeconds: maksymalna liczba sekund dozwolona dla pojedynczej operacji Compaction, zanim OpenClaw ją przerwie. Domyślnie: 900.
  • keepRecentTokens: budżet punktu odcięcia Pi na zachowanie dosłownego najnowszego końca transkrypcji. Ręczne /compact respektuje to, gdy jest jawnie ustawione; w przeciwnym razie ręczne Compaction jest twardym punktem kontrolnym.
  • identifierPolicy: strict (domyślnie), off lub custom. strict poprzedza podsumowywanie Compaction wbudowanymi wskazówkami dotyczącymi zachowania nieprzezroczystych identyfikatorów.
  • identifierInstructions: opcjonalny niestandardowy tekst zachowania identyfikatorów używany, gdy identifierPolicy=custom.
  • qualityGuard: kontrole ponawiania przy nieprawidłowo sformatowanym wyjściu dla podsumowań safeguard. Domyślnie włączone w trybie safeguard; ustaw enabled: false, aby pominąć audyt.
  • midTurnPrecheck: opcjonalna kontrola presji pętli narzędzi Pi. Gdy enabled: true, OpenClaw sprawdza presję kontekstu po dołączeniu wyników narzędzi i przed następnym wywołaniem modelu. Jeśli kontekst już się nie mieści, przerywa bieżącą próbę przed przesłaniem promptu i ponownie używa istniejącej ścieżki odzyskiwania z kontroli wstępnej, aby przyciąć wyniki narzędzi albo wykonać Compaction i ponowić próbę. Działa z trybami Compaction default i safeguard. Domyślnie: wyłączone.
  • postCompactionSections: opcjonalne nazwy sekcji H2/H3 z AGENTS.md do ponownego wstrzyknięcia po Compaction. Domyślnie ["Session Startup", "Red Lines"]; ustaw [], aby wyłączyć ponowne wstrzykiwanie. Gdy nieustawione lub jawnie ustawione na tę domyślną parę, starsze nagłówki Every Session/Safety są również akceptowane jako starszy mechanizm awaryjny.
  • model: opcjonalne nadpisanie provider/model-id tylko dla podsumowywania Compaction. Użyj tego, gdy główna sesja powinna zachować jeden model, ale podsumowania Compaction powinny działać na innym; gdy nieustawione, Compaction używa podstawowego modelu sesji.
  • maxActiveTranscriptBytes: opcjonalny próg bajtów (number lub ciągi takie jak "20mb"), który wyzwala zwykłe lokalne Compaction przed uruchomieniem, gdy aktywny JSONL przekroczy próg. Wymaga truncateAfterCompaction, aby udane Compaction mogło obrócić transkrypcję do mniejszego następcy. Wyłączone, gdy nieustawione lub 0.
  • notifyUser: gdy true, wysyła krótkie powiadomienia do użytkownika, gdy Compaction się rozpoczyna i gdy się kończy (na przykład „Kompaktowanie kontekstu…” i „Compaction zakończone”). Domyślnie wyłączone, aby Compaction pozostało ciche.
  • memoryFlush: cicha tura agentowa przed automatycznym Compaction w celu zapisania trwałych wspomnień. Ustaw model na dokładny dostawca/model, taki jak ollama/qwen3:8b, gdy ta tura porządkowa ma pozostać na modelu lokalnym; nadpisanie nie dziedziczy aktywnego łańcucha awaryjnego sesji. Pomijane, gdy obszar roboczy jest tylko do odczytu.

agents.defaults.runRetries

Granice iteracji ponawiania zewnętrznej pętli uruchomienia dla osadzonego runnera Pi, aby zapobiegać nieskończonym pętlom wykonania podczas odzyskiwania po awarii. Pamiętaj, że to ustawienie obecnie dotyczy tylko osadzonego środowiska uruchomieniowego agenta, a nie środowisk uruchomieniowych ACP ani CLI.
{
  agents: {
    defaults: {
      runRetries: {
        base: 24,
        perProfile: 8,
        min: 32,
        max: 160,
      },
    },
    list: [
      {
        id: "main",
        runRetries: { max: 50 }, // optional per-agent overrides
      },
    ],
  },
}
  • base: bazowa liczba iteracji ponawiania uruchomienia dla zewnętrznej pętli uruchomienia. Domyślnie: 24.
  • perProfile: dodatkowe iteracje ponawiania uruchomienia przyznane na każdego kandydata profilu awaryjnego. Domyślnie: 8.
  • min: minimalny bezwzględny limit iteracji ponawiania uruchomienia. Domyślnie: 32.
  • max: maksymalny bezwzględny limit iteracji ponawiania uruchomienia, aby zapobiec niekontrolowanemu wykonaniu. Domyślnie: 160.

agents.defaults.contextPruning

Przycina stare wyniki narzędzi z kontekstu w pamięci przed wysłaniem do LLM. Nie modyfikuje historii sesji na dysku.
{
  agents: {
    defaults: {
      contextPruning: {
        mode: "cache-ttl", // off | cache-ttl
        ttl: "1h", // duration (ms/s/m/h), default unit: minutes
        keepLastAssistants: 3,
        softTrimRatio: 0.3,
        hardClearRatio: 0.5,
        minPrunableToolChars: 50000,
        softTrim: { maxChars: 4000, headChars: 1500, tailChars: 1500 },
        hardClear: { enabled: true, placeholder: "[Old tool result content cleared]" },
        tools: { deny: ["browser", "canvas"] },
      },
    },
  },
}
  • mode: "cache-ttl" włącza przebiegi przycinania.
  • ttl kontroluje, jak często przycinanie może zostać uruchomione ponownie (po ostatnim dotknięciu cache).
  • Przycinanie najpierw miękko skraca zbyt duże wyniki narzędzi, a następnie, jeśli trzeba, twardo czyści starsze wyniki narzędzi.
Miękkie skracanie zachowuje początek + koniec i wstawia ... w środku.Twarde czyszczenie zastępuje cały wynik narzędzia symbolem zastępczym.Uwagi:
  • Bloki obrazów nigdy nie są skracane/czyszczone.
  • Współczynniki są oparte na znakach (przybliżone), a nie na dokładnych liczbach tokenów.
  • Jeśli istnieje mniej niż keepLastAssistants wiadomości asystenta, przycinanie jest pomijane.
Zobacz Przycinanie sesji, aby poznać szczegóły działania.

Strumieniowanie bloków

{
  agents: {
    defaults: {
      blockStreamingDefault: "off", // on | off
      blockStreamingBreak: "text_end", // text_end | message_end
      blockStreamingChunk: { minChars: 800, maxChars: 1200 },
      blockStreamingCoalesce: { idleMs: 1000 },
      humanDelay: { mode: "natural" }, // off | natural | custom (use minMs/maxMs)
    },
  },
}
  • Kanały inne niż Telegram wymagają jawnego *.blockStreaming: true, aby włączyć odpowiedzi blokowe.
  • Nadpisania kanałów: channels.<channel>.blockStreamingCoalesce (oraz warianty dla poszczególnych kont). Signal/Slack/Discord/Google Chat domyślnie używają minChars: 1500.
  • humanDelay: losowa pauza między odpowiedziami blokowymi. natural = 800–2500 ms. Nadpisanie dla agenta: agents.list[].humanDelay.
Zobacz Strumieniowanie, aby poznać szczegóły działania i dzielenia na fragmenty.

Wskaźniki pisania

{
  agents: {
    defaults: {
      typingMode: "instant", // never | instant | thinking | message
      typingIntervalSeconds: 6,
    },
  },
}
  • Wartości domyślne: instant dla czatów bezpośrednich/wzmianek, message dla czatów grupowych bez wzmianki.
  • Nadpisania dla sesji: session.typingMode, session.typingIntervalSeconds.
Zobacz Wskaźniki pisania.

agents.defaults.sandbox

Opcjonalna izolacja sandbox dla osadzonego agenta. Pełny przewodnik znajdziesz w Sandboxing.
{
  agents: {
    defaults: {
      sandbox: {
        mode: "non-main", // off | non-main | all
        backend: "docker", // docker | ssh | openshell
        scope: "agent", // session | agent | shared
        workspaceAccess: "none", // none | 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,
          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 contents also supported:
          // 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"],
      },
    },
  },
}
Backend:
  • docker: lokalne środowisko uruchomieniowe Docker (domyślne)
  • ssh: ogólne zdalne środowisko uruchomieniowe oparte na SSH
  • openshell: środowisko uruchomieniowe OpenShell
Gdy wybrano backend: "openshell", ustawienia specyficzne dla środowiska uruchomieniowego przenoszą się do plugins.entries.openshell.config.Konfiguracja backendu SSH:
  • target: cel SSH w formie user@host[:port]
  • command: polecenie klienta SSH (domyślnie: ssh)
  • workspaceRoot: bezwzględny zdalny katalog główny używany dla przestrzeni roboczych poszczególnych zakresów
  • identityFile / certificateFile / knownHostsFile: istniejące pliki lokalne przekazywane do OpenSSH
  • identityData / certificateData / knownHostsData: zawartość inline lub SecretRefs, które OpenClaw materializuje w plikach tymczasowych w czasie wykonywania
  • strictHostKeyChecking / updateHostKeys: przełączniki zasad kluczy hosta OpenSSH
Priorytet uwierzytelniania SSH:
  • identityData ma pierwszeństwo przed identityFile
  • certificateData ma pierwszeństwo przed certificateFile
  • knownHostsData ma pierwszeństwo przed knownHostsFile
  • Wartości *Data oparte na SecretRef są rozwiązywane z aktywnego zrzutu środowiska uruchomieniowego sekretów przed rozpoczęciem sesji sandbox
Działanie backendu SSH:
  • zasila zdalną przestrzeń roboczą raz po utworzeniu lub ponownym utworzeniu
  • następnie utrzymuje zdalną przestrzeń roboczą SSH jako kanoniczną
  • kieruje exec, narzędzia plikowe i ścieżki mediów przez SSH
  • nie synchronizuje automatycznie zdalnych zmian z powrotem na host
  • nie obsługuje kontenerów przeglądarki sandbox
Dostęp do przestrzeni roboczej:
  • none: przestrzeń robocza sandbox dla danego zakresu pod ~/.openclaw/sandboxes
  • ro: przestrzeń robocza sandbox w /workspace, przestrzeń robocza agenta zamontowana tylko do odczytu w /agent
  • rw: przestrzeń robocza agenta zamontowana do odczytu/zapisu w /workspace
Zakres:
  • session: kontener + przestrzeń robocza dla każdej sesji
  • agent: jeden kontener + przestrzeń robocza na agenta (domyślnie)
  • shared: współdzielony kontener i przestrzeń robocza (bez izolacji między sesjami)
Konfiguracja Plugin OpenShell:
{
  plugins: {
    entries: {
      openshell: {
        enabled: true,
        config: {
          mode: "mirror", // mirror | remote
          from: "openclaw",
          remoteWorkspaceDir: "/sandbox",
          remoteAgentWorkspaceDir: "/agent",
          gateway: "lab", // optional
          gatewayEndpoint: "https://lab.example", // optional
          policy: "strict", // optional OpenShell policy id
          providers: ["openai"], // optional
          autoProviders: true,
          timeoutSeconds: 120,
        },
      },
    },
  },
}
Tryb OpenShell:
  • mirror: zasila zdalne środowisko lokalnym przed exec, synchronizuje z powrotem po exec; lokalna przestrzeń robocza pozostaje kanoniczna
  • remote: zasila zdalne środowisko raz podczas tworzenia sandbox, a następnie utrzymuje zdalną przestrzeń roboczą jako kanoniczną
W trybie remote edycje lokalne na hoście wykonane poza OpenClaw nie są automatycznie synchronizowane do sandbox po etapie zasilenia. Transport odbywa się przez SSH do sandbox OpenShell, ale Plugin jest właścicielem cyklu życia sandbox i opcjonalnej synchronizacji lustrzanej.setupCommand uruchamia się raz po utworzeniu kontenera (przez sh -lc). Wymaga wychodzącego dostępu do sieci, zapisywalnego katalogu głównego i użytkownika root.Kontenery domyślnie używają network: "none" — ustaw "bridge" (lub niestandardową sieć bridge), jeśli agent potrzebuje dostępu wychodzącego. "host" jest blokowane. "container:<id>" jest domyślnie blokowane, chyba że jawnie ustawisz sandbox.docker.dangerouslyAllowContainerNamespaceJoin: true (tryb awaryjny).Załączniki przychodzące są umieszczane w media/inbound/* w aktywnej przestrzeni roboczej.docker.binds montuje dodatkowe katalogi hosta; globalne i przypisane do agenta powiązania są scalane.Przeglądarka sandbox (sandbox.browser.enabled): Chromium + CDP w kontenerze. URL noVNC jest wstrzykiwany do promptu systemowego. Nie wymaga browser.enabled w openclaw.json. Dostęp obserwatora noVNC domyślnie używa uwierzytelniania VNC, a OpenClaw emituje krótkotrwały URL z tokenem (zamiast ujawniać hasło we współdzielonym URL).
  • allowHostControl: false (domyślnie) blokuje sesje sandbox przed wskazywaniem przeglądarki hosta jako celu.
  • network domyślnie ustawione jest na openclaw-sandbox-browser (dedykowana sieć bridge). Ustaw bridge tylko wtedy, gdy jawnie chcesz globalnej łączności bridge.
  • cdpSourceRange opcjonalnie ogranicza ruch przychodzący CDP na krawędzi kontenera do zakresu CIDR (na przykład 172.21.0.1/32).
  • sandbox.browser.binds montuje dodatkowe katalogi hosta tylko w kontenerze przeglądarki sandbox. Po ustawieniu (w tym []) zastępuje docker.binds dla kontenera przeglądarki.
  • Domyślne ustawienia uruchamiania są zdefiniowane w scripts/sandbox-browser-entrypoint.sh i dostrojone dla hostów kontenerów:
    • --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-3d-apis
    • --disable-gpu
    • --disable-software-rasterizer
    • --disable-dev-shm-usage
    • --disable-background-networking
    • --disable-features=TranslateUI
    • --disable-breakpad
    • --disable-crash-reporter
    • --renderer-process-limit=2
    • --no-zygote
    • --metrics-recording-only
    • --disable-extensions (domyślnie włączone)
    • --disable-3d-apis, --disable-software-rasterizer i --disable-gpu są domyślnie włączone i można je wyłączyć za pomocą OPENCLAW_BROWSER_DISABLE_GRAPHICS_FLAGS=0, jeśli wymaga tego użycie WebGL/3D.
    • OPENCLAW_BROWSER_DISABLE_EXTENSIONS=0 ponownie włącza rozszerzenia, jeśli zależy od nich Twój przepływ pracy.
    • --renderer-process-limit=2 można zmienić za pomocą OPENCLAW_BROWSER_RENDERER_PROCESS_LIMIT=<N>; ustaw 0, aby użyć domyślnego limitu procesów Chromium.
    • plus --no-sandbox, gdy noSandbox jest włączone.
    • Wartości domyślne są bazą obrazu kontenera; użyj niestandardowego obrazu przeglądarki z niestandardowym entrypoint, aby zmienić wartości domyślne kontenera.
Sandbox przeglądarki i sandbox.docker.binds są dostępne tylko w Docker. Zbuduj obrazy (z checkoutu źródłowego):
scripts/sandbox-setup.sh           # main sandbox image
scripts/sandbox-browser-setup.sh   # optional browser image
W przypadku instalacji npm bez checkoutu źródłowego zobacz Sandboxing § Obrazy i konfiguracja, aby uzyskać inline polecenia docker build.

agents.list (nadpisania dla poszczególnych agentów)

Użyj agents.list[].tts, aby nadać agentowi własnego dostawcę TTS, głos, model, styl lub tryb automatycznego TTS. Blok agenta jest głęboko scalany z globalnym messages.tts, więc współdzielone dane uwierzytelniające mogą pozostać w jednym miejscu, podczas gdy poszczególni agenci nadpisują tylko te pola głosu lub dostawcy, których potrzebują. Nadpisanie aktywnego agenta ma zastosowanie do automatycznych odpowiedzi mówionych, /tts audio, /tts status oraz narzędzia agenta tts. Zobacz Zamiana tekstu na mowę, aby poznać przykłady dostawców i kolejność pierwszeństwa.
{
  agents: {
    list: [
      {
        id: "main",
        default: true,
        name: "Main Agent",
        workspace: "~/.openclaw/workspace",
        agentDir: "~/.openclaw/agents/main/agent",
        model: "anthropic/claude-opus-4-6", // or { primary, fallbacks }
        thinkingDefault: "high", // per-agent thinking level override
        reasoningDefault: "on", // per-agent reasoning visibility override
        fastModeDefault: false, // per-agent fast mode override
        params: { cacheRetention: "none" }, // overrides matching defaults.models params by key
        tts: {
          providers: {
            elevenlabs: { voiceId: "EXAVITQu4vr4xnSDxMaL" },
          },
        },
        skills: ["docs-search"], // replaces agents.defaults.skills when set
        identity: {
          name: "Samantha",
          theme: "helpful sloth",
          emoji: "🦥",
          avatar: "avatars/samantha.png",
        },
        groupChat: { mentionPatterns: ["@openclaw"] },
        sandbox: { mode: "off" },
        runtime: {
          type: "acp",
          acp: {
            agent: "codex",
            backend: "acpx",
            mode: "persistent",
            cwd: "/workspace/openclaw",
          },
        },
        subagents: { allowAgents: ["*"] },
        tools: {
          profile: "coding",
          allow: ["browser"],
          deny: ["canvas"],
          elevated: { enabled: true },
        },
      },
    ],
  },
}
  • id: stabilny identyfikator agenta (wymagany).
  • default: gdy ustawiono wiele, wygrywa pierwszy (rejestrowane jest ostrzeżenie). Jeśli nie ustawiono żadnego, domyślny jest pierwszy wpis listy.
  • model: forma tekstowa ustawia ścisły podstawowy model dla agenta bez modelu awaryjnego; forma obiektu { primary } również jest ścisła, chyba że dodasz fallbacks. Użyj { primary, fallbacks: [...] }, aby włączyć dla tego agenta modele awaryjne, albo { primary, fallbacks: [] }, aby jawnie ustawić zachowanie ścisłe. Zadania Cron, które nadpisują tylko primary, nadal dziedziczą domyślne modele awaryjne, chyba że ustawisz fallbacks: [].
  • params: parametry strumienia dla agenta scalane z wybranym wpisem modelu w agents.defaults.models. Użyj tego dla nadpisań specyficznych dla agenta, takich jak cacheRetention, temperature lub maxTokens, bez duplikowania całego katalogu modeli.
  • tts: opcjonalne nadpisania zamiany tekstu na mowę dla agenta. Blok jest głęboko scalany z messages.tts, więc współdzielone dane uwierzytelniające dostawcy i zasady awaryjne trzymaj w messages.tts, a tutaj ustawiaj tylko wartości specyficzne dla persony, takie jak dostawca, głos, model, styl lub tryb automatyczny.
  • skills: opcjonalna lista dozwolonych Skills dla agenta. Jeśli pominięta, agent dziedziczy agents.defaults.skills, gdy jest ustawione; jawna lista zastępuje wartości domyślne zamiast je scalać, a [] oznacza brak Skills.
  • thinkingDefault: opcjonalny domyślny poziom myślenia dla agenta (off | minimal | low | medium | high | xhigh | adaptive | max). Nadpisuje agents.defaults.thinkingDefault dla tego agenta, gdy nie ustawiono nadpisania dla wiadomości lub sesji. Wybrany profil dostawcy/modelu kontroluje, które wartości są prawidłowe; dla Google Gemini adaptive zachowuje dynamiczne myślenie kontrolowane przez dostawcę (thinkingLevel pominięte w Gemini 3/3.1, thinkingBudget: -1 w Gemini 2.5).
  • reasoningDefault: opcjonalna domyślna widoczność rozumowania dla agenta (on | off | stream). Nadpisuje agents.defaults.reasoningDefault dla tego agenta, gdy nie ustawiono nadpisania rozumowania dla wiadomości lub sesji.
  • fastModeDefault: opcjonalna wartość domyślna trybu szybkiego dla agenta (true | false). Ma zastosowanie, gdy nie ustawiono nadpisania trybu szybkiego dla wiadomości lub sesji.
  • models: opcjonalny katalog modeli/nadpisania środowiska uruchomieniowego dla agenta, kluczowane pełnymi identyfikatorami provider/model. Użyj models["provider/model"].agentRuntime dla wyjątków środowiska uruchomieniowego dla agenta.
  • runtime: opcjonalny deskryptor środowiska uruchomieniowego dla agenta. Użyj type: "acp" z wartościami domyślnymi runtime.acp (agent, backend, mode, cwd), gdy agent powinien domyślnie używać sesji uprzęży ACP.
  • identity.avatar: ścieżka względna wobec obszaru roboczego, URL http(s) lub URI data:.
  • identity wyprowadza wartości domyślne: ackReaction z emoji, mentionPatterns z name/emoji.
  • subagents.allowAgents: lista dozwolonych identyfikatorów agentów dla jawnych celów sessions_spawn.agentId (["*"] = dowolny; domyślnie: tylko ten sam agent). Uwzględnij identyfikator żądającego, gdy wywołania agentId celujące w siebie powinny być dozwolone.
  • Ochrona dziedziczenia piaskownicy: jeśli sesja żądającego działa w piaskownicy, sessions_spawn odrzuca cele, które uruchomiłyby się bez piaskownicy.
  • subagents.requireAgentId: gdy ma wartość true, blokuj wywołania sessions_spawn, które pomijają agentId (wymusza jawny wybór profilu; domyślnie: false).

Routing wielu agentów

Uruchamiaj wielu izolowanych agentów w jednym Gateway. Zobacz Wielu agentów.
{
  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" } },
  ],
}

Pola dopasowania powiązania

  • type (opcjonalne): route dla normalnego routingu (brakujący typ domyślnie oznacza route), acp dla trwałych powiązań konwersacji ACP.
  • match.channel (wymagane)
  • match.accountId (opcjonalne; * = dowolne konto; pominięte = konto domyślne)
  • match.peer (opcjonalne; { kind: direct|group|channel, id })
  • match.guildId / match.teamId (opcjonalne; specyficzne dla kanału)
  • acp (opcjonalne; tylko dla type: "acp"): { mode, label, cwd, backend }
Deterministyczna kolejność dopasowania:
  1. match.peer
  2. match.guildId
  3. match.teamId
  4. match.accountId (dokładne, bez peer/guild/team)
  5. match.accountId: "*" (w całym kanale)
  6. Domyślny agent
W ramach każdego poziomu wygrywa pierwszy pasujący wpis bindings. Dla wpisów type: "acp" OpenClaw rozwiązuje po dokładnej tożsamości konwersacji (match.channel + konto + match.peer.id) i nie używa powyższej kolejności poziomów powiązań routingu.

Profile dostępu dla agentów

{
  agents: {
    list: [
      {
        id: "personal",
        workspace: "~/.openclaw/workspace-personal",
        sandbox: { mode: "off" },
      },
    ],
  },
}
{
  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"],
        },
      },
    ],
  },
}
{
  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",
          ],
        },
      },
    ],
  },
}
Zobacz Piaskownica i narzędzia wielu agentów, aby poznać szczegóły pierwszeństwa.

Sesja

{
  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 },
    },
    resetTriggers: ["/new", "/reset"],
    store: "~/.openclaw/agents/{agentId}/sessions/sessions.json",
    maintenance: {
      mode: "warn", // warn | enforce
      pruneAfter: "30d",
      maxEntries: 500,
      resetArchiveRetention: "30d", // duration or false
      maxDiskBytes: "500mb", // optional hard budget
      highWaterBytes: "400mb", // optional cleanup target
    },
    threadBindings: {
      enabled: true,
      idleHours: 24, // default inactivity auto-unfocus in hours (`0` disables)
      maxAgeHours: 0, // default hard max age in hours (`0` disables)
    },
    mainKey: "main", // legacy (runtime always uses "main")
    agentToAgent: { maxPingPongTurns: 5 },
    sendPolicy: {
      rules: [{ action: "deny", match: { channel: "discord", chatType: "group" } }],
      default: "allow",
    },
  },
}
  • scope: podstawowa strategia grupowania sesji dla kontekstów czatu grupowego.
    • per-sender (domyślnie): każdy nadawca otrzymuje odizolowaną sesję w ramach kontekstu kanału.
    • global: wszyscy uczestnicy w kontekście kanału współdzielą jedną sesję (używaj tylko wtedy, gdy współdzielony kontekst jest zamierzony).
  • dmScope: sposób grupowania wiadomości DM.
    • main: wszystkie wiadomości DM współdzielą główną sesję.
    • per-peer: izoluje według identyfikatora nadawcy między kanałami.
    • per-channel-peer: izoluje według kanału + nadawcy (zalecane dla skrzynek odbiorczych z wieloma użytkownikami).
    • per-account-channel-peer: izoluje według konta + kanału + nadawcy (zalecane dla wielu kont).
  • identityLinks: mapuje kanoniczne identyfikatory na peery z prefiksem dostawcy na potrzeby współdzielenia sesji między kanałami. Polecenia dockowania, takie jak /dock_discord, używają tej samej mapy do przełączania trasy odpowiedzi aktywnej sesji na inny powiązany peer kanału; zobacz Dockowanie kanałów.
  • reset: podstawowa polityka resetowania. daily resetuje o lokalnej godzinie atHour; idle resetuje po idleMinutes. Gdy skonfigurowane są oba, wygrywa to, które wygaśnie jako pierwsze. Świeżość resetu dziennego używa sessionStartedAt z wiersza sesji; świeżość resetu bezczynności używa lastInteractionAt. Zapisy w tle/zdarzenia systemowe, takie jak heartbeat, wybudzenia cron, powiadomienia exec i księgowanie gateway, mogą aktualizować updatedAt, ale nie utrzymują świeżości sesji dziennych/bezczynnych.
  • resetByType: nadpisania dla poszczególnych typów (direct, group, thread). Starsze dm jest akceptowane jako alias direct.
  • mainKey: pole starszej wersji. Środowisko uruchomieniowe zawsze używa "main" dla głównego zasobnika czatu bezpośredniego.
  • agentToAgent.maxPingPongTurns: maksymalna liczba tur odpowiedzi zwrotnych między agentami podczas wymian agent-agent (liczba całkowita, zakres: 0-20, domyślnie: 5). 0 wyłącza łańcuch ping-pong.
  • sendPolicy: dopasowuje według channel, chatType (direct|group|channel, ze starszym aliasem dm), keyPrefix lub rawKeyPrefix. Pierwsza odmowa wygrywa.
  • maintenance: kontrolki czyszczenia magazynu sesji + retencji.
    • mode: warn emituje tylko ostrzeżenia; enforce stosuje czyszczenie.
    • pruneAfter: próg wieku dla nieaktualnych wpisów (domyślnie 30d).
    • maxEntries: maksymalna liczba wpisów w sessions.json (domyślnie 500). Środowisko uruchomieniowe zapisuje czyszczenie wsadowe z niewielkim buforem górnego progu dla limitów rozmiaru produkcyjnego; openclaw sessions cleanup --enforce stosuje limit natychmiast.
    • rotateBytes: przestarzałe i ignorowane; openclaw doctor --fix usuwa je ze starszych konfiguracji.
    • resetArchiveRetention: retencja archiwów transkrypcji *.reset.<timestamp>. Domyślnie używa pruneAfter; ustaw false, aby wyłączyć.
    • maxDiskBytes: opcjonalny budżet dyskowy katalogu sesji. W trybie warn zapisuje ostrzeżenia; w trybie enforce najpierw usuwa najstarsze artefakty/sesje.
    • highWaterBytes: opcjonalny cel po czyszczeniu budżetu. Domyślnie 80% wartości maxDiskBytes.
  • threadBindings: globalne wartości domyślne dla funkcji sesji powiązanych z wątkami.
    • enabled: główny przełącznik domyślny (dostawcy mogą nadpisywać; Discord używa channels.discord.threadBindings.enabled)
    • idleHours: domyślne automatyczne odogniskowanie po bezczynności w godzinach (0 wyłącza; dostawcy mogą nadpisywać)
    • maxAgeHours: domyślny twardy maksymalny wiek w godzinach (0 wyłącza; dostawcy mogą nadpisywać)
    • spawnSessions: domyślna bramka tworzenia sesji roboczych powiązanych z wątkami z sessions_spawn i spawnów wątków ACP. Domyślnie true, gdy powiązania wątków są włączone; dostawcy/konta mogą nadpisywać.
    • defaultSpawnContext: domyślny natywny kontekst subagenta dla spawnów powiązanych z wątkami ("fork" lub "isolated"). Domyślnie "fork".

Wiadomości

{
  messages: {
    responsePrefix: "🦞", // or "auto"
    ackReaction: "👀",
    ackReactionScope: "group-mentions", // group-mentions | group-all | direct | all
    removeAckAfterReply: false,
    queue: {
      mode: "steer", // steer | queue (legacy one-at-a-time) | followup | collect | steer-backlog | steer+backlog | interrupt
      debounceMs: 500,
      cap: 20,
      drop: "summarize", // old | new | summarize
      byChannel: {
        whatsapp: "steer",
        telegram: "steer",
      },
    },
    inbound: {
      debounceMs: 2000, // 0 disables
      byChannel: {
        whatsapp: 5000,
        slack: 1500,
      },
    },
  },
}

Prefiks odpowiedzi

Nadpisania dla poszczególnych kanałów/kont: channels.<channel>.responsePrefix, channels.<channel>.accounts.<id>.responsePrefix. Rozstrzyganie (najbardziej szczegółowe wygrywa): konto → kanał → globalne. "" wyłącza i zatrzymuje kaskadę. "auto" wyprowadza [{identity.name}]. Zmienne szablonu:
ZmiennaOpisPrzykład
{model}Krótka nazwa modeluclaude-opus-4-6
{modelFull}Pełny identyfikator modeluanthropic/claude-opus-4-6
{provider}Nazwa dostawcyanthropic
{thinkingLevel}Bieżący poziom myśleniahigh, low, off
{identity.name}Nazwa tożsamości agenta(tak samo jak "auto")
W zmiennych wielkość liter nie ma znaczenia. {think} jest aliasem {thinkingLevel}.

Reakcja potwierdzenia

  • Domyślnie używa identity.emoji aktywnego agenta, w przeciwnym razie "👀". Ustaw "", aby wyłączyć.
  • Nadpisania dla poszczególnych kanałów: channels.<channel>.ackReaction, channels.<channel>.accounts.<id>.ackReaction.
  • Kolejność rozstrzygania: konto → kanał → messages.ackReaction → awaryjnie tożsamość.
  • Zakres: group-mentions (domyślnie), group-all, direct, all.
  • removeAckAfterReply: usuwa potwierdzenie po odpowiedzi w kanałach obsługujących reakcje, takich jak Slack, Discord, Telegram, WhatsApp i iMessage.
  • messages.statusReactions.enabled: włącza reakcje statusu cyklu życia w Slack, Discord i Telegram. W Slack i Discord brak ustawienia utrzymuje reakcje statusu włączone, gdy aktywne są reakcje potwierdzenia. W Telegram ustaw to jawnie na true, aby włączyć reakcje statusu cyklu życia.

Debounce przychodzących wiadomości

Grupuje szybkie wiadomości wyłącznie tekstowe od tego samego nadawcy w jedną turę agenta. Media/załączniki opróżniają grupę natychmiast. Polecenia sterujące omijają debounce.

TTS (text-to-speech)

{
  messages: {
    tts: {
      auto: "always", // off | always | inbound | tagged
      mode: "final", // final | all
      provider: "elevenlabs",
      summaryModel: "openai/gpt-4.1-mini",
      modelOverrides: { enabled: true },
      maxTextLength: 4000,
      timeoutMs: 30000,
      prefsPath: "~/.openclaw/settings/tts.json",
      providers: {
        elevenlabs: {
          apiKey: "elevenlabs_api_key",
          baseUrl: "https://api.elevenlabs.io",
          voiceId: "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: {
          voice: "en-US-AvaMultilingualNeural",
          lang: "en-US",
          outputFormat: "audio-24khz-48kbitrate-mono-mp3",
        },
        openai: {
          apiKey: "openai_api_key",
          baseUrl: "https://api.openai.com/v1",
          model: "gpt-4o-mini-tts",
          voice: "alloy",
        },
      },
    },
  },
}
  • auto kontroluje domyślny tryb automatycznego TTS: off, always, inbound lub tagged. /tts on|off może nadpisać lokalne preferencje, a /tts status pokazuje stan efektywny.
  • summaryModel nadpisuje agents.defaults.model.primary dla automatycznego podsumowania.
  • modelOverrides jest domyślnie włączone; modelOverrides.allowProvider domyślnie ma wartość false (opt-in).
  • Klucze API używają awaryjnie ELEVENLABS_API_KEY/XI_API_KEY i OPENAI_API_KEY.
  • Dołączani dostawcy mowy należą do pluginów. Jeśli ustawiono plugins.allow, uwzględnij każdy Plugin dostawcy TTS, którego chcesz używać, na przykład microsoft dla Edge TTS. Starszy identyfikator dostawcy edge jest akceptowany jako alias microsoft.
  • providers.openai.baseUrl nadpisuje punkt końcowy OpenAI TTS. Kolejność rozstrzygania to konfiguracja, potem OPENAI_TTS_BASE_URL, potem https://api.openai.com/v1.
  • Gdy providers.openai.baseUrl wskazuje punkt końcowy inny niż OpenAI, OpenClaw traktuje go jako serwer TTS zgodny z OpenAI i rozluźnia walidację modelu/głosu.

Talk

Wartości domyślne trybu Talk (macOS/iOS/Android).
{
  talk: {
    provider: "elevenlabs",
    providers: {
      elevenlabs: {
        voiceId: "elevenlabs_voice_id",
        voiceAliases: {
          Clawd: "EXAVITQu4vr4xnSDxMaL",
          Roger: "CwhRBWXzGAHq8TQ4Fs17",
        },
        modelId: "eleven_v3",
        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",
          voice: "cedar",
        },
      },
      instructions: "Speak warmly and keep answers brief.",
      mode: "realtime",
      transport: "webrtc",
      brain: "agent-consult",
    },
  },
}
  • talk.provider musi pasować do klucza w talk.providers, gdy skonfigurowano wielu dostawców Talk.
  • Starsze płaskie klucze Talk (talk.voiceId, talk.voiceAliases, talk.modelId, talk.outputFormat, talk.apiKey) są przeznaczone wyłącznie do zgodności. Uruchom openclaw doctor --fix, aby przepisać utrwaloną konfigurację do talk.providers.<provider>.
  • Identyfikatory głosów używają awaryjnie ELEVENLABS_VOICE_ID lub SAG_VOICE_ID.
  • providers.*.apiKey akceptuje ciągi tekstowe jawne albo obiekty SecretRef.
  • Awaryjne użycie ELEVENLABS_API_KEY ma zastosowanie tylko wtedy, gdy nie skonfigurowano klucza API Talk.
  • providers.*.voiceAliases pozwala dyrektywom Talk używać przyjaznych nazw.
  • providers.mlx.modelId wybiera repozytorium Hugging Face używane przez lokalnego pomocnika MLX na macOS. Jeśli pominięto, macOS używa mlx-community/Soprano-80M-bf16.
  • Odtwarzanie MLX na macOS działa przez dołączonego pomocnika openclaw-mlx-tts, gdy jest obecny, albo przez plik wykonywalny w PATH; OPENCLAW_MLX_TTS_BIN nadpisuje ścieżkę pomocnika na potrzeby programowania.
  • consultThinkingLevel kontroluje poziom myślenia dla pełnego uruchomienia agenta OpenClaw za wywołaniami Control UI Talk realtime openclaw_agent_consult. Pozostaw nieustawione, aby zachować normalne zachowanie sesji/modelu.
  • consultFastMode ustawia jednorazowe nadpisanie trybu szybkiego dla konsultacji Control UI Talk realtime bez zmieniania normalnego ustawienia trybu szybkiego sesji.
  • speechLocale ustawia identyfikator locale BCP 47 używany przez rozpoznawanie mowy Talk w iOS/macOS. Pozostaw nieustawione, aby użyć domyślnego ustawienia urządzenia.
  • silenceTimeoutMs kontroluje, jak długo tryb Talk czeka po ciszy użytkownika, zanim wyśle transkrypcję. Brak ustawienia zachowuje domyślne okno pauzy platformy (700 ms on macOS and Android, 900 ms on iOS).
  • realtime.instructions dołącza instrukcje systemowe skierowane do dostawcy do wbudowanego promptu realtime OpenClaw, aby można było skonfigurować styl głosu bez utraty domyślnych wskazówek openclaw_agent_consult.

Powiązane