Neural Knowledge Brain
Eigenständiger Go-Dienst für deine beiden GLPI-Projekte. Er liest die produktive Wissensbasis und Agent-Audits read-only, erzeugt einen dynamischen Wissensgraphen und rendert dessen Aktivität als fullscreen „Gehirn“. Neue KI-Synthesen werden ausschließlich als AI-THINK in das vorhandene Knowledgebase-Staging geschrieben.
Was bereits implementiert ist
- Fullscreen Canvas-Rendering in Gehirnform, ohne Frontend-Framework oder externe CDN-Abhängigkeit.
- Echtzeitaktivierung über Server-Sent Events: Nodes glühen, Edges leuchten, Partikel laufen entlang verwendeter Verbindungen.
- Direkter Ingest der vorhandenen Knowledge-JSONs einschließlich Kategorien, Keywords, Quellen und Staging-Status.
- Read-only Tailing von
runs.jsonldes Agents; neue Agent-Läufe erscheinen als Hirnaktivität. - Optionale, nicht blockierende Telemetrie-Patches für Agent- und Knowledgebase-Suchanfragen.
- Embeddings über Ollama
embeddinggemma; lokaler Feature-Hash-Fallback, falls Ollama gerade nicht erreichbar ist. - Suchanfragen über Agent, Knowledgebase oder API: Retrieval, aktivierte Nodes/Edges und strukturierte Verarbeitung durch
qwen3:8b. Die Webansicht bleibt bewusst eine reine Visualisierung ohne Eingabefeld. - Sequenzielle, automatische Verknüpfungsanalyse mit sichtbarem Worker-Status. Pro Zyklus werden standardmäßig bis zu drei Kandidaten nacheinander geprüft; niemals parallel.
- KI-Edges mit Herkunft, Confidence, Erklärung und Evidenz. Abgelehnte Paare werden intern markiert, damit sie nicht endlos erneut geprüft werden.
- Optional kontrollierte Recherche über eine eigene SearXNG-Instanz.
- Automatische AI-THINK-Beiträge im bestehenden Staging-JSON-Format, stets mit
auto_reply: false.
Automatische Visualzustände
Die Fullscreen-Ansicht wechselt selbstständig zwischen drei Darstellungsstufen:
- LIVING: ruhige Eigenaktivität mit langsamer Atmung semantischer Cortex-Areale, vereinzelten internen Impulsen und sanfter Kamerabewegung. Diese Mikroaktivität wird nicht als wichtiges Feed-Ereignis protokolliert.
- ACTIVATION: Agent-Suchen, Knowledgebase-Suchen und Graph-Updates fokussieren automatisch den betroffenen Wissensbereich. Aktive Regionen dehnen sich leicht aus; relevante Edges transportieren Partikel.
- AI-THINK / RESEARCH: Beziehungsanalyse und Recherche erhalten einen stärkeren visuellen Modus mit fokussierter Kamera, konzentrischen Wellen, Synapsen-Bursts und statusabhängigen Farben.
Die Themenstruktur wird nicht nur aus dem ersten Kategorie-Feld abgeleitet. Kategorien bilden feste Anker; Konzepte, Quellen und externe Recherche-Nodes übernehmen über gewichtete Nachbarschafts-Propagation das stärkste verbundene Themengebiet. Verwandte Bereiche ziehen sich an, nicht verwandte Bereiche stoßen sich ab. Die zwölf stärksten Cortex-Areale erhalten bewusst deutlich getrennte Farben.
Der Aktivitätsfeed zeigt nur relevante Ereignisse und ergänzt – sofern vorhanden – Cortex-Bereich, Trefferzahl, verwendete Quellen, Laufzeit, semantische Nähe, Relationstyp, Konfidenz, Recherchequellen, Ticket-ID und Staging-Pfad. Der Statusblock zeigt außerdem, ob der autonome Worker läuft, wartet, keine Kandidaten findet oder Ollama nicht erreicht. Über den wieder eingeblendeten AI-THINK-Button kann jederzeit ein manueller Zyklus angestoßen werden.
Hierarchisches Semantic-LOD
Die Visualisierung rendert nicht mehr permanent jeden Knoten und jede Kante. Räumlich nahe, inaktive Elemente derselben Cortex-Region werden in zwei Stufen verdichtet:
- Themenwolke (Level 2): größere ruhende Bereiche;
- lokale Wissensgruppe (Level 1): kleinere Gruppen innerhalb einer Themenwolke;
- Einzel-Node (Level 0): konkrete Wissenseinträge bei Aktivität oder starkem Zoom.
Alle Originaldaten bleiben im Browser erhalten. Nur der abgeleitete renderGraph wird reduziert. Außenkanten einer Gruppe werden nach Quellgruppe, Zielgruppe, Relationstyp, Richtung, Herkunft und Status dedupliziert. edgeCount und weightSum bleiben an der aggregierten Kante erhalten; interne Kanten werden am Supernode gezählt.
Wird ein enthaltenes Wissenselement durch Agent, Knowledgebase, AI-THINK oder Recherche aktiviert, öffnet sich zunächst seine Themenwolke in engere Gruppen und anschließend die betroffene lokale Gruppe in Einzel-Nodes. Nach 30 bis 42 Sekunden ohne erneute Aktivität fällt der Bereich wieder zusammen. Zoom-Hysterese verhindert Flackern. Der LOD-Schalter kann die Verdichtung zu Diagnosezwecken deaktivieren; die Kennzahl Render im Header zeigt die tatsächlich pro Frame gezeichneten Nodes.
Die Grenzwerte stehen am Anfang von internal/web/static/app.js in LOD_CONFIG (localDistance, coarseDistance, Gruppengrößen und Offenhaltezeiten).
Schutz der Basisprojekte
Das Brain bekommt nur:
knowledge/read-onlydata/runs.jsonlread-onlystaging/read-write
Der Agent erhält weiterhin keinen Zugriff auf das Staging. Im integrierten Compose-Stack erhält auch kb-search nur ein leeres, flüchtiges Staging; ausschließlich der Prüf-Editor und das Brain sehen die echten Entwürfe. Die bestehende Knowledgebase nimmt AI-THINK erst nach deiner Freigabe in den produktiven Bestand. Damit kann das Brain die Entwürfe bereits darstellen und beim Denken berücksichtigen, während Agent und produktive Suche sie noch nicht sehen.
Schnellstart nativ
cp .env.example .env
# Pfade in .env anpassen
ollama pull qwen3:8b
ollama pull embeddinggemma
set -a; . ./.env; set +a
go run ./cmd/brain
Windows PowerShell:
Copy-Item .env.example .env
# Variablen aus .env setzen oder direkt in der Sitzung definieren
go run ./cmd/brain
Oberfläche: http://localhost:8090
Ohne Ollama startet die Visualisierung trotzdem. Retrieval verwendet dann einen deterministischen lokalen Fallback; Qwen-Synthesen und belastbare AI-Inferenz benötigen Ollama.
Docker
Passe in docker-compose.yml die drei Host-Pfade an und starte:
docker compose up -d --build
Auf Linux ist host.docker.internal über extra_hosts eingebunden. Alternativ kann das Brain in dasselbe Docker-Netz wie Ollama aufgenommen und OLLAMA_URL=http://ollama:11434 gesetzt werden.
Ablauf einer sichtbaren Anfrage
- Die Anfrage erzeugt eine Wahrnehmungswelle.
- EmbeddingGemma bewertet passende Knowledge- und AI-THINK-Nodes.
- Treffer leuchten nacheinander auf.
- Vorhandene Verbindungen werden durchlaufen und mit Partikeln dargestellt.
- Qwen3:8b erhält ausschließlich den ausgewählten Kontext.
- Die final verwendeten Nodes und Edges pulsieren bei der Antwortsynthese.
Automatische Anreicherung
Der Enrichment-Loop arbeitet bewusst seriell. Die Kandidatensuche verwendet einen rotierenden, begrenzten Anchor-Satz statt eines vollständigen O(n²)-Vergleichs über den gesamten Graphen. Dadurch bleibt sie auch bei zehntausenden Nodes reaktionsfähig und besucht langfristig trotzdem den gesamten Wissensbestand.
- einen rotierenden Bereich des Graphen nach dem stärksten noch ungeprüften Wissenspaar durchsuchen;
- Qwen-Beziehungsanalyse mit festem JSON-Schema;
- Edge als
stagingoder intern alsrejectedspeichern; - bei Unklarheit optional SearXNG-Recherche durchführen;
- externe Quellen als eigene Nodes mit Evidence-Edges anlegen;
- AI-THINK-JSON atomar in
BRAIN_STAGING_DIRSschreiben; - beim nächsten Scan den neuen Beitrag als sichtbaren und durchsuchbaren Staging-Node aufnehmen.
Ein erzeugter Entwurf enthält zusätzlich ein ai_think-Objekt mit Quell-Nodes, Relation, Confidence, Forschungsstatus und Evidenz. Die vorhandene Editor-Raw-JSON-Ansicht kann diese Daten bereits anzeigen.
AI-THINK-Taktung
BRAIN_AUTO_ENRICH=true
BRAIN_ENRICH_INTERVAL=90s
BRAIN_ENRICH_BATCH_SIZE=3
BRAIN_ENRICH_STEP_DELAY=3s
BRAIN_ENRICH_ANCHORS=48
BRAIN_ENRICH_BATCH_SIZE bestimmt, wie viele Beziehungen pro autonomem Zyklus nacheinander geprüft werden. BRAIN_ENRICH_ANCHORS begrenzt die CPU-seitige Kandidatensuche je Schritt. Die GPU wird nur während echter Qwen- oder Embedding-Aufrufe belastet; zwischen den Zyklen ist eine geringe oder null GPU-Auslastung normal.
Minimale optionale Integrationen
Die Patches unter integrations/ senden echte Suchanfragen und Treffer an POST /api/events:
# im jeweiligen Projekt-Root
git apply /pfad/glpi-neural-brain/integrations/agent/glpi-ai-agent-neural-brain.patch
git apply /pfad/glpi-neural-brain/integrations/knowledgebase/glpi-ai-knowledgebase-neural-brain.patch
Danach optional setzen:
BRAIN_ACTIVITY_URL=http://brain:8090/api/events
BRAIN_ACTIVITY_API_KEY=
Ist BRAIN_ACTIVITY_URL leer, ist die Integration vollständig deaktiviert. Das Senden ist asynchron, fail-open, auf drei Sekunden begrenzt und kann weder Ticketverarbeitung noch KB-Suche blockieren. Der Agent funktioniert zusätzlich auch ohne Patch: Das Brain beobachtet weiterhin sein runs.jsonl.
HTTP-Endpunkte
| Methode | Pfad | Zweck |
|---|---|---|
GET |
/api/status |
Zustand, Modelle und Zähler |
GET |
/api/graph |
kompletter aktueller Graph |
GET |
/api/analysis |
Komponenten, Hubs, AI-Edges, Widersprüche und unverknüpftes Wissen |
GET |
/api/stream |
SSE-Aktivitätsstrom |
POST |
/api/query |
sichtbare Wissensanfrage |
POST |
/api/events |
optionale Agent-/KB-Telemetrie |
POST |
/api/reindex |
Scan und Embedding-Abgleich |
POST |
/api/enrich |
einen AI-THINK-Schritt synchron ausführen |
POST |
/api/enrich?async=1 |
einen vollständigen sequenziellen AI-THINK-Zyklus einplanen |
Mit BRAIN_API_KEY werden alle POST-Endpunkte über Authorization: Bearer … oder X-Brain-Key geschützt. Die Webansicht ruft keine Query-POSTs mehr auf. Der API-Key schützt weiterhin Integrationen, Reindex, Enrichment und externe Query-Aufrufe; produktiv sollte der Dienst lokal oder hinter einem authentifizierenden Reverse Proxy betrieben werden.
Grenzen des Prototyps
- Der Graphspeicher ist eine atomar geschriebene JSON-Datei und für einen einzelnen Brain-Prozess ausgelegt. Für sehr große Bestände wäre eine spätere Migration auf einen spezialisierten Graph-/Vektorspeicher sinnvoll.
- Webrecherche ist absichtlich nur über eine explizit konfigurierte SearXNG-Instanz aktiv.
- KI-Edges bleiben Hypothesen. Erst eine Freigabe des AI-THINK-Beitrags macht daraus produktives Knowledge; die Edge selbst trägt weiterhin ihre KI-Herkunft.
- Das System löst Widersprüche nicht stillschweigend auf.
contradictsist ein eigener Edge-Typ und bleibt sichtbar.