惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

H
Help Net Security
腾讯CDC
爱范儿
爱范儿
Google DeepMind News
Google DeepMind News
V
V2EX
Blog — PlanetScale
Blog — PlanetScale
Engineering at Meta
Engineering at Meta
GbyAI
GbyAI
量子位
F
Fortinet All Blogs
G
Google Developers Blog
T
The Blog of Author Tim Ferriss
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Hugging Face - Blog
Hugging Face - Blog
Last Week in AI
Last Week in AI
T
Tailwind CSS Blog
J
Java Code Geeks
S
SegmentFault 最新的问题
D
Docker
博客园 - 司徒正美
The GitHub Blog
The GitHub Blog
Jina AI
Jina AI
M
MIT News - Artificial intelligence
博客园 - 【当耐特】

Recent Commits to openclaw:main

test: merge chat side-result checks · openclaw/openclaw@ddd2c2a test: merge cron history checks · openclaw/openclaw@f7eb746 test: merge responsive navigation shell checks · openclaw/openclaw@c2e4b47 docs(changelog): add codex oauth fixes · openclaw/openclaw@628e6cd test: merge navigation routing cases · openclaw/openclaw@5d8cecb Tests: mock channel registry bundled fallback · openclaw/openclaw@2b08233 Secrets: avoid broad web search discovery for single plugin config · openclaw/openclaw@a464f59 test: merge config view browser checks · openclaw/openclaw@20cf511 fix(status): align oauth health with runtime · openclaw/openclaw@eed7116 feat: add macOS screen snapshots for monitor preview (#67954) thanks … · openclaw/openclaw@f377db1 fix: report shared auth scopes in hello-ok (#67810) thanks @BunsDev · openclaw/openclaw@0b6c39b Auto-reply: avoid eager bundled route fallback · openclaw/openclaw@3ea1bf4 Tests: narrow session binding contract setup · openclaw/openclaw@54e4e16 fix(macOS): enable undo/redo in webchat composer text input (#34962) · openclaw/openclaw@00951dc Tests: speed up channel setup promotion · openclaw/openclaw@82b529a Docs: refresh agent instructions · openclaw/openclaw@5775fe2 fix(auth): serialize OAuth refresh across agents to fix #26322 (#67876) · openclaw/openclaw@8e79080 test: allow ollama public surface boundary test · openclaw/openclaw@7d4f1a6 Docs: add test performance guardrails · openclaw/openclaw@89706d3 Tests: restore context-engine usage proof · openclaw/openclaw@e4c4f95 Tests: slim context engine runtime coverage · openclaw/openclaw@74c198f ci: retry failed custom checkouts · openclaw/openclaw@0ee5baf test: trim duplicate provider auth onboarding cases · openclaw/openclaw@1ffc02e matrix: fix sessions_spawn --thread subagent session spawning (#67643) · openclaw/openclaw@1ce2596 test: reduce auth choice fixture churn · openclaw/openclaw@857b9cd test: mock health status config boundaries · openclaw/openclaw@9d5ab4a test: mock onboard config io boundary · openclaw/openclaw@299694d test: mock legacy state plugin boundaries · openclaw/openclaw@2713089 test: mock channel install boundaries · openclaw/openclaw@b945248 test: mock doctor preview channel boundaries · openclaw/openclaw@b1a3ad4
fix(google-meet): harden observe mode speech health (#732...
steipete · 2026-04-28 · via Recent Commits to openclaw:main

@@ -74,12 +74,21 @@ Check setup:

7474

openclaw googlemeet setup

7575

```

767677-

The setup output is meant to be agent-readable. It reports Chrome profile,

78-

audio bridge, node pinning, delayed realtime intro, and, when Twilio delegation

79-

is configured, whether the `voice-call` plugin and Twilio credentials are ready.

80-

Treat any `ok: false` check as a blocker before asking an agent to join.

81-

Use `openclaw googlemeet setup --json` for scripts or machine-readable output.

82-

Use `--transport chrome`, `--transport chrome-node`, or `--transport twilio`

77+

The setup output is meant to be agent-readable and mode-aware. It reports Chrome

78+

profile, node pinning, and, for realtime Chrome joins, the BlackHole/SoX audio

79+

bridge and delayed realtime intro checks. For observe-only joins, check the same

80+

transport with `--mode transcribe`; that mode skips realtime audio prerequisites

81+

because it does not listen through or speak through the bridge:

82+83+

```bash

84+

openclaw googlemeet setup --transport chrome-node --mode transcribe

85+

```

86+87+

When Twilio delegation is configured, setup also reports whether the

88+

`voice-call` plugin and Twilio credentials are ready. Treat any `ok: false`

89+

check as a blocker for the checked transport and mode before asking an agent to

90+

join. Use `openclaw googlemeet setup --json` for scripts or machine-readable

91+

output. Use `--transport chrome`, `--transport chrome-node`, or `--transport twilio`

8392

to preflight a specific transport before an agent tries it.

84938594

Join a meeting:

@@ -144,8 +153,12 @@ then share the returned `meetingUri`.

144153

```

145154146155

For an observe-only/browser-control join, set `"mode": "transcribe"`. That does

147-

not start the duplex realtime model bridge, so it will not talk back into the

148-

meeting.

156+

not start the duplex realtime model bridge, does not require BlackHole or SoX,

157+

and will not talk back into the meeting. Chrome joins in this mode also avoid

158+

OpenClaw's microphone/camera permission grant and avoid the Meet **Use

159+

microphone** path. If Meet shows an audio-choice interstitial, automation tries

160+

the no-microphone path and otherwise reports a manual action instead of opening

161+

the local microphone.

149162150163

During realtime sessions, `google_meet` status includes browser and audio bridge

151164

health such as `inCall`, `manualActionRequired`, `providerConnected`,

@@ -155,10 +168,10 @@ appears, browser automation handles it when it can. Login, host admission, and

155168

browser/OS permission prompts are reported as manual action with a reason and

156169

message for the agent to relay.

157170158-

Local Chrome joins through the signed-in OpenClaw browser profile. In Meet, pick

159-

`BlackHole 2ch` for the microphone/speaker path used by OpenClaw. For clean

160-

duplex audio, use separate virtual devices or a Loopback-style graph; a single

161-

BlackHole device is enough for a first smoke test but can echo.

171+

Local Chrome joins through the signed-in OpenClaw browser profile. Realtime mode

172+

requires `BlackHole 2ch` for the microphone/speaker path used by OpenClaw. For

173+

clean duplex audio, use separate virtual devices or a Loopback-style graph; a

174+

single BlackHole device is enough for a first smoke test but can echo.

162175163176

### Local gateway + Parallels Chrome

164177

@@ -286,13 +299,13 @@ phrase, and prints session health:

286299

openclaw googlemeet test-speech https://meet.google.com/abc-defg-hij

287300

```

288301289-

During join, OpenClaw browser automation fills the guest name, clicks Join/Ask

290-

to join, and accepts Meet's first-run "Use microphone" choice when that prompt

291-

appears. During browser-only meeting creation, it can also continue past the

292-

same prompt without microphone if Meet does not expose the use-microphone button.

293-

If the browser profile is not signed in, Meet is waiting for host

294-

admission, Chrome needs microphone/camera permission, or Meet is stuck on a

295-

prompt automation could not resolve, the join/test-speech result reports

302+

During realtime join, OpenClaw browser automation fills the guest name, clicks

303+

Join/Ask to join, and accepts Meet's first-run "Use microphone" choice when that

304+

prompt appears. During observe-only join or browser-only meeting creation, it

305+

continues past the same prompt without microphone when that choice is available.

306+

If the browser profile is not signed in, Meet is waiting for host admission,

307+

Chrome needs microphone/camera permission for a realtime join, or Meet is stuck

308+

on a prompt automation could not resolve, the join/test-speech result reports

296309

`manualActionRequired: true` with `manualActionReason` and

297310

`manualActionMessage`. Agents should stop retrying the join, report that exact

298311

message plus the current `browserUrl`/`browserTitle`, and retry only after the

@@ -979,7 +992,12 @@ Use `action: "status"` to list active sessions or inspect a session ID. Use

979992

`action: "speak"` with `sessionId` and `message` to make the realtime agent

980993

speak immediately. Use `action: "test_speech"` to create or reuse the session,

981994

trigger a known phrase, and return `inCall` health when the Chrome host can

982-

report it. Use `action: "leave"` to mark a session ended.

995+

report it. `test_speech` always forces `mode: "realtime"` and fails if asked to

996+

run in `mode: "transcribe"` because observe-only sessions intentionally cannot

997+

emit speech. Its `speechOutputVerified` result is based on realtime audio output

998+

bytes increasing during this test call, so a reused session with older audio

999+

does not count as a fresh successful speech check. Use `action: "leave"` to mark

1000+

a session ended.

98310019841002

`status` includes Chrome health when available:

9851003

@@ -1224,7 +1242,12 @@ openclaw googlemeet doctor

12241242

```

1225124312261244

Use `mode: "realtime"` for listen/talk-back. `mode: "transcribe"` intentionally

1227-

does not start the duplex realtime voice bridge.

1245+

does not start the duplex realtime voice bridge. `googlemeet test-speech`

1246+

always checks the realtime path and reports whether bridge output bytes were

1247+

observed for that invocation. If `speechOutputVerified` is false and

1248+

`speechOutputTimedOut` is true, the realtime provider may have accepted the

1249+

utterance but OpenClaw did not see new output bytes reach the Chrome audio

1250+

bridge.

1228125112291252

Also verify:

12301253

@@ -1317,7 +1340,7 @@ call still needs a participant path. This plugin keeps that boundary visible:

13171340

Chrome handles browser participation and local audio routing; Twilio handles

13181341

phone dial-in participation.

131913421320-

Chrome realtime mode needs either:

1343+

Chrome realtime mode needs `BlackHole 2ch` plus either:

1321134413221345

- `chrome.audioInputCommand` plus `chrome.audioOutputCommand`: OpenClaw owns the

13231346

realtime model bridge and pipes audio in `chrome.audioFormat` between those