Admin-Chat
Der Admin-Chat ist eine konversationelle Schnittstelle zur Verwaltung und Konfiguration von KIara. Statt Formulare auszufüllen und durch Menüs zu navigieren, können Administratoren Aufgaben in natürlicher Sprache beschreiben — das System führt sie aus.
Was ist der Admin-Chat?
Der Admin-Chat ist ein KI-gestützter Assistent, der speziell für die Administration von KIara entwickelt wurde. Er basiert auf einem ReAct-Agenten mit Tool-Use und hat Zugriff auf alle Admin-Funktionen des Systems. Im Gegensatz zum normalen Benutzer-Chat (der die Wissensbasis durchsucht) führt der Admin-Chat aktive Änderungen am System durch.
Der Admin-Chat läuft als eigener Service (kiara-admin-chat.service, Port 8503)
und kommuniziert über Server-Sent Events (SSE) für Echtzeit-Streaming
der Antworten. Er nutzt dasselbe LLM-Backend wie der Benutzer-Chat, hat aber Zugriff auf
eine erweiterte Tool-Registry mit über 100 administrativen Funktionen.
Zugang und Voraussetzungen
| Eigenschaft | Wert |
|---|---|
| Erreichbar über | Admin-UI (Port 8502), Tab „KIara" |
| Berechtigung | Nur Benutzer mit Admin-Rechten |
| LLM-Backend | Benötigt ein konfiguriertes und erreichbares LLM (lokal oder Cloud) |
| Service | kiara-admin-chat.service muss aktiv sein |
| Authentifizierung | Admin-Session-Cookie + CSRF-Header |
Chat-Oberfläche
Layout
Die Chat-Oberfläche besteht aus zwei Bereichen:
- Sidebar (links): Liste aller bisherigen Chats mit Titel, Datum und Nachrichtenzahl. Button „+ Neuer Chat" startet einen neuen Dialog. Die Sidebar ist ein-/ausklappbar.
- Chat-Bereich (rechts): Nachrichtenverlauf, Eingabefeld und Backend-Auswahl.
Eingabe-Bereich
| Element | Beschreibung |
|---|---|
| Eingabefeld | Mehrzeiliges Textfeld für die Frage/Anweisung. |
| Senden | Sendet die Nachricht und startet den SSE-Stream. |
| Abbrechen | Nur während laufender Antwort sichtbar — bricht den Stream ab. |
| Backend-Dropdown | Wahl des LLM-Backends: „Standard-Backend" (automatisch) oder ein spezifisches Backend. |
Nachrichten-Typen
| Typ | Beschreibung |
|---|---|
| Benutzer | Eigene Nachrichten (blaue Blase). |
| Assistent | KIara-Antworten (graue Blase) mit optionalen Tool-Calls, Quellen und Usage-Stats. |
| Bestätigung | Gelbe Blase bei destruktiven Aktionen — erwartet die Eingabe eines Bestätigungstextes. |
| Wizard | Checkliste mit gesammelten/fehlenden Parametern bei mehrstufigen Aktionen. |
| Fehler | Rote Fehlermeldung bei LLM- oder Tool-Fehlern. |
Denk-Blöcke (Think)
Bei Modellen mit erweiterten Reasoning-Fähigkeiten (z.B. Anthropic Claude) zeigt der Chat optionale Denk-Blöcke an. Diese werden nicht in der Datenbank gespeichert und erscheinen nicht in der Chat-Historie — sie dienen nur der Transparenz während der laufenden Antwort.
Funktionsumfang
Der Admin-Chat kann alle Aufgaben ausführen, die auch über die Admin-UI möglich sind. Über 100 registrierte Admin-Funktionen in folgenden Kategorien:
| Kategorie | Beispiel-Funktionen | Beschreibung |
|---|---|---|
| Datenquellen | datasource.list, datasource.create, datasource.delete | Anlegen, bearbeiten, löschen, Verbindungen testen, Berechtigungen zuweisen. |
| Jobs | jobs.start, jobs.pause, jobs.cancel | Indexierung starten, pausieren, abbrechen, Historie einsehen. |
| KI-Backends | ki.backends.create, ki.backends.test | Backends anlegen, testen, Modelle wechseln, Cloud-Provider einrichten. |
| System | system.health, system.metrics | Systemstatus, Services neustarten, Integrität prüfen, Backup/Restore. |
| Benutzer | users.create, users.update, ldap.sync | Benutzer verwalten, LDAP-Konfiguration, Gruppen synchronisieren. |
| Netzwerk | network.ping, network.dns, network.portscan | Diagnose-Tools ohne SSH-Zugang. |
| Compliance | compliance.audit, compliance.vvt | Audit-Trail, Anonymisierungsstatistik (read-only). |
| Tools | tools.connections.list, mcp.keys.create | ERP-Verbindungen, MCP-API-Keys, Workflows. |
| VektorDB | vectordb.files, vectordb.delete_files | Dateien löschen, Collections verwalten. |
Confirmation-Flow
Destruktive Aktionen erfordern eine explizite Bestätigung. Der Agent zeigt einen Bestätigungsdialog mit einem Bestätigungstext, den der Admin exakt eintippen muss.
Ablauf
- Admin gibt Anweisung: „Lösche die Datenquelle Alte Dokumente"
- Agent erkennt:
datasource.deleteerfordert Bestätigung - SSE sendet
confirmation_requiredmit Bestätigungstext - Frontend zeigt gelbe Bestätigungs-Blase mit Warnung und Bestätigungstext
- Admin tippt den exakten Text:
datasource 7 loeschen - System prüft: exakte Übereinstimmung (case-insensitiv)
- Funktion wird ausgeführt, Changelog-Eintrag erstellt
Regeln
- Ablaufzeit: 30 Minuten. Danach wird die Bestätigung automatisch verworfen.
- Abbrechen: Jede andere Eingabe (außer dem exakten Bestätigungstext) verwirft die Aktion.
- Nur ein Pending: Pro Chat kann nur eine Bestätigung gleichzeitig offen sein.
Aktionen mit Bestätigung (Beispiele)
| Aktion | Bestätigungstext-Muster |
|---|---|
| Datenquelle löschen | datasource {id} loeschen |
| Benutzer löschen | benutzer {id} loeschen |
| Job abbrechen | job {id} abbrechen |
| Backup wiederherstellen | backup {filename} restore |
| Collection leeren | collection {name} loeschen |
| LDAP-Config löschen | ldap config loeschen |
Wizard-System
Bei Funktionen mit mehreren Pflichtparametern sammelt der Wizard die Werte schrittweise ein. Der Admin muss nicht alle Parameter auf einmal angeben.
Ablauf
- Admin: „Erstelle einen neuen Benutzer"
- Agent ruft
users.createauf — Pflichtfelder fehlen - SSE sendet
wizard_updatemit Checkliste (erfasste, fehlende, optionale Felder) - Admin: „Benutzername: jdoe, Passwort: Geheim123!"
- Agent erkennt Wizard-Kontext, ruft Funktion mit gesammelten Werten erneut auf
- Wizard abgeschlossen → Funktion wird ausgeführt
Regeln
- Ein Wizard pro Chat: Es kann nur ein aktiver Wizard gleichzeitig existieren.
- Kontext-Erkennung: Der Agent erkennt automatisch, dass ein Wizard läuft, und ordnet neue Eingaben den offenen Feldern zu.
- Abbrechen: Der Wizard wird verworfen, wenn der Admin ein anderes Thema anspricht.
Setup-Modus
Wenn kein LLM-Backend konfiguriert ist (z.B. bei der Ersteinrichtung), schaltet der Admin-Chat in einen regelbasierten Setup-Modus. Hier ist kein LLM nötig — die Antworten werden statisch generiert.
Verfügbare Setup-Befehle
| Befehl | Beschreibung |
|---|---|
cloud anthropic | Cloud-Backend mit Anthropic einrichten. Fragt nach API-Key. |
cloud openai | Cloud-Backend mit OpenAI einrichten. Fragt nach API-Key. |
lokal <url> | Lokales Ollama-Backend einrichten. Testet die URL und zeigt verfügbare Modelle. |
abbrechen / zurück | Setup-Schritt abbrechen. |
help | Verfügbare Befehle anzeigen. |
Backend-Auswahl
Über das Dropdown im Eingabebereich kann das LLM-Backend pro Nachricht gewechselt werden:
- Standard-Backend: KIara wählt automatisch das aktive Backend mit der höchsten Priorität.
- Spezifisches Backend: Alle konfigurierten und aktiven Backends (lokal + Cloud) stehen zur Auswahl.
Chat-Persistenz
| Zeitpunkt | Verhalten |
|---|---|
| Tab öffnen | Draft-Modus: Begrüßung wird angezeigt, aber kein DB-Eintrag erstellt. |
| Erste Nachricht | Lazy-Creation: Chat wird in der DB angelegt, Begrüßung + Nachricht + Antwort gespeichert. |
| Weitere Nachrichten | Jede Nachricht (User + Assistant) wird sofort in admin_chat_messages gespeichert. |
| Chat wechseln | Alle Nachrichten des gewählten Chats werden aus der DB geladen. |
| Chat löschen | Chat + alle Nachrichten + Confirmations + Wizards werden kaskadierend gelöscht. |
Historie im LLM-Kontext
- Die letzten 20 Nachrichten werden als Kontext an das LLM übergeben.
- Setup-Nachrichten werden gefiltert (nicht im LLM-Kontext).
- Denk-Blöcke werden vor der DB-Speicherung entfernt (History-Leak-Prevention).
Beispiel-Dialoge
Datenquelle anlegen
Admin: Erstelle eine neue SMB-Datenquelle "Technik-Dokumente" mit Server
fileserver.firma.local, Freigabe "Technik" und Benutzer svc-kiara-read.
KIara: Ich erstelle die Datenquelle mit den angegebenen Parametern.
[Tool: datasource.create]
Die Datenquelle "Technik-Dokumente" wurde erfolgreich angelegt (ID: 12).
Soll ich die Verbindung testen?
System-Status prüfen
Admin: Wie ist der aktuelle Systemstatus?
KIara: [Tool: system.health]
Systemstatus:
- CPU: 23%, RAM: 4.2/16 GB
- Services: alle 5 aktiv
- Qdrant: erreichbar, 3 Collections, 45.230 Vektoren
- Letzter Job: vor 2h, erfolgreich (DS "E-Mail Archiv")
Destruktive Aktion mit Bestätigung
Admin: Lösche Datenquelle 7.
KIara: Systembestätigung
Datenquelle "Alte Dokumente" (ID: 7) enthält 12.450 Chunks.
Das Löschen entfernt alle Daten aus allen 4 Schichten. Nicht umkehrbar.
Tippen Sie zur Bestätigung: datasource 7 loeschen
Admin: datasource 7 loeschen
KIara: Datenquelle "Alte Dokumente" wurde gelöscht.
12.450 Chunks aus Qdrant entfernt, File-Hashes bereinigt.
Netzwerk-Diagnose
Admin: Ist der Ollama-Server erreichbar?
KIara: [Tool: network.ping → 10.0.12.16]
[Tool: network.http_check → http://10.0.12.16:11434]
Der Ollama-Server (10.0.12.16) ist erreichbar:
- Ping: 0.3ms
- HTTP-Status: 200 OK
- Latenz: 12ms
Tipps und Best Practices
- Spezifisch formulieren: Je präziser die Anweisung, desto besser das Ergebnis. Statt „Erstelle eine Datenquelle" besser „Erstelle eine lokale Datenquelle mit Pfad /data/projekte".
- Schritt für Schritt: Bei komplexen Aufgaben (z.B. Ersteinrichtung) die Schritte einzeln durchgehen, statt alles auf einmal zu verlangen.
- Status prüfen: Nach Änderungen den Status abfragen, um das Ergebnis zu verifizieren.
- Chat-Historie nutzen: Der Admin-Chat merkt sich den Kontext innerhalb einer Session. Bezugnahmen auf vorherige Aktionen sind möglich.
- Backend wechseln: Für komplexe Fragen das Cloud-Backend wählen, für einfache Status-Abfragen reicht das lokale Modell.
- Wizard nutzen: Bei Funktionen mit vielen Parametern nicht alles auf einmal angeben — der Wizard fragt die fehlenden Felder nach.
Fehlerbehebung
| Problem | Ursache | Lösung |
|---|---|---|
| Admin-Chat reagiert nicht | Service nicht gestartet | systemctl status kiara-admin-chat.service prüfen, ggf. systemctl restart kiara-admin-chat.service |
| „Kein LLM-Backend konfiguriert" | Kein aktives LLM-Backend | Im KI-Tab ein Backend anlegen und aktivieren, oder den Setup-Modus nutzen. |
| Tool-Aufruf schlägt fehl | Fehlende Berechtigung oder Ziel-Service nicht erreichbar | Fehlermeldung im Chat prüfen, ggf. Service neustarten. |
| Antwort sehr langsam | LLM überlastet oder Cloud-Latenz | System-Monitor prüfen, ggf. auf lokales LLM wechseln. |
| Bestätigung abgelaufen | 30-Minuten-Timeout überschritten | Anweisung erneut eingeben — der Agent erstellt eine neue Bestätigung. |
| Wizard hängt | Agent erkennt Kontext nicht | „Abbrechen" eingeben und die Anweisung neu formulieren. |
| SSE-Verbindung bricht ab | Proxy-Timeout oder Netzwerkproblem | Seite neu laden — der Chat-Verlauf ist in der DB gespeichert. |