# Architektur und Vertrauensgrenzen ```text Lokale Knowledge-JSONs ──ro──┐ GLPI Knowledge Base ─────ro──┼──► Ingest ─► In-Memory Graph + Vectors Agent runs.jsonl ─────────ro──┘ │ ├──► Ollama Pool ├──► Relation Thinking ├──► Knowledge Consolidation / Research / Synthesis ├──► SSE / Hierarchical LOD UI └──► Batched Persistence ├── staging drafts ├── article metadata sidecars ├── GLPI cache └── graph-state.json ``` ## Edge-Klassen - `categorized_as`, `mentions`, `derived_from`: deterministisch aus lokalen oder GLPI-Daten. - `research_evidence`: aus explizit kontrollierter Recherche, weiterhin `staging`. - `related_to`, `depends_on`, `supports`, `contradicts`, `extends`, `same_topic`, `caused_by`: Qwen-Inferenz mit Confidence und Evidence. - `rejected`: intern gespeicherte Prüfung ohne sichtbare Beziehung. ## Mehrstufiges Thinking ```text Kandidatenpaar └── Relation Thinking ├── rejected edge └── staging edge └── Quellenverbund (3–8 Quellen) └── Artikelplanung: create / update / merge / skip └── fachliche Wissenskonsolidierung ├── belegte Fakten und Arbeitsschritte ├── Widersprüche und Wissenslücken └── sequenzielle Recherche └── erneute Konsolidierung └── reine Artikelgenerierung ├── KB-Staging-Datei ├── Metadaten-Sidecar ├── Embedding └── Quellen- und Recherche-Edges ``` Relation Thinking schreibt keine Artikel. Die sichtbare KB-Datei enthält ausschließlich das reguläre KB-Schema. Interne Planung, Bewertung, Confidence, Quellen-IDs und Rechercheprotokolle werden getrennt unter `BRAIN_DATA_DIR/article-metadata/` gespeichert. Der Entwurf wird sofort als In-Memory-Node sichtbar, eingebettet und mit `synthesized_from` beziehungsweise `grounded_by` verknüpft; die Festplattenschreibvorgänge bleiben gebündelt. ## Schreibmodell Produktive Knowledge-Dateien und GLPI sind read-only. AI-THINK wird nur in das konfigurierte Staging geschrieben. Alle Schreibzugriffe laufen durch einen Prozess-weiten Coordinator, der Dateien dedupliziert und seriell vor dem Graph-Snapshot schreibt. ## Ollama-Pool Chat- und Embeddingaufrufe werden als vollständige Requests geroutet. Healthchecks prüfen Erreichbarkeit und Modelle. Ein Per-Node-Inflight-Limit verhindert lokale Überlastung. Failover verändert keine produktiven Daten, da Schreiboperationen erst nach erfolgreicher Inferenz deterministisch ausgeführt werden. ## Hierarchische Render-Schicht Der persistierte Wissensgraph bleibt vollständig. Das Frontend leitet eine temporäre LOD-Struktur ab: ```text Full Graph └── Cortex-Region └── Themenwolke └── lokale Gruppe └── einzelner Wissensknoten ``` Außenkanten werden nach sichtbaren Endpunkten, Relationstyp, Richtung, Herkunft und Status aggregiert. Aktivität öffnet nur den betroffenen Hierarchiepfad.