All checks were successful
release-tag / release-image (push) Successful in 2m43s
83 lines
5.7 KiB
Markdown
83 lines
5.7 KiB
Markdown
# Architektur und Vertrauensgrenzen
|
||
|
||
```text
|
||
Lokale Knowledge-JSONs ──ro──┐
|
||
GLPI Knowledge Base ─────ro──┼──► Ingest ─► In-Memory Graph + Float32 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
|
||
└── SQLite/WAL graph.db
|
||
```
|
||
|
||
## 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 und adaptive Artikelsynthese
|
||
|
||
```text
|
||
Kandidatenpaar
|
||
└── Relation Thinking
|
||
├── rejected edge
|
||
└── staging edge
|
||
├── Relationsrecherche nur bei Unsicherheit; Graphmaterialisierung erst nach akzeptierter Relation
|
||
└── Cluster/Fast: kompatible Relationen eines Zyklus bündeln
|
||
└── Quellenverbund (3–8 Quellen)
|
||
├── persistenter Work-Fingerprint → unveränderte Arbeit sofort überspringen
|
||
└── Artikelplanung: create / update / merge / skip
|
||
└── Aktualitätsrouting
|
||
├── zeitabhängig → kleine offene SearXNG-Runde
|
||
└── statisch → Gemma intern-first
|
||
├── Autor meldet Evidenzlücke → gezielte kleine SearXNG-Runde
|
||
└── Qwen Claim-Review
|
||
├── akzeptiert → Staging
|
||
└── fehlende Claims → gezielte Repair-Recherche + Revision
|
||
```
|
||
|
||
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. Frisch geladenes Artikel-Webmaterial wird zunächst nur unter `research-evidence/` persistiert. Erst eine vom finalen Reviewer tatsächlich für einen `supported`/`partially_supported` Claim verwendete Quelle wird als externer Graph-Node materialisiert, eingebettet und über `grounded_by` mit dem Staging-Artikel verbunden. Dadurch erzeugt bloßes Suchen keinen dauerhaften Graph-Fan-out.
|
||
|
||
Details: `ADAPTIVE-ARTICLE-WORKFLOW.md`.
|
||
|
||
## Schreibmodell
|
||
|
||
Produktive Knowledge-Dateien und GLPI sind read-only. AI-THINK wird nur in das konfigurierte Staging geschrieben. Ein prozessweiter Coordinator dedupliziert Dateischreibvorgänge und schreibt sie seriell vor der Graphtransaktion.
|
||
|
||
Der Graph Store verwendet `modernc.org/sqlite` über `database/sql`. Nodes, Edges und binäre Float32-Vektoren werden nur bei Änderungen geschrieben. WAL erlaubt eine kompakte laufende Journaldatei; der Export-Endpunkt erzeugt mit `VACUUM INTO` eine portable Einzeldatei ohne WAL-Sidecars.
|
||
|
||
## 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.
|
||
|
||
## Distributed Source-Agent runtime
|
||
|
||
`BRAIN_MODE` selects one of two startup graphs in the same executable. `brain` initializes the Graph, Ollama, knowledge scanner, article pipeline, Source Agent registry and Source Inbox. `agent` initializes only the source-poller runner, local dedupe/config cache and a minimal health/status HTTP server.
|
||
|
||
Remote discovery follows `Agent -> authenticated batch ingest -> Source Inbox -> embedding/ANN relevance classification -> candidate archive`. Article evidence acquisition follows `internal KB -> Source Inbox -> SearXNG`, and permanent graph materialization happens only after claim-level grounding.
|
||
|
||
## Startup-Gate und kausale Telemetrie
|
||
|
||
Der HTTP-Server bleibt während des Startups erreichbar. GPU-/Graph-schwere autonome Workflows warten jedoch auf den initialen Knowledge-/Embedding-Bootstrap. Ein fataler Knowledge-Scan hält den Gate geschlossen und wird periodisch erneut versucht. Workflow-Telemetrie verwendet explizite MutationStats; globale Graph-Deltas dienen nur noch der chronologischen Timeline.
|