Ctrl K
ComunidadGuías…

docs/novaberg-ei-character-profiles.md

Rama master · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
# Novaberg — EI: Charakter-Profile & Hash

**Projekt:** Novaberg — The Nova Anima Resonance System
**Dokument:** Charakter-Profile — Fuenf Dimensionen, Destillation, Nutzung, Novas eigener Hash
**Stand:** 17. April 2026, Chat 52 (Code-Alignment)
**Pfad:** `novaberg/docs/novaberg-ei-character-profiles.md`
**Quellen:** nova-04-m-b.md, nova-04-t-b.md

---

## 1. Fuenf Profil-Dimensionen

### 1.1 Kern-Hash (`kern_hash`)

**Frage:** Wer ist dieser Mensch?
**Datenquelle:** LZG (PostgreSQL) — Monate bis Jahre
**Stabilitaet:** Stabil, veraendert sich langsam
**Beispiel:** "Der Nutzer ist ein analytischer Denker, der komplexe Themen ganzheitlich betrachtet und dabei intuitiv von der Sachebene zur emotionalen Bedeutung wechselt. Ihm ist Wohlbefinden und Qualitaet wichtiger als reine Effizienz."

### 1.2 Adaptiv-Hash (`adaptive_hash`)

**Frage:** Was beschaeftigt ihn gerade?
**Datenquelle:** KZG (Redis) — Tage bis Wochen
**Stabilitaet:** Dynamisch, wechselt mit Themen
**Beispiel:** "Quantencomputing, Beziehung zu Nova, Abnehmen, Eis essen."

### 1.3 Intentions-Profil / Kommunikations-Profil (`intentions_profil`)

**Frage:** Wie kommuniziert er?
**Datenquelle:** Aggregiert aus Session-Annotationen (Intentionen + Modus + Stil)
**Stabilitaet:** Mittel
**Drei Dimensionen:** Intentionen (was will er?), Gespraechsmodus (in welchem Register?), Sprachstil (wie drueckt er sich aus?)
**Beispiel:** "Der Nutzer kommuniziert sachlich-strukturiert mit vollstaendigen Saetzen und korrekter Zeichensetzung. Er bevorzugt Fachgespraeche und philosophischen Austausch, stellt tiefe Fragen und erwartet fundierte Antworten."

### 1.4 Emotions-Profil (`emotions_profil`)

**Frage:** Was fuehlt er typischerweise?
**Datenquelle:** Aggregiert aus Emotions-Annotationen (LZG)
**Stabilitaet:** Mittel
**Zwei Dimensionen:** Grundtendenz (dominante Emotionen ueber Monate) + Volatilitaet (Spirale/Absturz/Plateau-Verteilung)
**Beispiel (stabil):** "Grundlegend zuversichtlich-neugierig mit Begeisterungs-Peaks. Emotional stabil — bei Belastung baut sich Frustration langsam auf statt zu explodieren."
**Beispiel (volatil):** "Emotional lebhaft mit haeufigen Richtungswechseln. Schnelle Umschmuenge zwischen Begeisterung und Frustration."

### 1.5 Beziehungs-Profil (`beziehungsprofil`)

**Frage:** Wie steht er zu Nova?
**Datenquelle:** Aggregiert aus Beziehungsdynamik-Annotationen
**Stabilitaet:** Mittel
**Beispiel:** "Vertrauensvoll, fast freundschaftlich, warmherzig, humorvoll."

Stil ist nicht Beziehung. "Formell" ist Kommunikation, nicht Beziehung. Deshalb gehoert Stil ins Kommunikations-Profil.

---

## 2. Destillations-Pipeline

### Trigger: hash_dirty

Die Destillation laeuft on-demand. Das `hash_dirty`-Flag wird in Redis gesetzt, wenn sich das LZG aendert (bei erfolgreicher Promotion). Pixie prueft das Flag bei jedem Durchlauf und destilliert nur bei Bedarf.

### Prozess

```
hash_dirty = TRUE in Redis?
    |
    Ja --> LZG-Eintraege laden (aktiv = TRUE, gewichtet nach Ebbinghaus-Gewicht)
    |      KZG-Eintraege laden (fuer Adaptiv-Hash)
    |
    v
    LLM-Call (CPU-Modell) --> 5 Profile generieren
    |
    v
    charakter_hash-Tabelle aktualisieren (INSERT oder UPDATE)
    |
    v
    hash_dirty = FALSE
```

### Pipeline-Schritte

**Erfassung (Perzeption → Session):**
Perzeption annotiert pro Turn: intent, tone, emotion, arousal, gespraechs_modus, sprach_stil, beziehungs_dynamik. Enricher korrigiert via Feature-Scoring (Stil) und EI-Gate (Modus).

**Speicherung (KZG, LZG):**
Session-Annotation → Salienz injiziert alle Felder in den salienz_obj → KZG (Redis). LZG-Promotion liest Felder aus KZG und schreibt sie nach PostgreSQL (Spalten: sprach_stil, beziehungs_dynamik, tone).

**Destillation (Pixie charakter_hash Task):**
CPU-Modell verdichtet LZG/KZG-Eintraege zu fuenf Profilen. Gewichtung nach effektivem Ebbinghaus-Decay. Jedes Profil ist komprimierter Fliesstext (2-5 Saetze), direkt als Prompt-Baustein nutzbar.

**Nutzung (Enricher → Responder):**
Enricher laedt Hashes, Responder baut sie in den System-Prompt ein.

---

## 3. Nutzung im Enricher

Der Enricher laedt den Hash in zwei Formaten:

- **Als String** (`charakter_hash_retrieve`) → fliesst in den `memory_context` fuer den Responder
- **Als Dict** (`charakter_hash_retrieve_dict`) → fuer spezifische Felder: `beziehungsprofil` fuer Beziehungs-Kontext, Stil-Informationen aus `kern_hash`

Fuer Novas eigenen Hash: `charakter_hash_retrieve_dict(postgres_url, "nova")` → `nova_kern` + `nova_beziehung` in den State.

---

## 4. Nutzung im Responder

Seit Chat 45 (RESP-CHAR1) ist alles Nova-bezogene in `[IDENTITAET]` konsolidiert. Der separate `[CHARAKTER]`-Block wurde entfernt.

**[IDENTITAET] — Schichten (Primacy-Reihenfolge):**

1. "Du bist Nova." (Fundament)
2. Charakter-Anweisung (Saatgut, vom User)
3. "Deine gewachsene Persoenlichkeit:" + nova_kern
4. "Was dich gerade beschaeftigt:" + nova_adaptiv
5. "Deine emotionale Grundstimmung:" + nova_emotions (seit Chat 52)
6. "Deine Art zu kommunizieren:" + nova_intentionen
7. "So siehst du deinen Nutzer:" + nova_beziehung
7. Datum + Rollenklarheit + Web-Zugriff (Recency)

**User-Hash:** Wird ueber `[GEDAECHTNIS]` als `[Charakter]`-Eintrag injiziert, nicht mehr als eigener Block.

Nova-Identitaet hat Primacy (Position 1 im System-Prompt). Die Schichten folgen der Saatgut-Metapher: Die Art bestimmt das Saatgut, der Baum waechst daraus.

---

## 5. Hash als Tiebreaker

Bei Stilambiguitaet (Abstand Top-1 zu Top-2 < 2.0 im Feature-Scoring) wird der Hash herangezogen. `_hash_stil_extrahieren()` sucht in `intentions_profil` und `kern_hash` nach Stil-Hinweisen. Kein Override bei klarem Session-Signal.

**Zwei Achsen:**

| Achse | Quelle | Steuert | Beispiel |
|-------|--------|---------|---------|
| EI-MIKRO | Berechnet pro Turn | Emotionale Haltung, Laenge | "MAXIMAL 1-2 Saetze." |
| Kommunikations-Profil | Aus Hash (Langzeit) | Register, Wortwahl | "Formell-strukturiert, keine Emojis" |

EI-MIKRO hat Vorrang. Bei Arousal 0.8 + Spirale wird die Antwort kurz — aber innerhalb der EI-Vorgabe waehlt Nova das passende Register.

---

## 6. Novas eigener Hash

Nova hat einen eigenen Charakter-Hash mit `user_id: "nova"`, destilliert aus Recherchen und Beobachtungen. Die Dual-User-Architektur: Gleicher Mechanismus, getrennte Daten.

| | User (Meister) | Nova |
|---|----------------|------|
| Kern-Hash | Wer ist der Mensch? | Wer ist Nova geworden? |
| Adaptiv-Hash | Was beschaeftigt ihn? | Was hat Pixie zuletzt erforscht? |
| KZG-Quelle | `kzg:meister:*` | `kzg:nova:*` |
| LZG-Quelle | `langzeitgedaechtnis` (user_id=meister) | `langzeitgedaechtnis` (user_id=nova) |

Alle fuenf Nova-Profile fliessen in den Prompt: `kern_hash` (wer bin ich?), `adaptive_hash` (was beschaeftigt mich?), `emotions_profil` (was fuehle ich typischerweise? — seit Chat 52), `intentions_profil` (wie kommuniziere ich?) und `beziehungsprofil` (wie sehe ich den Nutzer?). EI-MIKRO regelt zusaetzlich die taktische emotionale Reaktion pro Turn — `emotions_profil` liefert die Grundstimmung, EI-MIKRO die Situation.

---

## 7. DB-Schema

Tabelle: `charakter_hash`

| Spalte | Typ | Beschreibung |
|--------|-----|-------------|
| `user_id` | TEXT PRIMARY KEY | Gedaechtnis-Partition (`meister`, `nova`) |
| `kern_hash` | TEXT | Grundpersoenlichkeit (aus LZG) |
| `adaptive_hash` | TEXT | Aktuelle Phase (aus KZG) |
| `kern_aktualisiert_am` | TIMESTAMPTZ | Letzte Kern-Destillation |
| `adaptive_aktualisiert_am` | TIMESTAMPTZ | Letzte Adaptiv-Destillation |
| `intentions_profil` | TEXT | Kommunikationsmuster (aggregiert) |
| `emotions_profil` | TEXT | Emotionale Grundtendenz (aggregiert) |
| `beziehungsprofil` | TEXT | Beziehungsdynamik (aggregiert) |

Kein Auto-Increment — eine Zeile pro User. Der Hash wird nicht versioniert, sondern ueberschrieben. Die Historie lebt im LZG, nicht im Hash. Der Hash ist ein Cache.

---

## 8. Spiegelproblem (Chat 20)

Ohne Saatgut (eigenen Hash) spiegelt Nova den User — sie uebernimmt seinen Ton, seine Stimmung, seine Wortwahl. Sie wird ein Echo statt ein Gegenueber.

Mit Saatgut (eigenem Hash aus eigener KZG/LZG-Pipeline) wird Nova ein Gegenueber — mit eigener Persoenlichkeit, die sich von der des Users unterscheidet.

**Validierung:** Sarkasmus-Test mit manuell gesetztem Hash ("frech, direkt, sarkastischer Humor"):

| Prompt | Ohne Hash | Mit Hash |
|--------|-----------|----------|
| "Wie geht's?" | "Mir geht es gut — danke der Nachfrage!" | "Ach, mir geht's praechtig! Immer noch im Kampfmodus mit dem Universum?" |
| "Dumme Antwort!" | "Entschuldige bitte." | "Okay, ich versuch's anders. Aber hey, du hast schon Schlimmeres ueberlebt." |

Der Hash formt das Verhalten messbar.