You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/channels/discord.md
+24-22Lines changed: 24 additions & 22 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1172,8 +1172,7 @@ Auto-join example:
1172
1172
discord: {
1173
1173
voice: {
1174
1174
enabled:true,
1175
-
mode:"stt-tts",
1176
-
model:"openai/gpt-5.4-mini",
1175
+
model:"openai-codex/gpt-5.5",
1177
1176
autoJoin: [
1178
1177
{
1179
1178
guildId:"123456789012345678",
@@ -1184,12 +1183,10 @@ Auto-join example:
1184
1183
decryptionFailureTolerance:24,
1185
1184
connectTimeoutMs:30000,
1186
1185
reconnectGraceMs:15000,
1187
-
tts: {
1186
+
realtime: {
1188
1187
provider:"openai",
1189
-
openai: {
1190
-
model:"gpt-4o-mini-tts",
1191
-
voice:"cedar",
1192
-
},
1188
+
model:"gpt-realtime-2",
1189
+
voice:"cedar",
1193
1190
},
1194
1191
},
1195
1192
},
@@ -1199,10 +1196,11 @@ Auto-join example:
1199
1196
1200
1197
Notes:
1201
1198
1202
-
-`voice.tts` overrides `messages.tts` for voice playback only.
1203
-
-`voice.mode` controls the conversation path: `stt-tts` keeps the existing batch STT plus TTS flow, `talk-buffer` uses a realtime voice shell for turn timing/transcription/playback while the OpenClaw agent produces the answer, and`bidi` lets the realtime model converse directly while exposing `openclaw_agent_consult` for the OpenClaw brain.
1199
+
-`voice.tts` overrides `messages.tts` for `stt-tts`voice playback only. Realtime modes use `voice.realtime.voice`.
1200
+
-`voice.mode` controls the conversation path. The default is `agent-proxy`: a realtime voice shell handles turn timing, transcription, interruption, and playback, while the routed OpenClaw agent produces the answer with the same session/tool permissions as a typed Discord prompt from that speaker. `stt-tts` keeps the older batch STT plus TTS flow.`bidi` lets the realtime model converse directly while exposing `openclaw_agent_consult` for the OpenClaw brain.
1204
1201
-`voice.agentSession` controls which OpenClaw conversation receives voice turns. Leave it unset for the voice channel's own session, or set `{ mode: "target", target: "channel:<text-channel-id>" }` to make the voice channel act as the microphone/speaker extension of an existing Discord text channel session such as `#maintainers`.
1205
1202
-`voice.model` overrides the OpenClaw agent brain for Discord voice responses and realtime consults. Leave it unset to inherit the routed agent model. It is separate from `voice.realtime.model`.
1203
+
-`agent-proxy` routes speech through `discord-voice`, which preserves normal owner/tool authorization for the speaker and target session but hides the agent `tts` tool because Discord voice owns playback.
1206
1204
- In `stt-tts` mode, STT uses `tools.media.audio`; `voice.model` does not affect transcription.
1207
1205
- In realtime modes, `voice.realtime.provider`, `voice.realtime.model`, and `voice.realtime.voice` configure the realtime audio session. For OpenAI Realtime 2 plus the Codex brain, use `voice.realtime.model: "gpt-realtime-2"` and `voice.model: "openai-codex/gpt-5.5"`.
1208
1206
-`voice.realtime.bargeIn` controls whether Discord speaker-start events interrupt active realtime playback. If unset, it follows the realtime provider's input-audio interruption setting.
@@ -1234,16 +1232,20 @@ STT plus TTS pipeline:
1234
1232
-`voice.model`, when set, overrides only the response LLM for this voice-channel turn.
1235
1233
-`voice.tts` is merged over `messages.tts`; streaming-capable providers feed the player directly, otherwise the resulting audio file is played in the joined channel.
With no `voice.agentSession` block, each voice channel gets its own routed OpenClaw session. For example, `/vc join channel:234567890123456789` talks to the session for that Discord voice channel.
1254
1256
1255
-
Realtime talk-buffer example:
1257
+
Legacy STT plus TTS example:
1256
1258
1257
1259
```json5
1258
1260
{
1259
1261
channels: {
1260
1262
discord: {
1261
1263
voice: {
1262
1264
enabled:true,
1263
-
mode:"talk-buffer",
1264
-
model:"openai-codex/gpt-5.5",
1265
-
realtime: {
1265
+
mode:"stt-tts",
1266
+
model:"openai/gpt-5.4-mini",
1267
+
tts: {
1266
1268
provider:"openai",
1267
-
model:"gpt-realtime-2",
1268
-
voice:"cedar",
1269
+
openai: {
1270
+
model:"gpt-4o-mini-tts",
1271
+
voice:"cedar",
1272
+
},
1269
1273
},
1270
1274
},
1271
1275
},
@@ -1304,7 +1308,7 @@ Voice as an extension of an existing Discord channel session:
1304
1308
discord: {
1305
1309
voice: {
1306
1310
enabled:true,
1307
-
mode:"bidi",
1311
+
mode:"agent-proxy",
1308
1312
model:"openai-codex/gpt-5.5",
1309
1313
agentSession: {
1310
1314
mode:"target",
@@ -1314,16 +1318,14 @@ Voice as an extension of an existing Discord channel session:
1314
1318
provider:"openai",
1315
1319
model:"gpt-realtime-2",
1316
1320
voice:"cedar",
1317
-
toolPolicy:"safe-read-only",
1318
-
consultPolicy:"always",
1319
1321
},
1320
1322
},
1321
1323
},
1322
1324
},
1323
1325
}
1324
1326
```
1325
1327
1326
-
In this mode the bot joins the configured voice channel, but OpenClaw agent turns use the target channel's normal routed session and agent. The realtime voice session speaks the returned result back into the voice channel. The supervisor agent can still use normal message tools according to its tool policy, including sending a separate Discord message if that is the right action.
1328
+
In `agent-proxy` mode the bot joins the configured voice channel, but OpenClaw agent turns use the target channel's normal routed session and agent. The realtime voice session speaks the returned result back into the voice channel. The supervisor agent can still use normal message tools according to its tool policy, including sending a separate Discord message if that is the right action.
Copy file name to clipboardExpand all lines: docs/cli/infer.md
+6Lines changed: 6 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -126,6 +126,7 @@ This table maps common inference tasks to the corresponding infer command.
126
126
-`openclaw infer ...` is the primary CLI surface for these workflows.
127
127
- Use `--json` when the output will be consumed by another command or script.
128
128
- Use `--provider` or `--model provider/model` when a specific backend is required.
129
+
- Use `model run --thinking <level>` to pass a one-shot thinking/reasoning level (`off`, `minimal`, `low`, `medium`, `high`, `adaptive`, `xhigh`, or `max`) while keeping the run raw.
129
130
- For `image describe`, `audio transcribe`, and `video describe`, `--model` must use the form `<provider/model>`.
130
131
- For `image describe`, an explicit `--model` runs that provider/model directly. The model must be image-capable in the model catalog or provider config. `codex/<model>` runs a bounded Codex app-server image-understanding turn; `openai-codex/<model>` uses the OpenAI Codex OAuth provider path.
131
132
- Stateless execution commands default to local.
@@ -136,6 +137,7 @@ This table maps common inference tasks to the corresponding infer command.
136
137
-`model run --file` rejects non-image inputs. Use `infer audio transcribe` for audio files and `infer video describe` for video files.
137
138
-`model run --gateway` exercises Gateway routing, saved auth, provider selection, and the embedded runtime, but still runs as a raw model probe: it sends the supplied prompt and any image attachments without prior session transcript, bootstrap/AGENTS context, context-engine assembly, tools, or bundled MCP servers.
138
139
-`model run --gateway --model <provider/model>` requires a trusted operator gateway credential because the request asks the Gateway to run a one-off provider/model override.
140
+
- Local `model run --thinking` uses the lean provider-completion path; provider-specific levels such as `adaptive` and `max` are mapped to the closest portable simple-completion level.
139
141
140
142
## Model
141
143
@@ -145,6 +147,7 @@ Use `model` for provider-backed text inference and model/provider inspection.
145
147
openclaw infer model run --prompt "Reply with exactly: smoke-ok" --json
146
148
openclaw infer model run --prompt "Summarize this changelog entry" --model openai/gpt-5.4 --json
147
149
openclaw infer model run --prompt "Describe this image in one sentence" --file ./photo.jpg --model google/gemini-2.5-flash --json
150
+
openclaw infer model run --prompt "Use more reasoning here" --thinking high --json
148
151
openclaw infer model providers --json
149
152
openclaw infer model inspect --name gpt-5.5 --json
150
153
```
@@ -157,6 +160,7 @@ openclaw infer model run --local --model anthropic/claude-sonnet-4-6 --prompt "R
157
160
openclaw infer model run --local --model cerebras/zai-glm-4.7 --prompt "Reply with exactly: pong" --json
158
161
openclaw infer model run --local --model google/gemini-2.5-flash --prompt "Reply with exactly: pong" --json
159
162
openclaw infer model run --local --model groq/llama-3.1-8b-instant --prompt "Reply with exactly: pong" --json
163
+
openclaw infer model run --local --model mistral/mistral-medium-3-5 --prompt "Reply with exactly: pong" --json
160
164
openclaw infer model run --local --model mistral/mistral-small-latest --prompt "Reply with exactly: pong" --json
161
165
openclaw infer model run --local --model openai/gpt-4.1 --prompt "Reply with exactly: pong" --json
162
166
openclaw infer model run --local --model ollama/qwen2.5vl:7b --prompt "Describe this image." --file ./photo.jpg --json
@@ -165,6 +169,8 @@ openclaw infer model run --local --model ollama/qwen2.5vl:7b --prompt "Describe
165
169
Notes:
166
170
167
171
- Local `model run` is the narrowest CLI smoke for provider/model/auth health because, for non-Codex providers, it sends only the supplied prompt to the selected model.
172
+
- Local `model run --model <provider/model>` can use exact bundled static catalog rows from `models list --all` before that provider is written to config. Provider auth is still required; missing credentials fail as auth errors, not `Unknown model`.
173
+
- For Mistral Medium 3.5 reasoning probes, leave temperature unset/default. Mistral rejects `reasoning_effort="high"` plus `temperature: 0`; use `mistral/mistral-medium-3-5` with default temperature or a non-zero reasoning-mode value such as `0.7`.
168
174
-`openai-codex/*` local probes are the narrow exception: OpenClaw adds a minimal system instruction so the Codex Responses transport can populate its required `instructions` field, without adding full agent context, tools, memory, or session transcript.
169
175
- Local `model run --file` keeps that lean path and attaches image content directly to the single user message. Common image files such as PNG, JPEG, and WebP work when their MIME type is detected as `image/*`; unsupported or unrecognized files fail before the provider is called.
170
176
-`model run --file` is best when you want to test the selected multimodal text model directly. Use `infer image describe` when you want OpenClaw's image-understanding provider selection and default image-model routing.
Copy file name to clipboardExpand all lines: docs/gateway/config-agents.md
+5Lines changed: 5 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -393,6 +393,7 @@ Time format in system prompt. Default: `auto` (OS preference).
393
393
-`params` merge precedence (config): `agents.defaults.params` (global base) is overridden by `agents.defaults.models["provider/model"].params` (per-model), then `agents.list[].params` (matching agent id) overrides by key. See [Prompt Caching](/reference/prompt-caching) for details.
394
394
-`params.extra_body`/`params.extraBody`: advanced pass-through JSON merged into `api: "openai-completions"` request bodies for OpenAI-compatible proxies. If it collides with generated request keys, the extra body wins; non-native completions routes still strip OpenAI-only `store` afterward.
395
395
-`params.chat_template_kwargs`: vLLM/OpenAI-compatible chat-template arguments merged into top-level `api: "openai-completions"` request bodies. For `vllm/nemotron-3-*` with thinking off, the bundled vLLM plugin automatically sends `enable_thinking: false` and `force_nonempty_content: true`; explicit `chat_template_kwargs` override generated defaults, and `extra_body.chat_template_kwargs` still has final precedence. For vLLM Qwen thinking controls, set `params.qwenThinkingFormat` to `"chat-template"` or `"top-level"` on that model entry.
396
+
-`compat.thinkingFormat`: OpenAI-compatible thinking payload style. Use `"qwen"` for Qwen-style top-level `enable_thinking`, or `"qwen-chat-template"` for `chat_template_kwargs.enable_thinking` on Qwen-family backends that support request-level chat-template kwargs, such as vLLM. OpenClaw maps disabled thinking to `false` and enabled thinking to `true`.
396
397
-`compat.supportedReasoningEfforts`: per-model OpenAI-compatible reasoning effort list. Include `"xhigh"` for custom endpoints that truly accept it; OpenClaw then exposes `/think xhigh` in command menus, Gateway session rows, session patch validation, agent CLI validation, and `llm-task` validation for that configured provider/model. Use `compat.reasoningEffortMap` when the backend wants a provider-specific value for a canonical level.
397
398
-`params.preserveThinking`: Z.AI-only opt-in for preserved thinking. When enabled and thinking is on, OpenClaw sends `thinking.clear_thinking: false` and replays prior `reasoning_content`; see [Z.AI thinking and preserved thinking](/providers/zai#thinking-and-preserved-thinking).
398
399
- Runtime policy belongs on providers or models, not on `agents.defaults`. Use `models.providers.<provider>.agentRuntime` for provider-wide rules or `agents.defaults.models["provider/model"].agentRuntime` / `agents.list[].models["provider/model"].agentRuntime` for model-specific rules. OpenAI agent models on the official OpenAI provider select Codex by default.
@@ -1378,6 +1379,8 @@ Defaults for Talk mode (macOS/iOS/Android).
1378
1379
},
1379
1380
system: {},
1380
1381
},
1382
+
consultThinkingLevel:"low",
1383
+
consultFastMode:true,
1381
1384
speechLocale:"ru-RU",
1382
1385
silenceTimeoutMs:1500,
1383
1386
interruptOnSpeech:true,
@@ -1405,6 +1408,8 @@ Defaults for Talk mode (macOS/iOS/Android).
1405
1408
-`providers.*.voiceAliases` lets Talk directives use friendly names.
1406
1409
-`providers.mlx.modelId` selects the Hugging Face repo used by the macOS local MLX helper. If omitted, macOS uses `mlx-community/Soprano-80M-bf16`.
1407
1410
- macOS MLX playback runs through the bundled `openclaw-mlx-tts` helper when present, or an executable on `PATH`; `OPENCLAW_MLX_TTS_BIN` overrides the helper path for development.
1411
+
-`consultThinkingLevel` controls the thinking level for the full OpenClaw agent run behind Control UI Talk realtime `openclaw_agent_consult` calls. Leave unset to preserve normal session/model behavior.
1412
+
-`consultFastMode` sets a one-shot fast-mode override for Control UI Talk realtime consults without changing the session's normal fast-mode setting.
1408
1413
-`speechLocale` sets the BCP 47 locale id used by iOS/macOS Talk speech recognition. Leave unset to use the device default.
1409
1414
-`silenceTimeoutMs` controls how long Talk mode waits after user silence before it sends the transcript. Unset keeps the platform default pause window (`700 ms on macOS and Android, 900 ms on iOS`).
Copy file name to clipboardExpand all lines: docs/gateway/config-tools.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -474,6 +474,7 @@ OpenClaw uses the built-in model catalog. Add custom providers via `models.provi
474
474
- `models.providers.*.models.*.contextTokens`: optional runtime context cap. This overrides provider-level `contextTokens`; use it when you want a smaller effective context budget than the model's native `contextWindow`; `openclaw models list` shows both values when they differ.
475
475
- `models.providers.*.models.*.compat.supportsDeveloperRole`: optional compatibility hint. For `api: "openai-completions"` with a non-empty non-native `baseUrl` (host not `api.openai.com`), OpenClaw forces this to `false` at runtime. Empty/omitted `baseUrl` keeps default OpenAI behavior.
476
476
- `models.providers.*.models.*.compat.requiresStringContent`: optional compatibility hint for string-only OpenAI-compatible chat endpoints. When `true`, OpenClaw flattens pure text `messages[].content` arrays into plain strings before sending the request.
477
+
- `models.providers.*.models.*.compat.thinkingFormat`: optional thinking payload hint. Use `"qwen"` for top-level `enable_thinking`, or `"qwen-chat-template"` for `chat_template_kwargs.enable_thinking` on Qwen-family OpenAI-compatible servers that support request-level chat-template kwargs, such as vLLM.
-`talk.consultThinkingLevel`: thinking level override for the full OpenClaw agent run behind Control UI Talk realtime consults
52
+
-`talk.consultFastMode`: one-shot fast-mode override for Control UI Talk realtime consults
51
53
-`talk.speechLocale`: optional BCP 47 locale id for Talk speech recognition on iOS/macOS
52
54
-`talk.silenceTimeoutMs`: when unset, Talk keeps the platform default pause window before sending the transcript (`700 ms on macOS and Android, 900 ms on iOS`)
0 commit comments