






















@@ -116,16 +116,16 @@ Or let an agent join through the `google_meet` tool:
116116"action": "join",
117117"url": "https://meet.google.com/abc-defg-hij",
118118"transport": "chrome-node",
119-"mode": "realtime"
119+"mode": "agent"
120120}
121121```
122122123123The agent-facing `google_meet` tool stays available on non-macOS hosts for
124124artifact, calendar, setup, transcribe, Twilio, and `chrome-node` flows. Local
125-Chrome realtime actions are blocked there because the bundled realtime Chrome
126-audio path currently depends on macOS `BlackHole 2ch`. On Linux, use
127-`mode: "transcribe"`, Twilio dial-in, or a macOS `chrome-node` host for realtime
128-Chrome participation.
125+Chrome talk-back actions are blocked there because the bundled Chrome audio path
126+currently depends on macOS `BlackHole 2ch`. On Linux, use `mode: "transcribe"`,
127+Twilio dial-in, or a macOS `chrome-node` host for Chrome talk-back
128+participation.
129129130130Create a new meeting and join it:
131131@@ -395,7 +395,7 @@ Common failure checks:
395395396396## Install notes
397397398-The Chrome realtime default uses two external tools:
398+The Chrome talk-back default uses two external tools:
399399400400- `sox`: command-line audio utility. The plugin uses explicit CoreAudio
401401 device commands for the default 24 kHz PCM16 audio bridge.
@@ -970,9 +970,10 @@ Workspace Developer Preview Program for Meet media APIs.
970970971971## Config
972972973-The common Chrome realtime path only needs the plugin enabled, BlackHole, SoX,
974-and a backend realtime voice provider key. OpenAI is the default; set
975-`realtime.provider: "google"` to use Google Gemini Live:
973+The common Chrome agent path only needs the plugin enabled, BlackHole, SoX, a
974+realtime transcription provider key, and a configured OpenClaw TTS provider.
975+OpenAI is the default transcription provider; set `realtime.provider: "google"`
976+to use Google Gemini Live for `bidi` mode:
976977977978```bash
978979brew install blackhole-2ch sox
@@ -999,7 +1000,8 @@ Set the plugin config under `plugins.entries.google-meet.config`:
9991000Defaults:
1000100110011002- `defaultTransport: "chrome"`
1002-- `defaultMode: "realtime"`
1003+- `defaultMode: "agent"` (`"realtime"` is accepted as a compatibility alias for
1004+`"agent"`)
10031005- `chromeNode.node`: optional node id/name/IP for `chrome-node`
10041006- `chrome.audioBackend: "blackhole-2ch"`
10051007- `chrome.guestName: "OpenClaw Agent"`: name used on the signed-out Meet guest
@@ -1027,13 +1029,16 @@ Defaults:
10271029 interruption on `chrome.bargeInInputCommand`
10281030- `chrome.bargeInCooldownMs: 900`: minimum delay between repeated human
10291031 interruption clears
1030-- `realtime.strategy: "agent"`: default. Participant speech is transcribed,
1031- sent to the configured OpenClaw agent in a per-meeting sub-agent session, and
1032- the returned answer is spoken back through the realtime provider.
1033-- `realtime.strategy: "bidi"`: direct bidirectional realtime model mode. The
1034- realtime provider answers participant speech directly and may call
1032+- `mode: "agent"`: default talk-back mode. Participant speech is transcribed by
1033+ the configured realtime transcription provider, sent to the configured
1034+ OpenClaw agent in a per-meeting sub-agent session, and spoken back through the
1035+ normal OpenClaw TTS runtime.
1036+- `mode: "bidi"`: fallback direct bidirectional realtime model mode. The
1037+ realtime voice provider answers participant speech directly and may call
10351038`openclaw_agent_consult` for deeper/tool-backed answers.
1036-- `realtime.provider: "openai"`
1039+- `mode: "transcribe"`: observe-only mode without the talk-back bridge.
1040+- `realtime.provider: "openai"`: provider id used by `agent` mode for realtime
1041+ transcription and by `bidi` mode for realtime voice.
10371042- `realtime.toolPolicy: "safe-read-only"`
10381043- `realtime.instructions`: brief spoken replies, with
10391044`openclaw_agent_consult` for deeper answers
@@ -1077,8 +1082,8 @@ Optional overrides:
10771082 chromeNode: {
10781083 node: "parallels-macos",
10791084 },
1085+ defaultMode: "agent",
10801086 realtime: {
1081- strategy: "agent",
10821087 provider: "google",
10831088 agentId: "jay",
10841089 toolPolicy: "owner",
@@ -1124,23 +1129,25 @@ Agents can use the `google_meet` tool:
11241129"action": "join",
11251130"url": "https://meet.google.com/abc-defg-hij",
11261131"transport": "chrome-node",
1127-"mode": "realtime"
1132+"mode": "agent"
11281133}
11291134```
1130113511311136Use `transport: "chrome"` when Chrome runs on the Gateway host. Use
11321137`transport: "chrome-node"` when Chrome runs on a paired node such as a Parallels
1133-VM. In both cases the realtime model and `openclaw_agent_consult` run on the
1134-Gateway host, so model credentials stay there. With the default
1135-`realtime.strategy: "agent"`, the realtime provider handles audio and
1136-transcription while the configured OpenClaw agent produces the spoken answer.
1137-With `realtime.strategy: "bidi"`, the realtime model answers directly.
1138+VM. In both cases the model providers and `openclaw_agent_consult` run on the
1139+Gateway host, so model credentials stay there. With the default `mode: "agent"`,
1140+the realtime transcription provider handles listening, the configured OpenClaw
1141+agent produces the answer, and regular OpenClaw TTS speaks it into Meet. Use
1142+`mode: "bidi"` when you want the realtime voice model to answer directly.
1143+`mode: "realtime"` remains accepted as a compatibility alias for
1144+`mode: "agent"`.
1138114511391146Use `action: "status"` to list active sessions or inspect a session ID. Use
11401147`action: "speak"` with `sessionId` and `message` to make the realtime agent
11411148speak immediately. Use `action: "test_speech"` to create or reuse the session,
11421149trigger a known phrase, and return `inCall` health when the Chrome host can
1143-report it. `test_speech` always forces `mode: "realtime"` and fails if asked to
1150+report it. `test_speech` always forces `mode: "agent"` and fails if asked to
11441151run in `mode: "transcribe"` because observe-only sessions intentionally cannot
11451152emit speech. Its `speechOutputVerified` result is based on realtime audio output
11461153bytes increasing during this test call, so a reused session with older audio
@@ -1172,38 +1179,38 @@ a session ended.
11721179}
11731180```
117411811175-## Realtime agent consult
1182+## Agent And Bidi Modes
117611831177-Chrome realtime mode is optimized for a live voice loop. The realtime voice
1178-provider hears the meeting audio and speaks through the configured audio bridge.
1179-The default `realtime.strategy: "agent"` uses the realtime provider for audio
1180-I/O and transcription, but routes final participant transcripts through the
1181-configured OpenClaw agent before speaking. Set `realtime.strategy: "bidi"` when
1182-you want the realtime model to answer directly.
1184+Chrome `agent` mode is optimized for "my agent is in the meeting" behavior. The
1185+realtime transcription provider hears the meeting audio, final participant
1186+transcripts are routed through the configured OpenClaw agent, and the answer is
1187+spoken through the normal OpenClaw TTS runtime. Set `mode: "bidi"` when you want
1188+the realtime voice model to answer directly.
11831189Nearby final transcript fragments are coalesced before the consult so one spoken
1184-turn does not produce several stale partial answers.
1185-Realtime input is also suppressed while queued assistant audio is still playing,
1190+turn does not produce several stale partial answers. Realtime input is also
1191+suppressed while queued assistant audio is still playing,
11861192and recent assistant-like transcript echoes are ignored before the agent consult
11871193so BlackHole loopback does not make the agent answer its own speech.
118811941189-| Strategy | Who decides the answer | Context behavior | Use when |
1190-| -------- | ----------------------------- | ------------------------------------------------------------------------------------ | ----------------------------------------------------- |
1191-| `agent` | The configured OpenClaw agent | Per-meeting sub-agent session plus normal agent policy, tools, workspace, and memory | You want "my agent is in the meeting" behavior |
1192-| `bidi` | The realtime voice model | Realtime session context, with optional `openclaw_agent_consult` calls | You want the lowest-latency conversational voice loop |
1195+| Mode | Who decides the answer | Speech output path | Use when |
1196+| ------- | ----------------------------- | -------------------------------------- | ----------------------------------------------------- |
1197+| `agent` | The configured OpenClaw agent | Normal OpenClaw TTS runtime | You want "my agent is in the meeting" behavior |
1198+| `bidi` | The realtime voice model | Realtime voice provider audio response | You want the lowest-latency conversational voice loop |
119311991194-In `bidi` strategy, when the realtime model needs deeper reasoning, current
1200+In `bidi` mode, when the realtime model needs deeper reasoning, current
11951201information, or normal OpenClaw tools, it can call `openclaw_agent_consult`.
1196120211971203The consult tool runs the regular OpenClaw agent behind the scenes with recent
1198-meeting transcript context and returns a concise spoken answer to the realtime
1199-voice session. The voice model can then speak that answer back into the meeting.
1200-It uses the same shared realtime consult tool as Voice Call.
1204+meeting transcript context and returns a concise spoken answer. In `agent` mode,
1205+OpenClaw sends that answer directly to the TTS runtime; in `bidi` mode, the
1206+realtime voice model can speak the consult result back into the meeting. It uses
1207+the same shared consult machinery as Voice Call.
1201120812021209By default, consults run against the `main` agent. Set `realtime.agentId` when a
12031210Meet lane should consult a dedicated OpenClaw agent workspace, model defaults,
12041211tool policy, memory, and session history.
120512121206-Agent strategy consults use a per-meeting `agent:<id>:subagent:google-meet:<session>`
1213+Agent-mode consults use a per-meeting `agent:<id>:subagent:google-meet:<session>`
12071214session key so follow-up questions keep meeting context while inheriting normal
12081215agent policy from the configured agent.
12091216@@ -1307,10 +1314,10 @@ The running agent only sees plugin tools registered by the current Gateway
13071314process.
1308131513091316On non-macOS Gateway hosts, the agent-facing `google_meet` tool stays visible,
1310-but local Chrome realtime actions are blocked before they hit the audio bridge.
1311-Local Chrome realtime audio currently depends on macOS `BlackHole 2ch`, so
1317+but local Chrome talk-back actions are blocked before they hit the audio bridge.
1318+Local Chrome talk-back audio currently depends on macOS `BlackHole 2ch`, so
13121319Linux agents should use `mode: "transcribe"`, Twilio dial-in, or a macOS
1313-`chrome-node` host instead of the default local Chrome realtime path.
1320+`chrome-node` host instead of the default local Chrome agent path.
1314132113151322### No connected Google Meet-capable node
13161323@@ -1424,8 +1431,9 @@ openclaw googlemeet setup
14241431openclaw googlemeet doctor
14251432```
142614331427-Use `mode: "realtime"` for listen/talk-back. `mode: "transcribe"` intentionally
1428-does not start the duplex realtime voice bridge. For observe-only debugging,
1434+Use `mode: "agent"` for the normal STT -> OpenClaw agent -> TTS talk-back path,
1435+or `mode: "bidi"` for the direct realtime voice fallback. `mode: "transcribe"`
1436+intentionally does not start the talk-back bridge. For observe-only debugging,
14291437run `openclaw googlemeet status --json <session-id>` after participants speak
14301438and check `captioning`, `transcriptLines`, and `lastCaptionText`. If `inCall` is
14311439true but `transcriptLines` stays at `0`, Meet captions may be disabled, no one
@@ -1607,14 +1615,16 @@ call still needs a participant path. This plugin keeps that boundary visible:
16071615Chrome handles browser participation and local audio routing; Twilio handles
16081616phone dial-in participation.
160916171610-Chrome realtime mode needs `BlackHole 2ch` plus either:
1618+Chrome talk-back modes need `BlackHole 2ch` plus either:
1611161916121620- `chrome.audioInputCommand` plus `chrome.audioOutputCommand`: OpenClaw owns the
1613- realtime voice bridge and pipes audio in `chrome.audioFormat` between those
1614- commands and the selected realtime voice provider. The default Chrome path is
1615- 24 kHz PCM16; 8 kHz G.711 mu-law remains available for legacy command pairs.
1621+ bridge and pipes audio in `chrome.audioFormat` between those commands and the
1622+ selected provider. Agent mode uses realtime transcription plus regular TTS;
1623+ bidi mode uses the realtime voice provider. The default Chrome path is 24 kHz
1624+ PCM16; 8 kHz G.711 mu-law remains available for legacy command pairs.
16161625- `chrome.audioBridgeCommand`: an external bridge command owns the whole local
1617- audio path and must exit after starting or validating its daemon.
1626+ audio path and must exit after starting or validating its daemon. This is only
1627+ valid for `bidi` because `agent` mode needs direct command-pair access for TTS.
1618162816191629For clean duplex audio, route Meet output and Meet microphone through separate
16201630virtual devices or a Loopback-style virtual device graph. A single shared
@@ -1628,7 +1638,7 @@ Like `chrome.audioInputCommand` and `chrome.audioOutputCommand`, it is an
16281638operator-configured local command. Use an explicit trusted command path or
16291639argument list, and do not point it at scripts from untrusted locations.
163016401631-`googlemeet speak` triggers the active realtime audio bridge for a Chrome
1641+`googlemeet speak` triggers the active talk-back audio bridge for a Chrome
16321642session. `googlemeet leave` stops that bridge. For Twilio sessions delegated
16331643through the Voice Call plugin, `leave` also hangs up the underlying voice call.
16341644Use `googlemeet end-active-conference` when you also want to close the active
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。