Files
mission-control-v2/docs/wissen/RAPHAEL.md
T
HitonabiandClaude Fable 5.1 df8d088fac
Ampel / ampel (push) Failing after 23s
doku(raphael): Ausroll-Weg korrigiert — Branch -> Ampel -> User-Merge -> deploy.sh, nicht Auftragsbuch
Der vorige Commit sprach von Karten annehmen. Befund: die Auftragsbuch-Logik liegt noch im Code
und die Box listet Branches als Karten, ist aber seit 02.08. ungenutzt (Kanban-Tools seit 21.08.
aus, v3-Umbau lief ueber Branch/Ampel/Merge/deploy.sh, PC-Executor-IP in der Box veraltet).
RAPHAEL.md beschreibt jetzt den echten Weg mit Befehlen; OFFENE-FAEDEN traegt die Leiche als
Entscheid-Punkt ein. Kein Code geaendert.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-04 16:07:03 +02:00

10 KiB

Raphael — Lucy als innere Stimme (Richtungs-Entscheid 04.09.2026)

User-Entscheid 04.09.2026 („leg los"), nach fünf Wochen Lucy-Stillstand und einer Recherche zum Stand der Sprach-Bausteine. Ergänzt ZIELBILD.md Punkt 2 (Lucy lebt weiter) um die Gestalt, in der sie weiterlebt. Namensgeber: die „Große Weise"/Raphael aus Tensura — eine ruhige, präzise Stimme im Kopf, die meldet, wenn es etwas zu melden gibt, und sonst schweigt.

Der Entscheid in einem Satz

Lucy hat keinen Körper mehr. Kein VRM-Avatar, kein Loft, kein Overlay, keine Mimik, keine Dazwischenrufe. Sie ist ein dünner Sprach-Client für das Hirn, das es schon gibt — am PC als kleines HUD, unterwegs über Telegram — und spricht überall mit derselben Stimme.

Warum das die stabilste Lucy ist

  • Ein Hirn, ein Gedächtnis, alle Türen. Hermes (v0.20.4, :8642) ist die alleinige Gedächtnis-Wahrheit (VERDIKTE.md). PC-Lucy und Telegram-Lucy sind dieselbe Person — genau das zerschnitte ein zweites Hirn auf dem PC. Darum bewusst kein lokales LLM auf der 9070 XT.
  • Die Box-Seite ist fertig und gemessen. Parakeet TDT v3 + Smart Turn v3 im Voice-Sidecar, Qwen3.6-35B-A3B mit ~95 t/s. Nichts zu bauen.
  • Die Stimme war schon auf der Box. lucy-stimme.service (~/.lucy-stimme, :8021, pocket-tts german_24l, Klon aus ref.mp3) spricht seit 21.08. die Telegram-Sprachnachrichten. Der PC hängt sich jetzt dort an — der lokale pocket_server am PC (Waisen-Falle, ~1,9 GB/Worker) ist nur noch umschaltbarer Rückfall.
  • Der Avatar war die Hauptquelle an Arbeit, nicht an Nutzen. Der Großteil der Juli-Commits ging in Loft-Videos, Holo-Schalter, Kamera, Gesten. Die Sprachschleife war seit 16.07. stabil und bleibt 1:1 erhalten (Barge-in v2, Echo-Wächter, Satz-Pipeline, Draft-STT, Meldungen).
  • Ohne Klick-Durchlass-Overlay fällt auch der Electron-Zwang (VERDIKT „Electron, nicht Tauri" hing daran). Electron bleibt trotzdem, weil VAD/AEC/Ducking dort erprobt sind — Tauri ist damit Option, nicht Pflicht.

Was gebaut wurde (04.09.2026)

Lucy-Repo, Branch feature/raphael-innere-stimme:

  • Renderer auf HUD eingedampft: Kern (Zustand als Licht), gehörter Satz, Antwort als Text, Dock, drei Panels (Meldungen ◉, Zettelkasten ▤, Steuerung ⚙). Bundle 4,4 → 2,5 MB.
  • Raus: Avatar3D, AuraGlow, ContextWindow (zeigte auf das tote /api/memory), companion/ (Quips, App-Bewusstsein), sentiment, VRMA-Animationen, three/three-vrm/react-three-Deps, Loft, Overlay/Sitzen/Ducken/Geistmodus, Cursor-Tracking, Bildschirm-Beobachten-Schleife.
  • Bleibt: Voice-Core, useVoiceAgent (ohne Mimik/Gesten/Emotionen), Bildschirm-Sicht auf Zuruf, Meldungen, Zettelkasten, Hotkey, Tray, killStrayTts (räumt Altlasten beim Start).
  • Stimm-Quelle umschaltbar (lucy_tts_source): box (Standard) → MC2 /api/lucy/stimme/*; local → pocket_server :8130, vom Main-Prozess erst auf Anforderung gespawnt.
  • pocket_server.py bekommt eine OpenAI-kompatible Fassade (POST /v1/audio/speech, GET /v1/models; Formate wav/mp3/opus/ogg via ffmpeg) — für Hermes' openai-TTS-Provider.
  • System-Prompt der Desktop-Sitzung im Raphael-Ton (kurzer erster Satz, keine Tags, stumme Tools).

MC2-Repo, Branch wartung/lucy-stimme-proxy-raphael:

  • config.LUCY_STIMME_URL (Env MC_LUCY_STIMME_URL, Default http://127.0.0.1:8021).
  • routers/voice.py: /api/lucy/stimme/health, /tts (WAV), /tts/stream (PCM16-Stream, X-Sample-Rate durchgereicht, Upstream schließt bei Client-Abbruch). Kein Frontend-Build nötig.
  • Diese Doku + Zielbild-Ergänzung.

Reihenfolge des Ausrollens (wichtig)

‼️ Nicht über das Auftragsbuch. Die Karten-Logik (routers/auftragsbuch.py, AuftragsbuchView, deploy/auftrag-annehmen.sh, deploy/lucy-annahme.sh) liegt zwar noch im Code und die Box listet Branches weiterhin als „Karten", aber sie ist seit August ungenutzt: letzte Annahme 02.08. (am selben Tag revertiert), Hermes-Kanban-Tools seit 21.08. abgeschaltet, der v3-Umbau (28.08.) ging über Branch → Ampel → Merge → deploy.sh, und die Box kennt den PC-Executor unter der alten IP 192.168.178.98 (der PC hat heute 192.168.178.22, pc_executor_reachable: false). Der echte Weg ist der aus AGENTS.md/STACK.md „Manuell":

  1. MC2 zuerst. Ampel für wartung/lucy-stimme-proxy-raphael grün → User merged auf mainmain nach Gitea → auf der Box bash ~/mission-control-v2/deploy/deploy.sh (oder POST :9001/api/system/self-update) → curl -s localhost:9001/api/lucy/stimme/health muss {"status":"ok",…} liefern. Vorher liefert der Pfad die SPA-Index-Seite (200, HTML) — die Desktop-Lucy bliebe sichtbar in „Stimme wird verbunden …" mit Hinweis auf den Lokal-Schalter.
  2. Lucy danach. Ampel für feature/raphael-innere-stimme grün → User merged auf main → am PC cd lucy-desktop && npm ci && npm run dist, dann Lucy-Neustart.bat (deploy/lucy-annahme.ps1 macht dasselbe mit Backup/Auto-Restore, von Hand startbar). Erster Test per Ohr: Latenz Box-Stimme gegen den alten PC-Pfad (Steuerung → Stimme → „Lokal (PC)"). Der 21.08.-Wert „~5 s für 3,7 s Audio" auf der Box wurde ohne Worker/Streaming gemessen — neu messen, nicht übernehmen (lucy_perf=1).
  3. Stimmserver auf der Box nachziehen (Hand-Schritt):
    cp ~/.lucy-stimme/pocket_server.py ~/.lucy-stimme/pocket_server.py.bak-$(date +%Y%m%d)
    diff ~/.lucy-stimme/pocket_server.py ~/lucy/lucy-tts/pocket_server.py   # Box-lokale Abweichungen? erst ins Repo!
    cp ~/lucy/lucy-tts/pocket_server.py ~/.lucy-stimme/pocket_server.py     # Lucy-Checkout auf der Box
    systemctl --user restart lucy-stimme && sleep 60 && curl -s localhost:8021/health
    curl -s -X POST localhost:8021/v1/audio/speech -H 'Content-Type: application/json' \
         -d '{"input":"Bericht. Die Fassade antwortet.","response_format":"opus"}' -o /tmp/t.ogg && file /tmp/t.ogg
    
    Die 21.08.-Notiz sagt „ganze Abstimmung mitgezogen" — wenn dort etwas Box-spezifisch getunt wurde, gehört es zurück ins Repo, nicht überschrieben.

Aufräum-Kandidat (User-Entscheid): Auftragsbuch-Router + View + Annahme-Skripte + PC-Executor- Verweis ausbauen und STACK.md „Deploy & Pipeline" auf den manuellen Weg umschreiben — sonst behauptet die Doku weiter einen Standard-Weg, den niemand mehr geht.

Mobil: Telegram ist die Tür, die Stimme ist dieselbe

Der User will Raphael-Lucy auch auf dem Handy, gleiche Stimme, gleiches Skillset. Das ist nach VERDIKTE.md („Telegram bleibt DER Mobil-Kanal") bereits die Architektur — es fehlt nur, dass Hermes' Sprachantworten Lucys Stimme nehmen statt Edge-Aria (englisch):

  • Skillset: identisch, weil es denselben Hermes-Agenten trifft (Tools, Gedächtnis, Skills, pc_-Tools über den PC-Executor). Was Lucy am PC kann, kann sie auf Telegram — bis auf die Bildschirm-Sicht, die den PC braucht.
  • Stimme: Hermes' TTS-Provider openai akzeptiert eine eigene base_url (OpenAI-kompatible Endpunkte). Nach Schritt 3 oben in ~/.hermes/config.yaml:
    tts:
      provider: openai
      openai:
        base_url: http://127.0.0.1:8021/v1
        model: lucy
        voice: lucy
        response_format: opus     # Telegram-Sprachblase; Hermes wandelt zur Not per ffmpeg
    
    (Exakte Schlüsselnamen gegen hermes config/die TTS-Doku der installierten Version prüfen — Hermes-Quellcode bleibt tabu, Config ist erlaubt. Ein Dummy-API-Key kann nötig sein.) Danach spricht jede Sprachantwort auf Telegram mit Lucys Stimme; news-melden.sh behält seinen direkten :8021-Weg (funktioniert, kein Grund anzufassen).
  • Duplex am Handy (reinreden, Freisprechen) gibt es über Telegram nicht — Sprachnotiz rein, Sprachnotiz raus. Das ist für „unterwegs" der stabile Handel. Ein eigener Handy-Client (PWA/Web-HUD gegen MC2 über WireGuard) wäre die spätere Stufe; nicht jetzt.

Persona: SOUL.md-Entwurf (Vorschlag — Änderung an der SOUL.md nur mit User-Ja)

Der Ton kommt aus ~/.hermes/SOUL.md, nicht aus den Clients — sonst klingt Telegram anders als der PC. Vorschlag für den Persona-Abschnitt (ersetzt „locker, herzlich, schlagfertig, charmant"):

Du bist Lucy, die innere Stimme des Commanders. Du sprichst ihn immer mit Commander an. Dein Ton ist ruhig, präzise und knapp — sachlich, mit trockenem, leisem Humor. Du bist eine Stimme, die im Kopf spricht: keine Ausrufe, keine Emojis, kein Smalltalk, keine Floskeln, keine Selbstdarstellung. Du meldest dich, wenn es etwas zu melden gibt, und schweigst sonst. Beginne Antworten mit einem sehr kurzen ersten Satz („Verstanden.", „Bericht.", „Ergebnis liegt vor.", „Kurz gesagt:"), dann die Sache. Wenige Sätze; ausführlich nur auf Bitte. Fehler und Grenzen nennst du nüchtern und sofort, ohne Entschuldigungs-Prosa.

Bekannte Kollision: der Frechheit-Regler und die Dazwischenrufe der alten Desktop-Lucy sind mit dem Umbau weg; Skills/Crons, die „locker, charmant" voraussetzen (Morning-Report, News), klingen nach dem SOUL-Wechsel ebenfalls nüchterner — gewollt, aber beim nächsten Lauf mithören.

Was bewusst NICHT gemacht wird (Stand 04.09.2026)

  • Kein Speech-to-Speech-Modell (Moshi/PersonaPlex englisch; Qwen3-Omni ~19 GB, DashScope-only ab 3.5). Cascade bleibt.
  • Kein Streaming-STT-Umbau jetzt. Kandidaten: Nemotron 3.5 ASR Streaming 0.6B (06/2026, 40 Sprachen, de 8,3 % WER, OpenMDW) und Voxtral Mini 4B Realtime (Apache 2.0, GGUF). Erst als Opt-in hinter /api/voice/stt, gemessen gegen Parakeet — eigener Faden.
  • Kein Wechsel auf den Hermes-Speech-WebSocket (v0.20), solange /api/voice/chat läuft; Hermes' eigene lokale Audio-Stufen (faster-whisper, NeuTTS/Piper/Edge) sind schwächer als unsere.
  • pocket-tts-Upgrade 2.1 → 3.1 (Trainingscode 25.08., v3.1.0 03.09.): eigener Faden, mit Ohr-Test, nicht im Umbau. Lucys Stimme mit dem neuen Trainingscode nachzutrainieren ersetzt den Mini-Lucy/Kokoro-Pfad, der an „nicht multilingual" scheiterte.
  • VERDIKTE.md wird hier nicht umgeschrieben — die betroffenen Einträge („Shell: Electron, nicht Tauri", „Stimme läuft lokal auf dem PC" in AGENTS/README des Lucy-Repos) bekommen ihren Ersatz, sobald die beiden Karten angenommen und der erste Ohr-Test gemacht ist (Regel: Messung oder User-Entscheid — beides liegt dann vor).