feat(voice-call): share realtime agent consult tool

Centralize the shared realtime agent consult tool for browser Talk, Google Meet, and Voice Call.
This commit is contained in:
Peter Steinberger
2026-04-24 23:11:18 +01:00
committed by GitHub
parent 900ba7cf33
commit e2f13959d4
23 changed files with 807 additions and 159 deletions

View File

@@ -1,4 +1,4 @@
0adf332920764704575b21d2fe9568742d977ff0169683319c168d68ea7cf143 config-baseline.json
a608561acecc7cfc5f16a31b7498d7a66001f6655f5a5960a68842c59b7dcaa8 config-baseline.json
2936d2ccf0c1e6e932a0e7c617b809e4b31dbb9a7d5afefbba29b229913b9e50 config-baseline.core.json
22d7cd6d8279146b2d79c9531a55b80b52a2c99c81338c508104729154fdd02d config-baseline.channel.json
28d874a4910174c7014ef2a267269a3327d31ff657f76d38c034ef1b86eae484 config-baseline.plugin.json
d47a574045a47356e513ab308d7dcad9fa0b389f50e93c5cf0f820fab858e70e config-baseline.plugin.json

View File

@@ -670,6 +670,7 @@ OpenClaw tools, it can call `openclaw_agent_consult`.
The consult tool runs the regular OpenClaw agent behind the scenes with recent
meeting transcript context and returns a concise spoken answer to the realtime
voice session. The voice model can then speak that answer back into the meeting.
It uses the same shared realtime consult tool as Voice Call.
`realtime.toolPolicy` controls the consult run:

View File

@@ -126,6 +126,7 @@ Set config under `plugins.entries.voice-call.config`:
realtime: {
enabled: false,
provider: "google", // optional; first registered realtime voice provider when unset
toolPolicy: "safe-read-only",
providers: {
google: {
model: "gemini-2.5-flash-native-audio-preview-12-2025",
@@ -174,6 +175,20 @@ Current runtime behavior:
- Bundled realtime voice providers include Google Gemini Live (`google`) and
OpenAI (`openai`), registered by their provider plugins.
- Provider-owned raw config lives under `realtime.providers.<providerId>`.
- Voice Call exposes the shared `openclaw_agent_consult` realtime tool by
default. The realtime model can call it when the caller asks for deeper
reasoning, current information, or normal OpenClaw tools.
- `realtime.toolPolicy` controls the consult run:
- `safe-read-only`: expose the consult tool and limit the regular agent to
`read`, `web_search`, `web_fetch`, `x_search`, `memory_search`, and
`memory_get`.
- `owner`: expose the consult tool and let the regular agent use the normal
agent tool policy.
- `none`: do not expose the consult tool. Custom `realtime.tools` are still
passed through to the realtime provider.
- Consult session keys reuse the existing voice session when available, then
fall back to the caller/callee phone number so follow-up consult calls keep
context during the call.
- If `realtime.provider` points at an unregistered provider, or no realtime
voice provider is registered at all, Voice Call logs a warning and skips
realtime media instead of failing the whole plugin.
@@ -199,7 +214,8 @@ Example:
realtime: {
enabled: true,
provider: "google",
instructions: "Speak briefly and ask before using tools.",
instructions: "Speak briefly. Call openclaw_agent_consult before using deeper tools.",
toolPolicy: "safe-read-only",
providers: {
google: {
apiKey: "${GEMINI_API_KEY}",