evOo-local/docs/GROUP-CONVERSATIONS.md
cynarAI 6c7eed7580 Initial clean evOo-local from f00577b
Fresh history cut from cynarAI/evoo antigravity-handoff/project-timeline
(Voice First + project timeline). Brand docs/titles as evOo; keep @rakazo/*
packages as tech debt. Excludes node_modules, caches, secrets, voice blobs.
2026-09-20 17:15:16 +02:00

2.8 KiB
Raw Blame History

Gruppenunterhaltungen — fun factor & chemistry

Das Ganze ist mehr als die Summe seiner Teile. The product must make the ensemble feel stronger than any single Oo — emergent capability from distinct specialists, not a mega-agent wearing many hats.

When strong Oo personalities meet, it should get funny sometimes. Fun factor is essential. Group chats must spark — character friction, banter, chemistry — not a sterile multi-bot committee.

Product bar

Do Don't
Playful disagreement when useful Corporate-dull consensus voice
Distinct personas riffing in-lane Same tone from every bot
Useful outcomes after the spark Chaos for its own sake
Grandma-simple entry (see PERSONA-SELECTION) Jargon gate or “meeting mode” UI

Useful + lively. Banter serves the user; it is not performative noise.

Persona prompts & group dynamics

Group roster context (renderGroupMembersContext in packages/core/src/bot-messages.ts) tells each Oo:

  • Strong personalities may disagree playfully — humor and chemistry welcome when it helps.
  • Never sterile committee tone; never condescending Wunderwuzzi.
  • One bot owns each stage; handoffs are baton passes, not ping-pong reports.

When writing specialist instructions: allow geek-peer depth and respectful pushback between specialists; defer out-of-lane work, don’t flatten voice.

Stage & ensemble (OoGroupStage)

Signal Stage
Active speaker Full hero — who has the floor
Peer reply / riff extractGroupSpark → Riffing phase label + spark subtitle (same stage grammar as 1:1)
Multi-working Higher bloom energy; subtitle names count on the floor
Handoff Awareness strip + handoff sound — baton pass, not boardroom

Ensemble row: working pulse only — no extra chrome (mantra: weniger ist mehr). Chemistry lives in copy + sound, not one-off UI.

Sound & motion

Cue When
group-spark Peer Oo reply in group thread — lighter, playful staccato
handoff Stage ownership transfer
work-complete Run settles — calm exhale

Respects prefers-reduced-motion: reduce. Lively ≠ loud; energy caps stay procedural.

Implementation map

Layer Path
Spark detection apps/web/src/lib/group-stage.ts — extractGroupSpark, resolveRiffingBotId
Group narration apps/web/src/lib/bot-persona.ts — narrateGroupSpark
Stage UI apps/web/src/components/stage/OoStage.tsx — OoGroupStage, StageEnsemble
Sound apps/web/src/lib/oo-sound.ts — group-spark
Shell wiring apps/web/src/pages/Shell.tsx — play spark on bot_message_received in groups
Bot prompts packages/core/src/bot-messages.ts