feat(brain): wire STREAM_BROWSER real-time modes into the reply engine (browser + Gemini)
Completes the two info modes in the Python brain: - config.py: read STREAM_BROWSER / GEMINI_API_KEY / GEMINI_MODEL from env into Settings (stream_browser, gemini_api_key, gemini_model). Verified load_settings reads both modes. - realtime_search.py: two fail-open backends returning the same fenced UNTRUSTED-WEB-EXTRACT envelope: browser_search() shells the Node CDP helper to drive the on-screen Chrome (visible on the broadcast); gemini_search() calls the Gemini REST API with google_search grounding. - web_search.run(): routes by mode before the DDG cascade (true->browser, false->Gemini), falling through to DDG/Brave/Wikipedia on any miss. - browse_and_play tool: plays a YouTube video on the shared screen (true mode only); registered in the tool registry. - specs + docs/llm_contexts.md updated (new Gemini LLM context); CLAUDE.md spec registry updated. Verified live against the running Chrome: true-mode webSearch returned real Google results for "오늘 서울 날씨", browseAndPlay played the IU 밤편지 MV, and false-mode degrades gracefully on a bad/absent key. A valid GEMINI_API_KEY is still needed to confirm the real Gemini grounding output. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -5,6 +5,22 @@ reply LLM to ground its answer in. Used for any query that needs current,
|
||||
external, or entity-specific information the assistant can't derive from
|
||||
memory.
|
||||
|
||||
### Real-time info routing (`STREAM_BROWSER`)
|
||||
|
||||
Before the DuckDuckGo cascade, `run()` routes by the env flag `STREAM_BROWSER`
|
||||
(mirrored into `cfg.stream_browser`; see `docs/stream_browser_modes.md` and
|
||||
`realtime_search.py`):
|
||||
|
||||
- **true** (default): `browser_search()` drives the on-screen Chrome (Node CDP
|
||||
helper `bot/scripts/stream-test/browse-search.mjs`) to Google-search the
|
||||
query, so the action is visible on the Go-Live broadcast.
|
||||
- **false**: `gemini_search()` answers via the Gemini API (`google_search`
|
||||
grounding), keyed by `GEMINI_API_KEY` / `GEMINI_MODEL`.
|
||||
|
||||
Both return the same fenced `UNTRUSTED WEB EXTRACT` envelope and are fail-open:
|
||||
if the route yields nothing (Chrome down, no/invalid key, error) the tool falls
|
||||
through to the normal DDG / Brave / Wikipedia cascade below.
|
||||
|
||||
### Pipeline
|
||||
|
||||
1. **Instant answer**: hit `https://api.duckduckgo.com/` for the Abstract /
|
||||
|
||||
Reference in New Issue
Block a user