Funktionales Bewusstsein für ein Programm mit lokaler KI
-
Ich arbeite aktuell an einem lokalen „Wissens-Agenten“ auf meinem Windows-Rechner, der drei Dinge kombiniert:
- Lokale LLMs über Ollama (z. B. gemma3:4b/12b, qwen2.5)
- Online-Wikipedia + Wikidata als Faktenbasis (RAG-Ansatz)
- Eine einfache, aber durchgängige „funktionale Bewusstseins-Architektur“ in C# / WinForms
Das Projekt heißt aktuell WikipediaRagWinForms und besteht grob aus:
RAG-Engine:
Wikipedia-Suche, Artikelauswahl, Chunking, Embeddings, Cosine-Similarity, Ranking
„FactGuard“: filtert oder relativiert Aussagen, die im Kontext nicht belegt sindBewusstseins-Schicht („ConsciousnessController“):
SelfModel (Fokus, Müdigkeit, Neugier, Bias etc.)
ValueSystem (Accuracy, Efficiency, Coherence, Curiosity …)
MemoryBank (Episoden mit Frage, Kontext, Antwort, Reflexion, Fehlertypen)
GlobalWorkspace (aktueller „Arbeitsbereich“ mit Frage, Suchbegriffen, Artikeln, Wikidata-Fakten usw.)
Langzeitmodell (selfmodel_longterm.json) mit Themen-Statistik, Fehlermustern und ModellstärkenPro Episode läuft eine kleine Reflexion (Scores für Vollständigkeit, Kontextabdeckung, Intent-Konsistenz), die wiederum SelfModel + ValueSystem + LongTerm beeinflusst.
Der Agent speichert jede Frage als „Episode“ inkl. Meta-Daten (Intent, verwendete Artikel, FactGuard-Hinweise, Fehlertypen). Darauf aufbauend passt er sein Verhalten leicht an (z. B. vorsichtiger werden bei Halluzinationsmustern, mehr/ weniger Exploration, andere RAG-Schwellenwerte etc.). Zusätzlich gibt es ein paar „Easter Eggs“, die den aktuellen inneren Zustand und die Fehlerbilanz als Textbericht ausgeben.
Technik kurz:
Sprache: C# (.NET, WinForms), aber die Architektur ist prinzipiell auch auf C++ übertragbar
Backend: Ollama-REST (lokale LLMs), Wikipedia/Wikidata-API
Speicherung: JSON-Dateien (selfmodel.json, selfmodel_longterm.json, values.json, episodes.json, workspace_last.json)Wofür ich Mitstreiter suche:
Leute, die Spaß an Architekturen für künstliches Bewusstsein / Meta-Kognition haben
Diskussion über sinnvolle Metriken und Lernregeln (wann sollte der Agent z. B. wirklich seine Strategie ändern?)
Kritische Durchsicht: wo sind Denkfehler, wo ist das nur „schönes Gefrickel“, wo lässt sich etwas tatsächlich verallgemeinern?Es geht mir explizit nicht darum, „echtes Bewusstsein“ zu erreichen oder zu postulieren, sondern ich will mit überschaubaren Mitteln ein System bauen, das seinen eigenen Umgang mit Wissen, Fehlern und Kontext explizit modelliert und – wenn auch minimal – adaptiv darauf reagiert.
Damit es auf einem PC mit 8GB VRAM Graka mit akzeptablen Antwortzeiten läuft, habe ich vor allem gemma3:4b eingesetzt. Ich verwende MS VS 2022 mit C#/WinForms.
Wenn jemand Lust hat, mitzudenken oder mitzucoden (Architektur, bessere Reflexions-/Lernmodule), würde ich mich freuen.
-
Schade, dass Du nix mit Java machst... sonst wäre ich dabei gewesen. Aber Java und LLMs vertragen sich ja auch (noch) nicht. Gutes Gelingen.
-
@Lennox C# ist doch das "Java" von Microsoft.

Das Projekt hat schon viele Tausend Zeilen Code, und das "Bewusstsein" funktioniert bereits. Es geht also mehr um interne Regelmechanismen, Parameter und das Zusammenspiel von RAG (Fakten aus wiki) und direkter Antwort (kleine lokale KI Modelle haluzinieren und haben Zeithorizont). Dann gibt es noch das interessante Thema Übersetzung und die Auswahl der Sprachversion von Wikidata und Wikipedia. Mittelfristig möchte ich auch eine Schwarmintelligenz dieser Wissensagenten testen.Warum lokal? Damit die Vertraulichkeit gewährleistet ist.
-
Ja, ein Bekannter hat auch eine C# Firma... ist aber dennoch nicht so meins, afaik ist Java immer noch "durchdachter", und außerdem deckt man damit auch gleich Multi-Plattform ab. Aber will dich nicht ärgern, haben eben unterschiedliche Wege gewählt.^^ (*... geht zurück in seine Nische*)

-
Lennox, ich danke dir für die Rückmeldung und die guten Wünsche!

Ich hab mich bei diesem Projekt bewusst für C# + WinForms entschieden, weil mein ganzer Infrastruktur-Kram (Ollama-Anbindung, Tools, ältere Projekte) schon in dieser Ecke liegt.
https://www.henkessoft.de/AI/Ollama_001.html bis https://www.henkessoft.de/AI/Ollama_008.htmlJava + LLMs schließen sich ja nicht aus – über HTTP-APIs oder gRPC kann man genau dieselben Modelle ansprechen. Wenn du mal Lust hast, so etwas in Java nachzubauen oder zu spiegeln, fände ich das sogar spannend.
Und keine Sorge, verschiedene Nischen sind völlig okay – am Ende basteln wir alle an ähnlichen Ideen, nur mit anderen Werkzeugen.

Vielleicht finden sich doch noch C# Nutzer, die sich für dieses Thema "Lokaler Wissens-Agent mit Bewusstsein" interessieren.
-
Zu meinem Bewusstseins-Projekt:
Ich habe für mein Projekt eine eigene Schichten-Architektur E1–E7 (E für Erleben) und Fehler-/Feedback-Schicht F1–F4 (F für Fehler) entworfen, inspiriert durch Global-Workspace-Theorien und Metakognition, jedoch möglichst pragmatisch für die konkrete Implementierung:E-Ebene (Erlebens- / Verarbeitungs-Schichten)
E1 – Wahrnehmung & Normalisierung
Nimmt Frage + Ziel-Sprache entgegen
Übersetzt bei Bedarf nach Deutsch
Normalisiert Text (Datums-Tag, Bulletpoints entfernen, Cleaning)
Schreibt Basisinfos in den Workspace (OriginalQuestion, TranslatedQuestionDe, TargetLanguage)E2 – Weltzugriff (Wikipedia + Wikidata)
Intent-Moderator (z.B. EntityLookup, Timeline, GeneralQA)
Suchbegriffs-Moderator (GetSearchTermsFromModeratorAsync, inkl. Spezialfälle „Schach“, Personenfragen etc., ohne „Biografie“-Falle)
Wikipedia: Suche → Summary → FullExtract
Wikidata: Fakten zu Label, Description, Positionen, Start/Ende, BirthDate, Replaces/ReplacedByE3 – Global Workspace
Zentraler „Blackboard“-State:
Frage, Suchbegriffe, Artikel-Titel
RankedChunks, RankedArticleTitles
Wikidata-Felder (Label, Description, Positions, Start/End, Birth, Replaces, ReplacedBy)
RawAnswer, VerifiedAnswer, TranslatedAnswer
Wird von allen Schritten gelesen/geschrieben (_mind.UpdateWorkspace)E4 – Episoden & Memory
Jede Anfrage erzeugt eine Episode in episodes.json
Speichert: Intent, Frage, verwendete Artikel, Antworten, Scores, Bias-Profil, ReflectionScore usw.
MemoryBank kann ähnliche Episoden zu einer neuen Frage finden (FindSimilar)E5 – FactGuard / Verifikation
FactGuardAsync zerlegt die LLM-Antwort in Segmente
Filtert alles raus, was im Kontext nicht verankert ist
Ersetzt reine Kapitulation („Keine Information…“) durch erklärenden Hinweis
Spezialfall: Geburtsjahr-Konflikt (Frage vs. Wikidata) → direkte Wikidata-KorrekturantwortE6 – Metakognition / „funktionales Bewusstsein“
E6.1: SelfModel-Update aus aktueller Episode
Nutzt AnswerCompleteness, ContextCoverage, evtl. Feedback → passt Focus, Fatigue, Curiosity, ConfidenceBias anE6.2: Reflexion & ContextErrorScore
Reflection-Objekt mit IntentConsistencyScore, AnswerCompletenessScore, ContextCoverageScore, FactGuardTriggered, Kommentaren
daraus ContextErrorScore und ReflectionScoreE6.3: Auto-ReAsk
ShouldReAsk(...) prüft Risiko, Coverage, FactGuard
Reformulierte Frage, Filter von Mist-Suchbegriffen („Biografie“ etc.), zweiter Durchlauf mit gesetztem AutoReaskUsedE6.4: Self-Distortion Guard
Erkennung: leere VerifiedAnswer, FactGuard-Hinweis, offensichtliche Datums-Anomalien etc.
Reaktion: Accuracy++, Coherence++, Curiosity– – im ValueSystem
Kommentar in Workspace: SelfDistortionFlag + SelfDistortionCommentE6.5: Langzeit-Aggregation
Aktualisiert LongTermSelfModel (TopicStats, ErrorPatterns, RagWeaknesses, ModelStrengths) pro Episode
Speichert in selfmodel_longterm.jsonE7 – Schnittstellen & Persona
Easter Eggs:
„Wie geht es dir?“ → kompakter Zustandsreport (SelfModel + LongTerm)
„Zeig mir deine Fehlerbilanz“ → Langzeitstatistik (Fehlermuster, Stärken)
Help-Befehl (--help / /help / „hilfe“) → Befehlsübersicht
Profil-Export/Import (selfmodel.json + values.json + selfmodel_longterm.json)
Optional: Logging freier LLM-Antworten ohne Kontext in localAI.json, wenn Wikipedia-RAG versagt (OpenAnswerNoContext)F-Ebene (Fehler, Feedback & Lernen)
F1 – Fehler erkennen
Kennzeichen wie WrongArticle, Hallucination, BadSearchTerms, ReAskMissing, MissingWikidataMerge
Zählt diese in LongTermSelfModel.ErrorPatterns
Basis für spätere Strategieanpassung und Fehlerbilanz-EastereggF2 – Reflexion pro Episode
F2.0: ContextErrorScore & ReflectionScore aus Reflexionsdaten
F2.1 – Introspektive Berichte / Easter Eggs
„Wie geht es dir?“ → liest SelfModel, Values, LongTermSelfModel
„Zeig mir deine Fehlerbilanz“ → fasst ErrorPatterns + ModelStrengths zusammenF2.2 – Langzeitstatistik beeinflusst Strategie (ApplyLearningRules erweitert)
Nutzt LongTermSelfModel in ApplyLearningRules()
Beispiele:
viele WrongArticle → Accuracy↑, Coherence↑, Curiosity↓
Hallucinations → Accuracy↑, Curiosity↓
viele RagWeaknesses → Coherence↑, Efficiency↓
viele HighConfidenceSuccesses bei wenig Fehlern → Efficiency↑, Accuracy↑, Coherence↑
fast keine Fehler → vorsichtig Curiosity wieder öffnenF3 – Darstellung & Portabilität des „Charakters“
F3.1 – Visualisierung (Aktuell bewusst kein extra Panel → erledigt über Easter Eggs im Text)
F3.2 – Export/Import des Charakters
Profil-Export: selfmodel.json, values.json, selfmodel_longterm.json in Zielordner
Profil-Import: Dateien zurückkopieren, ConsciousnessController neu instanzieren
Effekt: Bewusstsein/Charakter zwischen Instanzen/Versionen mitnehmenF4 – Erweiterte Routing- & Antwortstrategien (Ideen-Ebene)
F4.1 – Direct vs. RAG Routing
bewusst verworfen (lokale LLMs zu unzuverlässig für „Direct“ auf Wissensfragen)F4.2 – Spekulative Offene Antworten loggen
Wenn FactGuard → „keine ausreichenden Informationen im Kontext“
Danach zweite, freie Modellantwort ohne Wikipedia-Kontext
Wird nur in localAI.json geloggt + kurzer Hinweis im Hauptfenster
Keine Vermischung von „harter“ RAG-Antwort mit spekulativer ModellmeinungDieses Modell ist bereits umgesetzt und aktiv.