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:

    1. Lokale LLMs über Ollama (z. B. gemma3:4b/12b, qwen2.5)
    2. Online-Wikipedia + Wikidata als Faktenbasis (RAG-Ansatz)
    3. 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 sind

    Bewusstseins-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ärken

    Pro 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.html

    Java + 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/ReplacedBy

    E3 – 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-Korrekturantwort

    E6 – Metakognition / „funktionales Bewusstsein“

    E6.1: SelfModel-Update aus aktueller Episode
    Nutzt AnswerCompleteness, ContextCoverage, evtl. Feedback → passt Focus, Fatigue, Curiosity, ConfidenceBias an

    E6.2: Reflexion & ContextErrorScore
    Reflection-Objekt mit IntentConsistencyScore, AnswerCompletenessScore, ContextCoverageScore, FactGuardTriggered, Kommentaren
    daraus ContextErrorScore und ReflectionScore

    E6.3: Auto-ReAsk
    ShouldReAsk(...) prüft Risiko, Coverage, FactGuard
    Reformulierte Frage, Filter von Mist-Suchbegriffen („Biografie“ etc.), zweiter Durchlauf mit gesetztem AutoReaskUsed

    E6.4: Self-Distortion Guard
    Erkennung: leere VerifiedAnswer, FactGuard-Hinweis, offensichtliche Datums-Anomalien etc.
    Reaktion: Accuracy++, Coherence++, Curiosity– – im ValueSystem
    Kommentar in Workspace: SelfDistortionFlag + SelfDistortionComment

    E6.5: Langzeit-Aggregation
    Aktualisiert LongTermSelfModel (TopicStats, ErrorPatterns, RagWeaknesses, ModelStrengths) pro Episode
    Speichert in selfmodel_longterm.json

    E7 – 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-Easteregg

    F2 – 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 zusammen

    F2.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 öffnen

    F3 – 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 mitnehmen

    F4 – 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 Modellmeinung

    Dieses Modell ist bereits umgesetzt und aktiv.

    Meine finale Idee mit diesen Agenten: Schwarmintelligenz. Da brauche ich aber bessere Computer. Man kann ja mal mit zwei Agenten anfangen. Die wirklich interessante Frage: In welcher (künstlichen?) Sprache werden sich diese Agenten verständigen? Was können sie gemeinsam erreichen, was einer alleine nicht kann?


Anmelden zum Antworten