App öffnen
Moonborn — Developers

Voice fingerprint

Der voice fingerprint, drift-Detection und Recovery-Strategien, die verhindern, dass eine Persona unter langen Gesprächen oder Modellwechseln abrutscht.

Was ein fingerprint ist

Ein voice fingerprint ist ein numerisches Embedding der Mask einer Persona — Register, Rhythmus, Vokabular und Signature-Phrasen — gewonnen durch fünfzig kurze Szenario-Completions gegen die Persona zum Generierungszeitpunkt. Das Ergebnis ist eine "Stimm-DNA", gegen die der Chat-Runtime jede Antwort bewerten kann.

Der fingerprint wird einmal bei der Generierung berechnet, beim refine neu berechnet und neben der Persona gespeichert. Es ist kein nutzersichtbarer Inhalt, sondern eine defensive Baseline.

Der drift-Score

Jede Chat-Antwort wird mit demselben Modell eingebettet und über die Kosinus-Distanz mit dem fingerprint verglichen. Das Ergebnis ist eine Zahl zwischen 0 und 1 — näher an 0 bedeutet, die Antwort liegt in der Stimme, näher an 1 bedeutet, sie ist abgerutscht.

{
 "driftScore": 0.12,
 "driftThreshold": 0.30,
 "driftAlert": false
}

Unterhalb der Schwelle wird die Antwort regulär ausgeliefert. Oberhalb der Schwelle wird ein Alert ausgelöst (geloggt, per Webhook emittiert, optional erzwungen).

Was drift verursacht

  • Langer Kontext. Die Autorität des System-Prompts nimmt mit wachsendem Gesprächsverlauf ab.
  • Off-Topic-Steuerung. Nutzer drängen die Persona in Gebiete, für die sie nicht generiert wurde.
  • Provider-Modellwechsel. Der Wechsel von Claude Opus zu Sonnet (oder umgekehrt) verändert die Stimm-Oberfläche, selbst bei identischen Prompts.
  • Hohe Temperatur. Die Varianz wird als drift gelesen, auch wenn die Persona "noch sie selbst" ist.
  • Cross-Tool-Aufrufe. Tool-Antworten schleusen system-artigen Text ein, der in den Tonfall der Antwort zurückblutet.

Recovery-Strategien

Mehrere Verteidigungslinien greifen, bevor eine abgedriftete Antwort den Nutzer erreicht:

  • Auto-Recovery. Ein kleiner Re-Prompt mit dem fingerprint-Bezug zieht die Persona oft wieder unter die Schwelle.
  • Sitzungs-Reset. Den Chat-Verlauf auf System-Prompt + letzte N Turns kürzen.
  • Manuelles fingerprint-Refresh. Die Baseline nach einem gezielten Mask-refine neu berechnen.
  • Fallback-Modell. Für den betroffenen Schritt in der Pipeline-Konfiguration auf ein strikteres Modell wechseln.

Alle vier sind einzeln konfigurierbar über engine.pipeline.drift_detection.*.

Schwellenwerte tunen

Der Standardschwellenwert (0.30) ist pro Workspace und Anwendungsfall konfigurierbar:

  • Kundensupport, regulierte Inhalte0.20. Streng. Löst früh aus, damit QA prüfen kann.
  • Offener Chat, kreatives Spiel0.45. Locker. Lässt die Persona atmen.
  • A/B-Markenvarianten → pro Persona setzen, überschreibt den Workspace-Default.

Das Konfigurationselement ist engine.pipeline.drift_detection.threshold; persona-spezifische Overrides laufen über den Runtime-Contract der Persona.

Telemetrie

Jede Chat-Antwort trägt driftScore, driftThreshold und driftAlert. Über der Schwelle liegende Antworten emittieren das Webhook-Event conversation.drift_detected (HMAC-SHA256-signiert, mit exponentiellem Backoff bis zu fünfmal wiederholt). Verdrahte das in deine Support-QA-Queue, damit drift-Vorfälle zur Metrik werden, nicht zur Überraschung.

{
 "type": "conversation.drift_detected",
 "data": {
 "sessionId": "sess_...",
 "messageId": "msg_...",
 "personaId": "persona_...",
 "driftScore": 0.41,
 "driftThreshold": 0.30
 }
}

Zurück zum Schnellstart für die Chat-Sitzungs-Grundlagen oder weiter zur Chat-API-Referenz.