From def396fbeceecb1bff9803c0bde22a50d80ae293 Mon Sep 17 00:00:00 2001 From: "openclaw-docs-sync[bot]" Date: Sun, 26 Apr 2026 01:56:36 +0000 Subject: [PATCH] chore(sync): mirror docs from openclaw/openclaw@04e08cea62983b2c766d15f61f15b3ffc90f9baa --- .openclaw-sync/source.json | 4 +- docs/.generated/config-baseline.sha256 | 6 +-- .../.generated/plugin-sdk-api-baseline.sha256 | 4 +- docs/gateway/config-agents.md | 6 +++ .../reference/secretref-credential-surface.md | 1 + ...tref-user-supplied-credentials-matrix.json | 7 +++ docs/tools/tts.md | 47 ++++++++++++++++++- 7 files changed, 67 insertions(+), 8 deletions(-) diff --git a/.openclaw-sync/source.json b/.openclaw-sync/source.json index 4a6e09266..0a350e5eb 100644 --- a/.openclaw-sync/source.json +++ b/.openclaw-sync/source.json @@ -1,5 +1,5 @@ { "repository": "openclaw/openclaw", - "sha": "c7b336d83e13a44678a155bda40098d7d33b8232", - "syncedAt": "2026-04-26T01:39:34.957Z" + "sha": "04e08cea62983b2c766d15f61f15b3ffc90f9baa", + "syncedAt": "2026-04-26T01:55:11.140Z" } diff --git a/docs/.generated/config-baseline.sha256 b/docs/.generated/config-baseline.sha256 index d716da5c8..a1d33ab3c 100644 --- a/docs/.generated/config-baseline.sha256 +++ b/docs/.generated/config-baseline.sha256 @@ -1,4 +1,4 @@ -211e9d4cdb309e7fe0c1ed91d060201240a9287f8c5cb3c893aba3f904a20d30 config-baseline.json -ffda2d2911adc03148a368f3b40b17cbdcb7af0066bccdc555e8d596cdea8cda config-baseline.core.json +3efb041739877bd5387ffc87e0ddd11be43d80d38e7779407ce8091dcb797e5e config-baseline.json +5c6e35c5846f654d717d4b20853649e0b45a746423834f539b2a2223abcd5226 config-baseline.core.json 7cd9c908f066c143eab2a201efbc9640f483ab28bba92ddeca1d18cc2b528bc3 config-baseline.channel.json -9e131d7734f8b9cc9e7f8af6cc6b6dc81c9971dc551fadbe66fb0d682173f32d config-baseline.plugin.json +a5479c182ec987bb21e814b8a4e7b3bda7190ae5c2b35fd5ca403dfa48afa115 config-baseline.plugin.json diff --git a/docs/.generated/plugin-sdk-api-baseline.sha256 b/docs/.generated/plugin-sdk-api-baseline.sha256 index 0ec8dfc60..c7c1dbe1f 100644 --- a/docs/.generated/plugin-sdk-api-baseline.sha256 +++ b/docs/.generated/plugin-sdk-api-baseline.sha256 @@ -1,2 +1,2 @@ -c911117176b41eebf26470618274a7e093910e9b36855bc045bc8a92f6856745 plugin-sdk-api-baseline.json -ff360635f95beb217b9dd207a87eaf331319a7671aea03acfe05911756741b21 plugin-sdk-api-baseline.jsonl +690c1cd4c0c2c3d31577958120e14ac0bf555af529e03aa5e7965b1d04659c49 plugin-sdk-api-baseline.json +a0e6ba472ddd3acea34c0a8fda8cbb7d1172b1671a671d5fef5a9f42d749ce0d plugin-sdk-api-baseline.jsonl diff --git a/docs/gateway/config-agents.md b/docs/gateway/config-agents.md index 521dad498..eabb6e293 100644 --- a/docs/gateway/config-agents.md +++ b/docs/gateway/config-agents.md @@ -915,6 +915,11 @@ scripts/sandbox-browser-setup.sh # optional browser image fastModeDefault: false, // per-agent fast mode override embeddedHarness: { runtime: "auto", fallback: "pi" }, 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", @@ -950,6 +955,7 @@ scripts/sandbox-browser-setup.sh # optional browser image - `default`: when multiple are set, first wins (warning logged). If none set, first list entry is default. - `model`: string form overrides `primary` only; object form `{ primary, fallbacks }` overrides both (`[]` disables global fallbacks). Cron jobs that only override `primary` still inherit default fallbacks unless you set `fallbacks: []`. - `params`: per-agent stream params merged over the selected model entry in `agents.defaults.models`. Use this for agent-specific overrides like `cacheRetention`, `temperature`, or `maxTokens` without duplicating the whole model catalog. +- `tts`: optional per-agent text-to-speech overrides. The block deep-merges over `messages.tts`, so keep shared provider credentials and fallback policy in `messages.tts` and set only persona-specific values such as provider, voice, model, style, or auto mode here. - `skills`: optional per-agent skill allowlist. If omitted, the agent inherits `agents.defaults.skills` when set; an explicit list replaces defaults instead of merging, and `[]` means no skills. - `thinkingDefault`: optional per-agent default thinking level (`off | minimal | low | medium | high | xhigh | adaptive | max`). Overrides `agents.defaults.thinkingDefault` for this agent when no per-message or session override is set. The selected provider/model profile controls which values are valid; for Google Gemini, `adaptive` keeps provider-owned dynamic thinking (`thinkingLevel` omitted on Gemini 3/3.1, `thinkingBudget: -1` on Gemini 2.5). - `reasoningDefault`: optional per-agent default reasoning visibility (`on | off | stream`). Applies when no per-message or session reasoning override is set. diff --git a/docs/reference/secretref-credential-surface.md b/docs/reference/secretref-credential-surface.md index 77904deca..b0061d7b5 100644 --- a/docs/reference/secretref-credential-surface.md +++ b/docs/reference/secretref-credential-surface.md @@ -35,6 +35,7 @@ Scope intent: - `models.providers.*.request.tls.passphrase` - `skills.entries.*.apiKey` - `agents.defaults.memorySearch.remote.apiKey` +- `agents.list[].tts.providers.*.apiKey` - `agents.list[].memorySearch.remote.apiKey` - `talk.providers.*.apiKey` - `messages.tts.providers.*.apiKey` diff --git a/docs/reference/secretref-user-supplied-credentials-matrix.json b/docs/reference/secretref-user-supplied-credentials-matrix.json index 9f427138e..f44221000 100644 --- a/docs/reference/secretref-user-supplied-credentials-matrix.json +++ b/docs/reference/secretref-user-supplied-credentials-matrix.json @@ -29,6 +29,13 @@ "secretShape": "secret_input", "optIn": true }, + { + "id": "agents.list[].tts.providers.*.apiKey", + "configFile": "openclaw.json", + "path": "agents.list[].tts.providers.*.apiKey", + "secretShape": "secret_input", + "optIn": true + }, { "id": "auth-profiles.api_key.key", "configFile": "auth-profiles.json", diff --git a/docs/tools/tts.md b/docs/tools/tts.md index c8a8c20f9..ef1924170 100644 --- a/docs/tools/tts.md +++ b/docs/tools/tts.md @@ -109,6 +109,50 @@ Full schema is in [Gateway configuration](/gateway/configuration). } ``` +### Per-agent voice overrides + +Use `agents.list[].tts` when one agent should speak with a different provider, +voice, model, style, or auto-TTS mode. The agent block deep-merges over +`messages.tts`, so provider credentials can stay in the global provider config. + +```json5 +{ + messages: { + tts: { + auto: "always", + provider: "elevenlabs", + providers: { + elevenlabs: { + apiKey: "${ELEVENLABS_API_KEY}", + model: "eleven_multilingual_v2", + }, + }, + }, + }, + agents: { + list: [ + { + id: "reader", + tts: { + providers: { + elevenlabs: { + voiceId: "EXAVITQu4vr4xnSDxMaL", + }, + }, + }, + }, + ], + }, +} +``` + +Precedence for automatic replies is: + +1. `messages.tts` +2. active `agents.list[].tts` +3. local `/tts` preferences for this host +4. inline `[[tts:...]]` directives when model overrides are enabled + ### OpenAI primary with ElevenLabs fallback ```json5 @@ -702,7 +746,8 @@ Stored fields: - `maxLength` (summary threshold; default 1500 chars) - `summarize` (default `true`) -These override `messages.tts.*` for that host. +These override the effective config from `messages.tts` plus the active +`agents.list[].tts` block for that host. ## Output formats (fixed)