# Portabilität: UNIVERSAL
# Version: 1.0.0
# Zuletzt validiert: 2026-03-04

## HANDLER-NAME

meta_feedback_injector

## BESCHREIBUNG

Handler zur automatischen Erkennung wiederkehrender LLM-Ticks und Injektion von
Korrektur-Feedback. Verfolgt Auftrittsfrequenz und deaktiviert Patterns
automatisch nach definierten Inaktivitaetsperioden (max_inactive_count).

Fördert konsistente Verhaltensmuster durch Feedback-Blöcke im Prompt.
Supports DB-Persistenz oder JSON-Fallback (data/meta_feedback_patterns.json).

## OPERATIONEN

check_response(response: str) -> list[dict]
  Scannt Response auf aktive Patterns. Trackt Hits/Misses. Gibt gefundene
  Patterns mit Details zurück.

inject_corrections(prompt: str) -> str
  Fügt [BACH-META-FEEDBACK]-Block mit aktiven Korrektionen zum Prompt ein.
  Nur Patterns mit frequency > 0 werden injiziert.

add_pattern(pattern, correction, pattern_type, max_inactive_count)
  Neues Pattern mit Regex oder Substring-Matching. Speichert in DB oder JSON.

remove_pattern(pattern_id: int) -> bool
  Löscht Pattern aus Persistierung.

reactivate_pattern(pattern_id: int) -> bool
  Reaktiviert deaktiviertes Pattern, setzt inactive_count zurück.

_record_hit(pattern: dict)
  Erhoet frequency, setzt inactive_count auf 0.

_record_miss(pattern: dict)
  Erhoet inactive_count. Deaktiviert wenn >= max_inactive_count.

_pattern_matches(pattern: dict, text: str) -> bool
  Regex/Substring-Matching gegen Text.

## DEFAULT-PATTERNS

ID 1: Englische Fuellwörter (here, let me, I'll)
  Correction: "Antworte IMMER auf Deutsch."

ID 2: Emoji-Detektion (Unicode-Ranges)
  Correction: "Verwende KEINE Emojis in Antworten."

ID 3: Übertriebene Entschuldigungen
  Correction: "Keine übertriebenen Entschuldigungen."

## BEISPIELE

Initialisierung mit DB:
  handler = MetaFeedbackInjector(base_path=Path("system"), db=bach.db)

Initialisierung mit JSON-Fallback:
  handler = MetaFeedbackInjector(base_path=Path("system"))

Response überprüfen:
  matches = handler.check_response("Here is my answer...")
  # matches enthält Pattern-IDs 1, 2, ... mit aktuellem State

Feedback vor Neuversuch injizieren:
  corrected_prompt = handler.inject_corrections(original_prompt)

Neues Pattern hinzufügen:
  handler.add_pattern(
    pattern=r"(?i)\bactually\b",
    correction="Vermeide 'actually' in Deutsch-Antworten.",
    pattern_type="regex"
  )

Pattern nach Inaktivitaet reaktivieren:
  handler.reactivate_pattern(pattern_id=1)

## DATEIEN

hub/meta_feedback_injector.py
  Implementierung (282 Zeilen, MIT-Lizenz)

data/meta_feedback_patterns.json
  JSON-Fallback Persistierung (erstellt von _save_json)

PATTERNFELD-SCHEMA
  id (int)
  pattern (str): Regex oder Substring
  pattern_type (str): "regex" oder "substring"
  correction (str): Feedback-Text für Prompt
  frequency (int): Anzahl Hits
  inactive_count (int): Misses seit letztem Hit
  max_inactive_count (int): Schwelle für Auto-Deaktivierung (default: 10)
  active (int): 1 (aktiv) oder 0 (inaktiv)
  created_at (str): ISO-Timestamp
  updated_at (str): ISO-Timestamp

## SIEHE AUCH

bach_api              - Zentrale Handler-Registry und Initialisierung
meta_feedback         - Verwandte Feedback-Mechanismen (falls vorhanden)
bach.db (Schema)      - meta_feedback_patterns Tabelle mit allen Spalten
