# Nimue - Submissive AI Companion Ein lokaler Chatbot mit Langzeit- und Kurzzeitgedächtnis basierend auf Ollama. ## Features - **Langzeitgedächtnis**: SQLite-Datenbank speichert alle Gespräche - **Kurzzeitgedächtnis**: RAM-basiert für schnellen Kontextzugriff - **Auto-Zusammenfassung**: Alte Nachrichten werden automatisch zusammengefasst statt verworfen - **Persona-System**: Konfigurierbare Charaktereigenschaften - **Präferenzen-Lernen**: Erkennt und speichert Benutzerpräferenzen - **Token-Schutz**: Verhindert Context-Overflow - **Rate Limiting**: Schutz vor Überlastung - **Stream-Response**: Echtzeit-Antworten ## Installation ### Voraussetzungen ```bash # Ollama installieren curl -fsSL https://ollama.com/install.sh | sh # Modell herunterladen ollama pull HammerAI/rocinante-v1.1:12b-q4_K_M # Python-Abhängigkeiten pip install -r requirements.txt ``` ### Konfiguration Editiere `config.yaml`: ```yaml ollama: host: "http://localhost:11434" model: "HammerAI/rocinante-v1.1:12b-q4_K_M" memory: max_context_tokens: 4096 # Kontextfenster short_term_limit: 2048 # RAM-Cache long_term_limit: 1024 # Für Zusammenfassungen persona: name: "Nimue" # System Prompt anpassbar ``` ## Verwendung ```bash # Starten python main.py # Oder cd nimue && python -m nimue.app # Webinterface öffnen firefox http://localhost:5000 ``` ## Architektur ``` Benutzer-Eingabe ↓ MemoryManager (Kurzzeit) ↓ OllamaClient → Local LLM ↓ MemoryManager (Speicherung) ↓ Stream-Antwort ``` ## Gedächtnis-System - **Kurzzeit**: Aktuelle Sitzung (RAM) - **Langzeit**: Alle vergangenen Gespräche (SQLite) - **Zusammenfassung**: Bei 80% Token-Nutzung werden alte Nachrichten komprimiert und archiviert ## Sicherheit - Rate Limiting: 30 Anfragen/Minute - Session Timeouts nach 60 Min Inaktivität - Maximale Eingabelänge: 2000 Zeichen - Keine externen Datenverbindungen