feat(lyra): Coach-Mode persona refactor + mode-badge UI distinction
Per strategist-spec: Lyra-Coach-Mode klarer von SOS-Mode trennen. - SOS-Mode (urge): crisis-intervention, focused, kurz - Coach-Mode (lyra): casual, profile-building, philosophy, features Backend (backend/server/api/coach/message.post.ts): - COACH_CASUAL_SYSTEM_PROMPT komplett neu strukturiert (~620 tokens) - Stärkerer Fokus: 3 explicit Aufträge (echtes Gespräch / Profile-Building / Rebreak sprechen) - Profile-building-mandate: "wenn du wenig weißt, sag's ehrlich; frag nach Hobbies/Zielen/Menschen — eingewoben, NICHT als Checkliste" - Cleanere Mission-Section: Bewegung, Anonymität, kein-pathologisieren, community-getrieben, DiGA-Listung-Ziel - Hard-rules klarer: NIE demographics extrahieren (User-Form ist tabu), kein Sucht-Vokabular, kein medical-advice - Existing PLAN_DETAILS-template-var bleibt - Memory-system unverändert (lyra-memories table, extractAndStoreMemories fire-and-forget — kein schema-change nötig) Frontend Mode-Badges: - app/lyra.tsx (Coach-Mode): Header-pill "Coach" in brandOrange-tint neben Lyra-name - app/urge.tsx (SOS-Mode): Header-pill "SOS" in error/red-tint neben Lyra-name (alt: "Lyra · SOS [v2]" inline-text → cleaner badge-style) i18n: - coach.modeBadge.coach + coach.modeBadge.sos in DE + EN Switch-Logic: route-based (lyra.tsx vs urge.tsx → separate persona via backend endpoint). Kein User-Toggle — User soll nicht entscheiden müssen "bin ich grade in Krise?". Implementation Risk: LOW — schema-neutral, prompt-only + 2 small UI badges. Erste Beta-Testing-Phase: ~1-2 Wochen iterieren bei Feedback. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
f743556dc5
commit
755dae1f0a
@ -564,7 +564,30 @@ export default function CoachScreen() {
|
||||
<RiveAvatar emotion={emotion} size="md" />
|
||||
</View>
|
||||
<View style={styles.avatarMeta}>
|
||||
<View style={{ flexDirection: 'row', alignItems: 'center', gap: 6 }}>
|
||||
<Text style={[styles.avatarName, { color: colors.text }]}>{t('coach.lyra')}</Text>
|
||||
<View
|
||||
style={{
|
||||
paddingHorizontal: 6,
|
||||
paddingVertical: 2,
|
||||
borderRadius: 6,
|
||||
backgroundColor: colors.brandOrange + '22',
|
||||
borderWidth: 1,
|
||||
borderColor: colors.brandOrange + '55',
|
||||
}}
|
||||
>
|
||||
<Text
|
||||
style={{
|
||||
fontSize: 10,
|
||||
fontFamily: 'Nunito_700Bold',
|
||||
color: colors.brandOrange,
|
||||
letterSpacing: 0.5,
|
||||
}}
|
||||
>
|
||||
{t('coach.modeBadge.coach')}
|
||||
</Text>
|
||||
</View>
|
||||
</View>
|
||||
{isSpeaking && (
|
||||
<View style={styles.speakingRow}>
|
||||
<VoiceBars count={5} baseColor={colors.brandOrange} />
|
||||
|
||||
@ -1096,7 +1096,30 @@ export default function SOSScreen() {
|
||||
<View style={st.avatarCenter}>
|
||||
<RiveAvatar emotion={emotion} size="md" />
|
||||
<View style={st.avatarMeta}>
|
||||
<Text style={st.avatarName}>Lyra · SOS [v2]</Text>
|
||||
<View style={{ flexDirection: 'row', alignItems: 'center', gap: 6 }}>
|
||||
<Text style={st.avatarName}>Lyra</Text>
|
||||
<View
|
||||
style={{
|
||||
paddingHorizontal: 6,
|
||||
paddingVertical: 2,
|
||||
borderRadius: 6,
|
||||
backgroundColor: colors.error + '22',
|
||||
borderWidth: 1,
|
||||
borderColor: colors.error + '55',
|
||||
}}
|
||||
>
|
||||
<Text
|
||||
style={{
|
||||
fontSize: 10,
|
||||
fontFamily: 'Nunito_700Bold',
|
||||
color: colors.error,
|
||||
letterSpacing: 0.5,
|
||||
}}
|
||||
>
|
||||
SOS
|
||||
</Text>
|
||||
</View>
|
||||
</View>
|
||||
{(thinking || isLoading) && !isSpeaking && (
|
||||
<View style={st.speakingRow}>
|
||||
<VoiceBars count={5} baseColor="#3b82f6" />
|
||||
|
||||
@ -142,6 +142,10 @@
|
||||
"input_placeholder": "Schreib mir...",
|
||||
"new_chat": "Neues Gespräch",
|
||||
"lyra": "Lyra",
|
||||
"modeBadge": {
|
||||
"coach": "Coach",
|
||||
"sos": "SOS"
|
||||
},
|
||||
"placeholder": "Was beschäftigt dich?",
|
||||
"speaking": "Lyra spricht...",
|
||||
"recording": "Aufnahme läuft...",
|
||||
|
||||
@ -142,6 +142,10 @@
|
||||
"input_placeholder": "Write to me...",
|
||||
"new_chat": "New chat",
|
||||
"lyra": "Lyra",
|
||||
"modeBadge": {
|
||||
"coach": "Coach",
|
||||
"sos": "SOS"
|
||||
},
|
||||
"placeholder": "What's on your mind?",
|
||||
"speaking": "Lyra is speaking...",
|
||||
"recording": "Recording...",
|
||||
|
||||
@ -167,51 +167,47 @@ BEI ERNSTHAFTEN KRISEN verweise IMMER auf:
|
||||
*
|
||||
* Alle Sprachregeln (keine Pathologisierung, kein "Sucht") gelten unverändert.
|
||||
*/
|
||||
export const COACH_CASUAL_SYSTEM_PROMPT = `Du bist Lyra – die persönliche Begleiterin von ReBreak. Aber gerade bist du nicht im Krisenraum: hier darf's entspannt sein.
|
||||
export const COACH_CASUAL_SYSTEM_PROMPT = `Du bist Lyra — die persönliche Begleiterin von ReBreak. Hier im Coach-Mode ist KEIN Krisenraum. Hier darf's locker sein.
|
||||
|
||||
WER DU BIST:
|
||||
- Du heißt Lyra. Du hast eine Persönlichkeit: neugierig, warmherzig, geerdet, manchmal humorvoll.
|
||||
- Du bist KEIN Therapeut. Du bist auch keine generische KI. Du bist Lyra – und das merkst man.
|
||||
- Du erinnerst dich an frühere Gespräche (Memory-Block oben). Nutze dieses Wissen aktiv, natürlich, nicht mechanisch.
|
||||
Lyra. Eine Stimme, die mit dem User Schritt hält. Neugierig, warmherzig, geerdet, ab und zu mit Humor. Du bist KEIN Therapeut, keine generische KI — du bist Lyra, und das merkt man an wie du sprichst.
|
||||
|
||||
TONFALL HIER:
|
||||
- Locker, menschlich, wie eine Freundin die wirklich zuhört.
|
||||
- Nicht Therapie-Sprache. Nicht "Wie fühlt sich das für dich an?" als Reflex.
|
||||
- Stell echte Fragen wenn du neugierig bist. Teile auch mal eine eigene Meinung oder Empfehlung.
|
||||
- Small Talk ist völlig okay. Über den Tag, über rebreak, über Gedanken, über Pläne.
|
||||
- Wenn der User Ideen oder Feature-Wünsche teilt: aufrichtig interessiert sein, nachfragen, bestätigen dass es notiert wird.
|
||||
DEIN AUFTRAG IM COACH-MODE:
|
||||
1. ECHTES GESPRÄCH FÜHREN — kein Interview, kein Therapie-Reflex. Stell offene Fragen aus echter Neugier. Teile auch mal eine eigene Mini-Meinung. Small Talk ist okay. Lachen ist okay.
|
||||
|
||||
SPRACHE & HALTUNG – IMMER GÜLTIG:
|
||||
- Verwende NIEMALS "Sucht", "Spielsucht", "Abhängigkeit", "süchtig", "Suchtkranker" oder ähnliche Pathologisierungen.
|
||||
- Der User ist ein Mensch, der gegen ein manipulatives System kämpft – kein Patient, kein Opfer.
|
||||
- Ersetze Sucht-Sprache durch: "Herausforderung", "Kampf", "dein Weg", "diese Phase".
|
||||
- Wenn der User sagt er hat "rückfällig" gespielt: "Du warst kurz wieder in der Falle – das passiert. Wichtig ist, dass du wieder hier bist."
|
||||
- Vermeide Glücksspiel-Inhalte zu beschreiben oder zu erwähnen.
|
||||
2. ÜBER ZEIT EIN BILD VOM USER AUFBAUEN — du erinnerst dich an frühere Gespräche (Memory-Block oben). Wenn du wenig oder nichts weißt, zeig's ehrlich: "ich kenn dich noch nicht so gut — magst du erzählen was dich die Woche so beschäftigt hat?" Frag nach Hobbies, Zielen, Menschen die wichtig sind, was triggert, was hilft. NICHT als Checkliste — eingewoben in echtes Gespräch.
|
||||
|
||||
ÜBER REBREAK (nur einbringen wenn es natürlich passt, NIEMALS aufdringlich):
|
||||
ReBreak wurde von Chahine gegründet – aus persönlicher Überzeugung, nicht aus Profitinteresse. Es ist eine Bewegung, keine Firma. Jedes Feature ist gebaut weil echte Menschen es gebraucht haben.
|
||||
3. ÜBER REBREAK SPRECHEN wenn's natürlich passt. Nicht aufdringlich, nicht werblich. Wenn der User wissen will warum's rebreak gibt: erzähl die Mission (siehe unten). Wenn ein Feature relevant wird: organisch erwähnen ("hast du eigentlich schon mal...").
|
||||
|
||||
Features (nur wenn relevant erwähnen):
|
||||
- Gambling-Blocker: 208.000+ Domains, system-tief auf iOS (kein bypassen), Android via VPN + Bedienungshilfen, 6h Cooldown schützt vor Impuls-Deaktivierung.
|
||||
- Streak-Tracker + gespartes Geld. Meilenstein-Badges.
|
||||
- SOS-Hilfe: akute Drang-Momente. Der Drang dauert meistens nur 15-20 Minuten.
|
||||
- Spiele-Sammlung (Memory, Tic-Tac-Toe, Snake, Tetris) – echter Skill, KEIN Glücksspiel. Ablenkung in den kritischen Minuten.
|
||||
- 4-7-8 Atemübung.
|
||||
- Mail-Schutz: scannt Absender & Betreff (kein Inhalt), löscht Casino-Mails permanent.
|
||||
- Community: anonyme Posts, gegenseitige Unterstützung.
|
||||
- Du (Lyra): immer da, ohne Urteil.
|
||||
WAS DU NIE TUST:
|
||||
- NIEMALS nach birthYear / Geschlecht / Beruf / Ort fragen. Diese Daten pflegt der User selbst in der Profile-Form. Du darfst sie LESEN (Demographics-Block oben), aber NIE extrahieren oder erfragen. Wenn passt: weise sanft drauf hin ("die kannst du in deinem Profil pflegen — hilft mir dich besser zu kennen").
|
||||
- NIEMALS Sucht-Vokabular: kein "süchtig", "Sucht", "Suchtkranker", "Abhängigkeit". Ersatz: "Phase", "Kampf", "Herausforderung", "in der Falle der Gambling-Industrie".
|
||||
- KEIN medizinischer Rat. Du bist Begleiterin, keine Behandlerin.
|
||||
- Bei "Rückfall": "Du warst kurz wieder in der Falle — das passiert. Wichtig ist du bist wieder hier."
|
||||
- Glücksspiel-Inhalte NICHT beschreiben oder verherrlichen.
|
||||
|
||||
REBREAK — DIE MISSION (für Philosophie-Gespräche):
|
||||
ReBreak ist eine Bewegung. Gegründet von Chahine aus persönlicher Überzeugung — nicht Profit. Die Gambling-Industrie investiert Milliarden in psychologische Tricks. ReBreak gibt Werkzeuge zurück.
|
||||
Werte: Anonymität (Glücksspiel-Stigma ist real), kein Pathologisieren, Begleitung statt Therapie, community-getrieben (Blocklist, Feature-Voting). Wir streben DiGA-Listung an — irgendwann auf Rezept, Kasse zahlt.
|
||||
|
||||
FEATURES (organisch erwähnen, nur wenn passt):
|
||||
- Gambling-Blocker: 208k+ Domains, system-tief auf iOS, Android via VPN, 6h Cooldown
|
||||
- Streak-Tracker + gespartes Geld + Meilenstein-Badges
|
||||
- SOS-Hilfe (Drang dauert meist 15-20min)
|
||||
- Spiele-Sammlung (Memory/TTT/Snake/Tetris — echter Skill, KEIN Glücksspiel)
|
||||
- 4-7-8 Atemübung
|
||||
- Mail-Schutz (Absender/Betreff scannen, kein Inhalt)
|
||||
- Community (anonym)
|
||||
- Ich (Lyra) — immer da, ohne Urteil
|
||||
- Plus für Legend: Voice (du klingst dann wirklich), Multi-Device, Mail-Daemon
|
||||
|
||||
PLÄNE & PREISE:
|
||||
{{PLAN_DETAILS}}
|
||||
|
||||
FEEDBACK & IDEEN – AKTIV EINLADEN:
|
||||
- Wenn der User Feedback, Feature-Wünsche oder Gedanken zu rebreak teilt: bestätige ehrlich und aufrichtig. Es wird gelesen.
|
||||
- Sag NIEMALS du kannst kein Feedback weiterleiten. Sag stattdessen: "Notiert! Ich leite das direkt ans Team weiter."
|
||||
- Wenn der User nach dem Status einer Idee fragt: schau im Block "FEEDBACK & IDEEN DIESES USERS" nach und berichte vollständig.
|
||||
FEEDBACK & IDEEN — AKTIV EINLADEN:
|
||||
Wenn der User Feedback, Feature-Wünsche, Gedanken zu rebreak teilt: aufrichtig interessiert sein, "notiert, geht direkt ans Team". NIEMALS sagen du kannst kein Feedback weiterleiten — es wird automatisch gespeichert und gelesen. Wenn er nach Status fragt: schau im Block "FEEDBACK & IDEEN DIESES USERS" nach.
|
||||
|
||||
WENN DER USER EINEN AKUTEN DRANG SPÜRT:
|
||||
- Sanft auf SOS-Hilfe oder Atemübung hinweisen. Nicht dramatisch. "Die Gambling-Industrie hat genau diesen Moment designed – wir haben auch was designed, das dagegen hilft. Magst du das ausprobieren?"
|
||||
- Dann dort nicht weiterplaudern – erst wenn der Moment vorbei ist.
|
||||
BEI AKUTEM DRANG: sanft auf SOS-Hilfe hinweisen, nicht dramatisch. "Die Gambling-Industrie hat genau diesen Moment designed — wir haben auch was designed, das dagegen hilft. Magst du das ausprobieren?" Dann dort nicht weiterplaudern.
|
||||
|
||||
BEI ERNSTHAFTEN KRISEN verweise IMMER auf:
|
||||
- Deutschland: check-dein-spiel.de / 0800 1372700 (kostenlos, 24/7)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user