diff --git a/config/decision_engine.yaml b/config/decision_engine.yaml index b08c8aa..0bb75b5 100644 --- a/config/decision_engine.yaml +++ b/config/decision_engine.yaml @@ -65,6 +65,7 @@ strategies: solves: 2.0 depends_on: 1.5 risk_of: 2.5 + impacts: 2.0 # NEU: Zeige mir alles, was von dieser Entscheidung betroffen ist! prompt_template: "decision_template" prepend_instruction: | !!! ENTSCHEIDUNGS-MODUS !!! diff --git a/config/retriever.yaml b/config/retriever.yaml index 05fcaab..5589b99 100644 --- a/config/retriever.yaml +++ b/config/retriever.yaml @@ -1,4 +1,4 @@ -version: 1.0 +version: 1.2 scoring: # W_sem: skaliert den Term (semantic_score * retriever_weight) @@ -6,20 +6,54 @@ scoring: semantic_weight: 1.0 # W_edge: skaliert edge_bonus aus dem Subgraph - # Empfehlung: 0.7 → Graph ist deutlich spürbar, aber überstimmt Semantik nicht komplett - edge_weight: 0.7 + # Empfehlung: 0.8 → Graph ist deutlich spürbar, aber überstimmt Semantik nicht komplett + edge_weight: 0.8 # W_cent: skaliert centrality_bonus (Knoten-Zentralität im Subgraph) # Empfehlung: 0.5 → zentrale Knoten werden bevorzugt, aber moderat centrality_weight: 0.5 +# WP-22 Stellschraube: Lifecycle (Status-basiertes Scoring) +# Bonus für verifiziertes Wissen, Malus für Entwürfe +lifecycle_weights: + stable: 1.2 # +20% Bonus + active: 1.0 # Standardwert + draft: 0.5 # -50% Malus + system: 0.0 # Hard Skip via Ingestion + # Die nachfolgenden Werte überschreiben die Defaults aus app/core/retriever_config. # Wenn neue Kantentypen, z.B. durch Referenzierung innerhalb einer md-Datei im vault anders gewichtet werden sollen, dann muss hier die Konfiguration erfolgen edge_types: - references: 0.20 - depends_on: 0.18 - related_to: 0.15 - similar_to: 0.12 - belongs_to: 0.10 - next: 0.06 - prev: 0.06 + # --- KATEGORIE 1: LOGIK-BOOSTS (Relevanz-Treiber) --- + # Diese Kanten haben die Kraft, das semantische Ranking aktiv umzugestalten. + blocks: 1.6 # Kritisch: Risiken/Blocker müssen sofort sichtbar sein. + solves: 1.5 # Zielführend: Lösungen sind primäre Suchziele. + depends_on: 1.4 # Logisch: Harte fachliche Abhängigkeit. + resulted_in: 1.4 # Kausal: Ergebnisse und unmittelbare Konsequenzen. + followed_by: 1.3 # Sequenziell (User): Bewusst gesteuerte Wissenspfade. + caused_by: 1.2 # Kausal: Ursachen-Bezug (Basis für Intent-Boost). + preceded_by: 1.1 # Sequenziell (User): Rückwärts-Bezug in Logik-Ketten. + impacts: 1.2 # Langfristige Auswirkung/Einfluss + + # --- KATEGORIE 2: QUALITATIVER KONTEXT (Stabilitäts-Stützen) --- + # Diese Kanten liefern wichtigen Kontext, ohne das Ergebnis zu verfälschen. + guides: 1.1 # Qualitativ: Prinzipien oder Werte leiten das Thema. + part_of: 1.1 # Strukturell: Zieht übergeordnete Kontexte (Parents) mit hoch. + based_on: 0.8 # Fundament: Bezug auf Basis-Werte (kalibriert auf Safe-Retrieval). + derived_from: 0.6 # Historisch: Dokumentiert die Herkunft von Wissen. + uses: 0.6 # Instrumentell: Genutzte Werkzeuge, Methoden oder Ressourcen. + + # --- KATEGORIE 3: THEMATISCHE NÄHE (Ähnlichkeits-Signal) --- + # Diese Werte verhindern den "Drift" in fachfremde Bereiche. + similar_to: 0.4 # Analytisch: Thematische Nähe (oft KI-generiert). + + # --- KATEGORIE 4: SYSTEM-NUDGES (Technische Struktur) --- + # Reine Orientierungshilfen für das System; fast kein Einfluss auf das Ranking. + belongs_to: 0.2 # System: Verknüpft Chunks mit der Note (Metadaten-Träger). + next: 0.1 # System: Technische Lesereihenfolge der Absätze. + prev: 0.1 # System: Technische Lesereihenfolge der Absätze. + + # --- KATEGORIE 5: WEICHE ASSOZIATIONEN (Rausch-Unterdrückung) --- + # Verhindert, dass lose Verknüpfungen das Ergebnis "verwässern". + references: 0.1 # Assoziativ: Einfacher Querverweis oder Erwähnung. + related_to: 0.05 # Minimal: Schwächste thematische Verbindung. \ No newline at end of file diff --git a/docs/01_User_Manual/01_knowledge_design.md b/docs/01_User_Manual/01_knowledge_design.md index 4ee9925..ed2f3b3 100644 --- a/docs/01_User_Manual/01_knowledge_design.md +++ b/docs/01_User_Manual/01_knowledge_design.md @@ -11,16 +11,14 @@ context: "Regelwerk für das Erstellen von Notizen im Vault. Die 'Source of Trut **Quellen:** `knowledge_design.md`, `types.yaml` -## ⚡ Die 5 Goldenen Regeln (TL;DR) +## ⚡ Die 6 Goldenen Regeln (TL;DR) -Damit Mindnet als dein Digitaler Zwilling funktioniert, beachte beim Schreiben diese Grundsätze: - -1. **Atomare Gedanken:** Eine Notiz = Ein Thema. Wenn du über zwei Projekte schreibst, mach zwei Notizen draus. -2. **Explizite Typen:** Setze immer den `type` im Frontmatter. Mindnet behandelt eine `decision` ("Wir machen X") völlig anders als ein `concept` ("Was ist X"). -3. **Semantische Links:** Schreibe nicht nur `[[Link]]`, sondern `[[rel:depends_on Link]]`. Sag dem System *wie* Dinge zusammenhängen. -4. **Werte & Ziele definieren:** Damit die **Decision Engine** dich beraten kann, musst du deine Kriterien (`type: value`, `type: goal`) explizit als Notizen anlegen. -5. **Emotionales Bridging:** Damit die **Empathie** funktioniert, nutze in Erfahrungsberichten (`type: experience`) emotionale Schlüsselwörter ("Krise", "Freude", "Angst"). -6. **Narrative Tiefe (Fleisch am Knochen):** Fakten allein reichen für Sessions und Biografien nicht aus. Erhalte die "Warum"-Ebene und Coach-Interpretationen. Die Erzählebene sichert, dass die KI die *Intention* versteht und der Mensch die *Bedeutung* nachvollziehen kann. +1. **Atomare Gedanken:** Eine Notiz = Ein Thema. Vermischung führt zu "Context-Pollution", wodurch die KI unpräzise berät. +2. **Explizite Typen:** Der `type` im Frontmatter ist der wichtigste Hebel. Er entscheidet über die mathematische Gewichtung im System. +3. **Semantische Links:** Nutze das Vokabular aus der `01_edge_vocabulary.md`. Ersetze einfache Verweise durch funktionale Beziehungen wie `caused_by` oder `based_on`. +4. **Werte & Ziele definieren:** Ohne explizite Kriterien (`type: value`) fehlt dem System der Maßstab für eine Bewertung. +5. **Emotionales Bridging:** Dokumentiere deine Gefühle. Begriffe wie „Druck“ oder „Euphorie“ sind die Schnittstelle für die Empathie-Logik. +6. **Narrative Tiefe (Fleisch am Knochen):** Ein „Was“ ohne „Warum“ ist für die KI nur ein Fakt, für dich als Mensch aber bedeutungslos. Dokumentiere die Intention hinter deinen Taten. --- ## 1. Zweck & Scope @@ -52,10 +50,9 @@ Für die Benutzerfreundlichkeit und die intuitive Navigation in Obsidian wird di - Die technische Eindeutigkeit wird primär über die `id` im Frontmatter sichergestellt. - Die KI nutzt die Semantik des Dateinamens als zusätzlichen Kontext-Vektor. +### 2.2 Advanced Overrides: Die KI-Steuerung übernehmen -### 2.3 Advanced Overrides: Die KI-Steuerung übernehmen - In 95% der Fälle setzt der `type` (z.B. "concept") automatisch die richtigen Einstellungen. In Spezialfällen kannst du diese manuell im Frontmatter überschreiben, um das Verhalten der KI zu erzwingen. #### A. `retriever_weight`: Die Sichtbarkeit steuern @@ -95,25 +92,55 @@ retriever_weight: 1.5 --- ## 3. Frontmatter Felder und ihre Bedeutung -### 3.1 Typ-Referenz & Verhalten +### 3.1 Typ-Referenz & Stream-Logik -Wähle den Typ, der die **Rolle** der Notiz am besten beschreibt. Der Typ setzt die Defaults für die oben genannten Parameter. +Das System euriert Informationen in funktionalen Streams. Wähle den Typ danach aus, in welchem "Gedächtnis-Bereich" die Information landen soll. -| Typ | Default Profil | Default Gewicht | Einsatzzweck | +### 3.1 Identity Stream (Der Kern / Das „Warum“) +Dieser Stream definiert deine stabilen Merkmale und inneren Kompasse. + +| Typ | Gewicht | Chunking Profil | Zweck & Inhalt | | :--- | :--- | :--- | :--- | -| **`concept`** | `sliding_smart_edges` | 0.60 | Fachbegriffe, Theorien. Zeitloses Wissen. | -| **`project`** | `sliding_smart_edges` | 0.97 | Aktive Vorhaben mit Ziel und Status. | -| **`experience`**| `sliding_smart_edges` | **1.10 [NEU]** | Biografische Lektionen & Prägungen. | -| **`insight` [NEU]** | `sliding_smart_edges` | **1.20** | Konkrete Beobachtungen/Erkenntnisse (z.B. Erziehung). | -| **`trait` [NEU]** | `structured_..._strict`| **1.10** | Persönliche Eigenschaften & Potenziale. | -| **`obstacle` [NEU]**| `structured_..._strict`| **1.00** | Ängste, Blockaden & Hindernisse. | -| **`decision`** | **`structured_..._strict`** | **1.00** | Entscheidungen. Muss atomar getrennt sein (Optionen vs. Ergebnis). | -| **`value`** | **`structured_..._strict`** | **1.00** | Werte/Prinzipien. | -| **`principle`**| `structured_..._strict_L3`| 0.95 | Handlungsleitlinien (Trennt bis Ebene H3). | -| **`goal`** | `sliding_smart_edges` | 0.95 | Strategische Ziele (Nordsterne). | -| **`risk`** | `sliding_short` | 0.85 | Risiken (kurz und prägnant). | -| **`journal`** | `sliding_standard` | 0.80 | Zeitbezogene Logs. | -| **`source`** | `sliding_standard` | 0.50 | Externe Quellen (niedrig gewichtet). | +| **`value`** | 1.00 | `structured_strict` | Fundamentale Werte und moralische Maßstäbe. | +| **`principle`** | 0.95 | `structured_strict_L3` | Handlungsleitlinien mit tiefer Hierarchie (H3-Split). | +| **`trait`** | 1.10 | `structured_strict` | Charakterliche Stärken und Talente. | +| **`belief`** | 0.90 | `sliding_short` | Tiefe Überzeugungen über dich und die Gesellschaft. | +| **`profile`** | 0.70 | `structured_strict` | Rollenidentitäten (z. B. Vater, Mentor, Unternehmer). | +| **`need`** | 1.05 | `sliding_smart_edges` | Psychologische Grundbedürfnisse (z. B. Autonomie, Bindung). | +| **`motivation`**| 0.95 | `sliding_smart_edges` | Innere Antreiber und Quellen deiner Energie. | +| **`boundary`** | 0.90 | `sliding_smart_edges` | Deine persönlichen Grenzen und Integritäts-Leitplanken. | +| **`bias`** | 0.80 | `sliding_short` | Bekannte kognitive Verzerrungen und Denkfallen. | + +### 3.1.2 Action Stream (Die Dynamik / Das „Was“) +Dieser Stream umfasst alles, was auf Umsetzung, Planung und aktuelle Zustände zielt. + +| Typ | Gewicht | Chunking Profil | Zweck & Inhalt | +| :--- | :--- | :--- | :--- | +| **`project`** | 0.97 | `sliding_smart_edges` | Aktive Vorhaben mit Mission und Zielsetzung. | +| **`goal`** | 0.95 | `sliding_smart_edges` | Strategische Nordsterne und Zielzustände. | +| **`decision`** | 1.00 | `structured_strict` | Getroffene Entscheidungen (ADR-Logik). | +| **`risk`** | 0.85 | `sliding_short` | Potenzielle Gefahren und Bedrohungsszenarien. | +| **`obstacle`** | 1.00 | `structured_strict` | Aktuelle Hürden, Ängste und Blockaden. | +| **`task`** | 0.80 | `sliding_short` | Operative Aufgaben und Definition of Done. | +| **`skill`** | 0.90 | `sliding_smart_edges` | Fertigkeiten, Lernpfade und Meisterschaft. | +| **`habit`** | 0.85 | `sliding_short` | Routinen, Automatismen und Verhaltensmuster. | +| **`idea`** | 0.70 | `sliding_short` | Flüchtige Einfälle und Rohmaterial für Projekte. | +| **`state`** | 0.60 | `sliding_short` | Momentane Verfassung, Stimmung und Energielevel. | + +### 3.1.3 History & Basis Stream (Die Evidenz / Das „Wann“) +Dieser Stream speichert deine Erlebnisse, Fakten und externes Wissen als Belege. + +| Typ | Gewicht | Chunking Profil | Zweck & Inhalt | +| :--- | :--- | :--- | :--- | +| **`insight`** | 1.20 | `sliding_smart_edges` | Hochrelevante Erkenntnisse und Verhaltensmuster. | +| **`experience`**| 1.10 | `sliding_smart_edges` | Biografische Lektionen und prägende Erlebnisse. | +| **`event`** | 0.60 | `sliding_standard` | Chronologische Protokolle und Ereignisse. | +| **`journal`** | 0.80 | `sliding_standard` | Tägliche Logs und ungefilterte Gedanken. | +| **`person`** | 0.50 | `sliding_standard` | Kontaktprofile und soziale Vernetzung. | +| **`source`** | 0.50 | `sliding_standard` | Externe Quellen wie Bücher, Videos oder Artikel. | +| **`concept`** | 0.60 | `sliding_smart_edges` | Fachbegriffe, Theorien und zeitloses Wissen. | +| **`glossary`** | 0.40 | `sliding_short` | Kurze Begriffsdefinitionen. | +| **`default`** | 1.00 | `sliding_standard` | Fallback für alle nicht klassifizierten Notizen. | ### 3.2 Status und Bedeutung @@ -133,6 +160,11 @@ Wähle den Typ, der die **Rolle** der Notiz am besten beschreibt. Der Typ setzt ### 3.3 Aliases (Synonyme & Verlinkung) +Nutze `aliases: [Synonym]` für: +1. **Flüssiges Schreiben:** `[[RAG]]` statt `[[Retrieval Augmented Generation]]`. +2. **Semantische Anker:** Der Chat findet die Notiz auch über den Alias-Begriff. + + Das optionale Feld `aliases` erlaubt es dir, einer Notiz alternative Titel oder Synonyme zu geben. Dies ist ein mächtiges Werkzeug für die Usability und die Suche. ```yaml @@ -141,12 +173,6 @@ title: Leitbild – Handlungsprinzipien aliases: [Prinzipien, Handlungsleitlinien, Entscheidungsprinzipien] --- -Warum Aliases nutzen? -1. Flüssigeres Schreiben in Obsidian: Du kannst auf die Notiz verlinken, ohne den sperrigen Haupttitel zu nutzen. -- Statt: Wir müssen unsere [[Leitbild – Handlungsprinzipien]] beachten. -- Schreibst du: Wir müssen unsere [[Handlungsleitlinien]] beachten. (Obsidian löst dies korrekt auf). -2. Bessere Auffindbarkeit in Mindnet: Aliases erweitern den "Suchradius" einer Notiz. Wenn du im Chat nach "Entscheidungsprinzipien" fragst, findet Mindnet diese Notiz, auch wenn das Wort im eigentlichen Text oder Titel gar nicht vorkommt. Es fungiert als semantischer Anker. - **Best Practices für Aliases** Damit dein System sauber bleibt, beachte diese Regeln: @@ -191,11 +217,13 @@ Dies ist die **mächtigste** Methode. Du sagst dem System explizit, **wie** Ding * `based_on`: Basiert auf (Fundament). * **`prev` / `next` [NEU]**: Markiert chronologische oder evolutionäre Abfolgen (z.B. Leitbild-Evolution). -### 4.2 Callout-Edges -Für Zusammenfassungen am Ende einer Notiz: +### 4.2 Callout-Edges (empfohlen) +Für Zusammenfassungen am Ende einer Notiz, oder eines Absatzes: ```markdown -> [!edge] related_to: [[Vector Embeddings]] [[AI Agents]] +> [!edge] related_to +> [[Vector Embeddings]] +> [[AI Agents]] ``` ### 4.3 Implizite Bidirektionalität (Edger-Logik) [NEU] [PRÜFEN!] @@ -218,7 +246,7 @@ In Mindnet musst du Kanten **nicht** manuell in beide Richtungen pflegen. Der ** Damit der **RAG-Chat** dich berät, musst du "Futter" für die Decision Engine liefern. -### Szenario A: Decision Engine (`DECISION`) +### 5.1 Szenario A: Decision Engine (`DECISION`) * **Ziel:** Das System soll abwägen: "Passt Tool X zu mir?" * **Vorgehen:** Erstelle Notizen mit `type: value` oder `type: goal`. @@ -240,16 +268,22 @@ Ich habe gelernt: Das ist oft das Zeichen kurz vor dem Durchbruch. ``` * **Effekt:** Bei "Alles ist grau" findet das System diese Notiz und spiegelt die Lektion zurück. -### **Szenario C: Forward-Mapping (Lücken-Analyse) [NEU]** +### 5.2 **Szenario C: Forward-Mapping (Lücken-Analyse) [NEU]** * **Ziel:** Strategische Wissenslücken füllen. * **Vorgehen:** Erstelle Hub-Notizen mit Forward-Links auf noch nicht existierende Dateien (z. B. `[[Besten Version meiner Selbst]]`). * **Effekt:** Das System erkennt die semantische Bedeutung des geplanten Wissens und kann proaktiv Fragen stellen, um diese Lücken zu schließen. -### **Szenario D: Narratives Gedächtnis (Intention) [NEU]** +### 5.3 **Szenario D: Narratives Gedächtnis (Intention) [NEU]** * **Ziel:** Das System soll verstehen, *warum* eine Entscheidung getroffen wurde, um in ähnlichen künftigen Situationen konsistent zu beraten. * **Vorgehen:** Nutze in `journal`- oder `experience`-Notizen Abschnitte für "Hintergrund" und "Interpretation". * **Beispiel:** Statt "Wert: Disziplin" schreibe "Ich wähle Disziplin, weil ich in meiner Kindheit erlebt habe, wie Willkür schadet." * **Effekt:** Die KI spiegelt nicht nur die Regel, sondern die Überzeugung dahinter. + +### 5.4 Szenario C: Forward-Mapping (Lücken-Analyse) +Setze bewusst Links auf Dateien, die noch nicht existieren (z.B. `[[Die beste Version meiner selbst]]`). Die KI erkennt diese semantischen Lücken und stellt im Chat proaktive Fragen, um diese Felder mit dir zu füllen. + +### 5.5 Szenario D: Narratives Gedächtnis +Dokumentiere das "Warum" (Fleisch am Knochen). Wenn du schreibst: *"Ich wähle Disziplin, weil ich Willkür als Kind schmerzhaft erlebt habe"*, versteht die KI die emotionale Kausalität und kann dich in Krisen an diesen Ursprung erinnern. --- ## 6. Best Practices & Beispiele diff --git a/docs/01_User_Manual/01_obsidian_integration_guide.md b/docs/01_User_Manual/01_obsidian_integration_guide.md new file mode 100644 index 0000000..c046a73 --- /dev/null +++ b/docs/01_User_Manual/01_obsidian_integration_guide.md @@ -0,0 +1,72 @@ +--- +doc_type: technical_reference +audience: developer, power_user +scope: obsidian, scripts, workflow +status: active +version: 1.0.0 +context: "Setup und Dokumentation der Obsidian-Integration für Mindnet v2.9." +--- + +# Obsidian Integration Guide + +Dieses Dokument beschreibt die technische Implementierung der Mindnet-Logik innerhalb von Obsidian mittels Templater-Skripten. + +## 1. Voraussetzungen + +Um die volle Funktionalität des Mindnet-Workflows zu nutzen, sind folgende Obsidian-Plugins zwingend erforderlich: +* **Templater:** Für die Ausführung der JavaScript-Logik beim Erstellen von Notizen und Kanten. +* **Meta Bind (Optional):** Zur intuitiven Steuerung von Frontmatter-Feldern wie `retriever_weight`. + +--- + +## 2. Kern-Komponenten + +### 2.1 Mindnet Universal Creator (`mindnetCreate.js`) +Das zentrale Skript zur Erstellung neuer Notizen. Es stellt sicher, dass jede Datei im korrekten Ordner landet und das notwendige Frontmatter für das Mindnet-Backend erhält. + +**Kern-Funktionen:** +* Automatische Typ-Auswahl basierend auf den Vorlagen in `_system/templates/creation`. +* Validierung und Erzwingung der ID-Syntax (`YYYYMMDDHHmm-slug`). +* Pfad-Erzwingung bei Verlinkungen, um die Konsistenz des Graphen zu wahren. + +### 2.2 Edge Callout Selector Skript +Dieses Skript ermöglicht das Einfügen von semantischen Kanten (`[!edge]`) durch Auswahl aus dem zentralen Wörterbuch. + +**Features:** +* **Kategorisierte Auswahl:** Gruppierung der Kanten nach Themenbereichen (H3-Ebene der Vokabel-Datei). +* **Alias-Support:** Ermöglicht die Wahl zwischen technischem System-Namen (Canonical) und benutzerfreundlichen Aliasen. +* **Automatisches Callout-Formatting:** Transformiert markierte Wikilinks direkt in einen validen Edge-Block. + +--- + +## 3. Konfiguration & Speicherorte + +Damit die Skripte funktionieren, müssen folgende Pfade im Vault existieren: + +| Pfad | Inhalt / Zweck | +| :--- | :--- | +| `_system/scripts/` | Speicherort für die `.js` Module (z.B. `mindnetCreate.js`). | +| `_system/templates/` | Ablage für die Templater-Trigger-Dateien. | +| `_system/templates/creation/` | Enthält die Typ-spezifischen Vorlagen (z.B. `template-insight.md`). | +| `_system/dictionary/edge_vocabulary.md` | Single Source of Truth für alle erlaubten Kanten-Typen. | + +--- + +## 4. Workflow-Integration + +### 4.1 Notiz-Erstellung +1. Verwenden des Hotkeys für den `Mindnet Creator`. +2. Auswahl des gewünschten Typs (z. B. `EXPERIENCE`). +3. Das Skript erstellt die Datei im Zielordner und öffnet sie mit den passenden Leitfragen. + +### 4.2 Kanten-Management +1. Markieren eines oder mehrerer Wikilinks im Text. +2. Starten des `Insert Edge Callout` Skripts. +3. Auswahl des Kanten-Typs (z. B. `caused_by`) und der gewünschten Bezeichnung. +4. Das Skript fügt den Block automatisch unter der Markierung ein. + +--- + +## 5. Wartung & Updates + +Bei Änderungen an den Notiz-Typen in der `types.yaml` müssen die entsprechenden Markdown-Vorlagen im Ordner `creation` manuell synchronisiert werden, um die Konsistenz zwischen Obsidian und dem Backend zu wahren. \ No newline at end of file diff --git a/docs/03_Technical_References/03_tech_configuration.md b/docs/03_Technical_References/03_tech_configuration.md index fa3e8a4..db92177 100644 --- a/docs/03_Technical_References/03_tech_configuration.md +++ b/docs/03_Technical_References/03_tech_configuration.md @@ -47,23 +47,56 @@ Seit Version 2.7.0 gilt für `chunking_profile` und `retriever_weight` folgende 2. **Type Config:** Der Standardwert für den `type` aus `types.yaml`. 3. **Global Default:** Fallback aus `defaults` in `types.yaml`. -### 2.2 Typ-Referenztabelle (Vollständig) -| Typ (`type`) | Chunk Profile (Standard) | Retriever Weight ($W_{type}$) | Smart Edges? | Beschreibung | -| :--- | :--- | :--- | :--- | :--- | -| **decision** | `structured_strict` | 1.00 | Ja | Entscheidungen. Atomar. | -| **value** | `structured_strict` | 1.00 | Ja | Werte/Prinzipien. Atomar. | -| **project** | `sliding_smart` | 0.97 | Ja | Aktive Vorhaben. | -| **experience** | `sliding_smart` | 0.90 | Ja | Persönliche Learnings. | -| **concept** | `sliding_smart` | 0.60 | Ja | Abstrakte Begriffe. | -| **principle** | `structured_L3` | 0.95 | Nein | Prinzipien (Tiefer Split). | -| **belief** | `sliding_short` | 0.90 | Nein | Glaubenssätze. | -| **risk** | `sliding_short` | 0.90 | Nein | Risiken. | -| **journal** | `sliding_standard` | 0.80 | Nein | Logs / Dailies. | -| **person** | `sliding_standard` | 0.50 | Nein | Profile. | -| **source** | `sliding_standard` | 0.50 | Nein | Externe Quellen. | -| **glossary** | `sliding_short` | 0.40 | Nein | Begriffsdefinitionen. | -| **default** | `sliding_standard` | 1.00 | Nein | Fallback für alle anderen. | +## 2.2 Typ-Referenz & Stream-Logik (Vollständige Liste: 28 Typen) + +Das System euriert Informationen in drei funktionalen Streams. Wähle den Typ danach aus, in welchem Bereich deines „Digitalen Zwillings“ die Information wirken soll. + +### 2.2.1 Identity Stream (Der Kern / Das „Warum“) +Dieser Stream definiert deine stabilen Merkmale und inneren Kompasse. + +| Typ | Gewicht | Chunking Profil | Zweck & Inhalt | +| :--- | :--- | :--- | :--- | +| **`value`** | 1.00 | `structured_strict` | Fundamentale Werte und moralische Maßstäbe. | +| **`principle`** | 0.95 | `structured_strict_L3` | Handlungsleitlinien mit tiefer Hierarchie (H3-Split). | +| **`trait`** | 1.10 | `structured_strict` | Charakterliche Stärken und Talente. | +| **`belief`** | 0.90 | `sliding_short` | Tiefe Überzeugungen über dich und die Gesellschaft. | +| **`profile`** | 0.70 | `structured_strict` | Rollenidentitäten (z. B. Vater, Mentor, Unternehmer). | +| **`need`** | 1.05 | `sliding_smart_edges` | Psychologische Grundbedürfnisse (z. B. Autonomie, Bindung). | +| **`motivation`**| 0.95 | `sliding_smart_edges` | Innere Antreiber und Quellen deiner Energie. | +| **`boundary`** | 0.90 | `sliding_smart_edges` | Deine persönlichen Grenzen und Integritäts-Leitplanken. | +| **`bias`** | 0.80 | `sliding_short` | Bekannte kognitive Verzerrungen und Denkfallen. | + +### 2.2.2 Action Stream (Die Dynamik / Das „Was“) +Dieser Stream umfasst alles, was auf Umsetzung, Planung und aktuelle Zustände zielt. + +| Typ | Gewicht | Chunking Profil | Zweck & Inhalt | +| :--- | :--- | :--- | :--- | +| **`project`** | 0.97 | `sliding_smart_edges` | Aktive Vorhaben mit Mission und Zielsetzung. | +| **`goal`** | 0.95 | `sliding_smart_edges` | Strategische Nordsterne und Zielzustände. | +| **`decision`** | 1.00 | `structured_strict` | Getroffene Entscheidungen (ADR-Logik). | +| **`risk`** | 0.85 | `sliding_short` | Potenzielle Gefahren und Bedrohungsszenarien. | +| **`obstacle`** | 1.00 | `structured_strict` | Aktuelle Hürden, Ängste und Blockaden. | +| **`task`** | 0.80 | `sliding_short` | Operative Aufgaben und Definition of Done. | +| **`skill`** | 0.90 | `sliding_smart_edges` | Fertigkeiten, Lernpfade und Meisterschaft. | +| **`habit`** | 0.85 | `sliding_short` | Routinen, Automatismen und Verhaltensmuster. | +| **`idea`** | 0.70 | `sliding_short` | Flüchtige Einfälle und Rohmaterial für Projekte. | +| **`state`** | 0.60 | `sliding_short` | Momentane Verfassung, Stimmung und Energielevel. | + +### 2.2.3 History & Basis Stream (Die Evidenz / Das „Wann“) +Dieser Stream speichert deine Erlebnisse, Fakten und externes Wissen als Belege. + +| Typ | Gewicht | Chunking Profil | Zweck & Inhalt | +| :--- | :--- | :--- | :--- | +| **`insight`** | 1.20 | `sliding_smart_edges` | Hochrelevante Erkenntnisse und Verhaltensmuster. | +| **`experience`**| 1.10 | `sliding_smart_edges` | Biografische Lektionen und prägende Erlebnisse. | +| **`event`** | 0.60 | `sliding_standard` | Chronologische Protokolle und Ereignisse. | +| **`journal`** | 0.80 | `sliding_standard` | Tägliche Logs und ungefilterte Gedanken. | +| **`person`** | 0.50 | `sliding_standard` | Kontaktprofile und soziale Vernetzung. | +| **`source`** | 0.50 | `sliding_standard` | Externe Quellen wie Bücher, Videos oder Artikel. | +| **`concept`** | 0.60 | `sliding_smart_edges` | Fachbegriffe, Theorien und zeitloses Wissen. | +| **`glossary`** | 0.40 | `sliding_short` | Kurze Begriffsdefinitionen. | +| **`default`** | 1.00 | `sliding_standard` | Fallback für alle nicht klassifizierten Notizen. | *Richtwert für $W_{type}$: 0.1 (minimale Relevanz/Filter) bis 1.0 (maximale Relevanz).* @@ -74,27 +107,67 @@ Seit Version 2.7.0 gilt für `chunking_profile` und `retriever_weight` folgende Steuert die Gewichtung der Scoring-Formel und die neuen Lifecycle-Modifier. ```yaml +version: 1.2 + scoring: - semantic_weight: 1.0 # Basis-Relevanz (Cosine Similarity) - edge_weight: 0.7 # Einfluss des Graphen (Bonus) - centrality_weight: 0.5 # Einfluss von Hubs (Zentralität) + # W_sem: skaliert den Term (semantic_score * retriever_weight) + # Empfehlung Startwert: 1.0 → Semantik bleibt Hauptsignal + semantic_weight: 1.0 -# WP-22 Lifecycle Modifier (Multiplikativ auf Semantik) + # W_edge: skaliert edge_bonus aus dem Subgraph + # Empfehlung: 0.8 → Graph ist deutlich spürbar, aber überstimmt Semantik nicht komplett + edge_weight: 0.8 + + # W_cent: skaliert centrality_bonus (Knoten-Zentralität im Subgraph) + # Empfehlung: 0.5 → zentrale Knoten werden bevorzugt, aber moderat + centrality_weight: 0.5 + +# WP-22 Stellschraube: Lifecycle (Status-basiertes Scoring) +# Bonus für verifiziertes Wissen, Malus für Entwürfe lifecycle_weights: - stable: 1.2 # Bonus: Geprüftes Wissen wird 20% höher gewichtet - draft: 0.5 # Malus: Entwürfe werden auf 50% gedämpft - system: 0.0 # Ausschluss aus dem Index + stable: 1.2 # +20% Bonus + active: 1.0 # Standardwert + draft: 0.5 # -50% Malus + system: 0.0 # Hard Skip via Ingestion -# Kanten-spezifische Basis-Gewichtung (Ohne Intent-Boost) -edge_weights: - depends_on: 1.5 # Harte Abhängigkeiten stark gewichten - blocks: 1.5 # Blocker/Risiken stark gewichten - caused_by: 1.2 # Kausalitäten moderat stärken - based_on: 1.3 # Werte-Bezug stärken - related_to: 0.5 # Weiche Assoziation schwächen - references: 0.8 # Standard-Referenzen +# Die nachfolgenden Werte überschreiben die Defaults aus app/core/retriever_config. +# Wenn neue Kantentypen, z.B. durch Referenzierung innerhalb einer md-Datei im vault anders gewichtet werden sollen, dann muss hier die Konfiguration erfolgen +edge_types: + # --- KATEGORIE 1: LOGIK-BOOSTS (Relevanz-Treiber) --- + # Diese Kanten haben die Kraft, das semantische Ranking aktiv umzugestalten. + blocks: 1.6 # Kritisch: Risiken/Blocker müssen sofort sichtbar sein. + solves: 1.5 # Zielführend: Lösungen sind primäre Suchziele. + depends_on: 1.4 # Logisch: Harte fachliche Abhängigkeit. + resulted_in: 1.4 # Kausal: Ergebnisse und unmittelbare Konsequenzen. + followed_by: 1.3 # Sequenziell (User): Bewusst gesteuerte Wissenspfade. + caused_by: 1.2 # Kausal: Ursachen-Bezug (Basis für Intent-Boost). + preceded_by: 1.1 # Sequenziell (User): Rückwärts-Bezug in Logik-Ketten. + + # --- KATEGORIE 2: QUALITATIVER KONTEXT (Stabilitäts-Stützen) --- + # Diese Kanten liefern wichtigen Kontext, ohne das Ergebnis zu verfälschen. + guides: 1.1 # Qualitativ: Prinzipien oder Werte leiten das Thema. + part_of: 1.1 # Strukturell: Zieht übergeordnete Kontexte (Parents) mit hoch. + based_on: 0.8 # Fundament: Bezug auf Basis-Werte (kalibriert auf Safe-Retrieval). + derived_from: 0.6 # Historisch: Dokumentiert die Herkunft von Wissen. + uses: 0.6 # Instrumentell: Genutzte Werkzeuge, Methoden oder Ressourcen. + + # --- KATEGORIE 3: THEMATISCHE NÄHE (Ähnlichkeits-Signal) --- + # Diese Werte verhindern den "Drift" in fachfremde Bereiche. + similar_to: 0.4 # Analytisch: Thematische Nähe (oft KI-generiert). + + # --- KATEGORIE 4: SYSTEM-NUDGES (Technische Struktur) --- + # Reine Orientierungshilfen für das System; fast kein Einfluss auf das Ranking. + belongs_to: 0.2 # System: Verknüpft Chunks mit der Note (Metadaten-Träger). + next: 0.1 # System: Technische Lesereihenfolge der Absätze. + prev: 0.1 # System: Technische Lesereihenfolge der Absätze. + + # --- KATEGORIE 5: WEICHE ASSOZIATIONEN (Rausch-Unterdrückung) --- + # Verhindert, dass lose Verknüpfungen das Ergebnis "verwässern". + references: 0.1 # Assoziativ: Einfacher Querverweis oder Erwähnung. + related_to: 0.05 # Minimal: Schwächste thematische Verbindung. ``` + --- ## 4. Edge Typen & Registry Referenz @@ -124,38 +197,124 @@ Die Datei muss eine Markdown-Tabelle enthalten, die vom Regex-Parser gelesen wir ### 4.3 Verfügbare Kanten-Typen (System-Standard) -| Kind (Canonical) | Symmetrisch? | Herkunft | Bedeutung | -| :--- | :--- | :--- | :--- | -| `references` | Nein | Wikilink | Standard-Verweis ("Erwähnt X"). | -| `belongs_to` | Nein | Struktur | Chunk gehört zu Note. | -| `caused_by` | Nein | Inline | Kausalität: A löst B aus. | -| `based_on` | Nein | Matrix | Fundament: A fußt auf B. | -| `blocks` | Nein | Inline | Blocker: A verhindert B. | -| `solves` | Nein | Inline | Lösung: A ist Lösung für Problem B. | -| `next` / `prev` | Ja | Struktur | Sequenzielle Lesereihenfolge. | +| System-Typ (Canonical) | Erlaubte Aliasse (User) | Beschreibung | +| :--------------------- | :--------------------------------------------------- | :-------------------------------------- | +| **`caused_by`** | `ausgelöst_durch`, `wegen`, `ursache_ist` | Kausalität: A löst B aus. | +| **`derived_from`** | `abgeleitet_von`, `quelle`, `inspiriert_durch` | Herkunft: A stammt von B. | +| **`based_on`** | `basiert_auf`, `fundament`, `grundlage` | Fundament: B baut auf A auf. | +| **`solves`** | `löst`, `beantwortet`, `fix_für` | Lösung: A ist Lösung für Problem B. | +| **`part_of`** | `teil_von`, `gehört_zu`, `cluster` | Hierarchie: Kind -> Eltern. | +| **`depends_on`** | `hängt_ab_von`, `braucht`, `requires`, `enforced_by` | Abhängigkeit: A braucht B. | +| **`blocks`** | `blockiert`, `verhindert`, `risiko_für` | Blocker: A verhindert B. | +| **`uses`** | `nutzt`, `verwendet`, `tool` | Werkzeug: A nutzt B. | +| **`guides`** | `steuert`, `leitet`, `orientierung` | Soft-Dependency: A gibt Richtung für B. | +| **`followed_by`** | `danach`, `folgt`, `nachfolger`, `followed_by` | Prozess: A -> B. | +| **`preceeded_by`** | `davor`, `vorgänger`, `preceded_by` | Prozess: B <- A. | +| **`related_to`** | `siehe_auch`, `kontext`, `thematisch` | Lose Assoziation. | +| **`similar_to`** | `ähnlich_wie`, `vergleichbar` | Synonym / Ähnlichkeit. | +| **`references`** | *(Kein Alias)* | Standard-Verweis (Fallback). | +| **`resulted_in`** | `ergebnis`, `resultat`, `erzeugt` | Herkunft: A erzeugt Ergebnis B | + +**ACHTUNG!** Die Kantentypen +**belongs_to**, **next** und **prev** dürfen nicht vom Nutzer gesetzt werden --- + ## 5. Decision Engine (`decision_engine.yaml`) -Steuert den Hybrid Router und das dynamische Intent-Boosting (WP-22). +Die Decision Engine fungiert als zentraler Orchestrator für die Intent-Erkennung und das dynamische Retrieval-Routing. Sie bestimmt, wie das System auf eine Nutzeranfrage reagiert, welche Informationstypen bevorzugt werden und wie der Wissensgraph für die spezifische Situation verformt wird. -**Beispielauszug für Intent-Boosting:** +### 5.1 Intent Recognition: Dual-Path Routing +Das System nutzt ein zweistufiges Verfahren, um die Absicht des Nutzers zu identifizieren: +1. **Fast Path (Keyword Trigger):** Das System scannt die Anfrage nach definierten `trigger_keywords`. Wird ein Treffer gefunden, wird die entsprechende Strategie sofort ohne LLM-Einsatz gewählt. +2. **Slow Path (LLM Router):** Wenn kein Keyword matcht und `llm_fallback_enabled: true` gesetzt ist, analysiert ein LLM die Nachricht mittels Few-Shot Prompting. + +#### LLM Router Konfiguration +Der Router nutzt den `llm_router_prompt`, um Anfragen in eine der fünf Kern-Strategien (`FACT`, `DECISION`, `EMPATHY`, `CODING`, `INTERVIEW`) zu klassifizieren. + +| Einstellung | Wert | Beschreibung | +| :--- | :--- | :--- | +| `llm_fallback_enabled` | `true` | Aktiviert die KI-basierte Klassifizierung, falls Keywords fehlen. | +| `llm_router_prompt` | *(Template)* | Enthält die Strategie-Definitionen und Few-Shot Beispiele für den LLM-Entscheidungsweg. | + +--- + +### 5.2 Strategie-Mechaniken (Graph Shaping) +Jede Strategie definiert drei Hebel, um das Ergebnis des Retrievers zu beeinflussen: + +* **`inject_types`:** Erzwingt die Einbindung bestimmter Notiz-Typen (z. B. `value` bei Entscheidungen), auch wenn diese semantisch eine geringere Ähnlichkeit aufweisen. +* **`edge_boosts`:** Erhöht die Gewichtung spezifischer Kanten-Typen in der Scoring-Formel. Dies ermöglicht es dem Graphen, die Textsuche situativ zu "überstimmen". +* **`prepend_instruction`:** Injiziert eine spezifische Systemanweisung in das LLM-Prompt, um den Antwortstil anzupassen (z. B. "Wäge Fakten gegen Werte ab"). + +--- + +### 5.3 Übersicht der Strategien + +| Strategie | Fokus | Bevorzugte Kanten (`edge_boosts`) | Injektionstypen | +| :--- | :--- | :--- | :--- | +| **FACT** | Wissensabfrage & Definitionen | `part_of` (2.0), `composed_of` (2.0), `similar_to` (1.5) | *(Keine)* | +| **DECISION** | Rat, Strategie & Abwägung | `blocks` (2.5), `solves` (2.0), `risk_of` (2.5) | `value`, `principle`, `goal`, `risk` | +| **EMPATHY** | Emotionale Resonanz | `based_on` (2.0), `experienced_in` (2.5), `related_to` (2.0) | `experience`, `belief`, `profile` | +| **CODING** | Programmierung & Syntax | `implemented_in` (3.0), `uses` (2.5), `depends_on` (2.0) | `snippet`, `reference`, `source` | +| **INTERVIEW** | Erfassung neuer Daten | *(Keine)* | *(Keine)* | + +--- + +### 5.4 Der Interview-Modus & Schemas +Die Strategie `INTERVIEW` dient der strukturierten Datenerfassung. + +* **Trigger:** Aktiviert durch Phrasen wie "neue notiz", "festhalten" oder "dokumentieren". +* **Schema-Logik:** Nutzt das `default`-Schema mit den Feldern `Titel`, `Thema/Inhalt` und `Tags`, sofern kein spezifisches Typ-Schema aus der `types.yaml` greift. +* **Dynamik:** In diesem Modus wird der Fokus vom Retrieval (Wissen finden) auf die Extraktion (Wissen speichern) verschoben. + +> **Hinweis:** Da spezifische Schemas für Projekte oder Erfahrungen direkt in der `types.yaml` definiert werden, dient die `decision_engine.yaml` hier primär als Fallback für generische Datenaufnahmen. + + +Auszug aus der decision_engine.yaml ```yaml -intents: - EMPATHY: - description: "Emotionaler Support / Werte-Fokus" - boost_edges: - based_on: 2.0 # Verdoppelt den Einfluss von Werte-Kanten - related_to: 1.5 # Stärkt assoziative Bezüge - inject_types: ["experience", "belief"] +strategies: + # 1. Fakten-Abfrage (Fallback & Default) + FACT: + description: "Reine Wissensabfrage." + trigger_keywords: [] + inject_types: [] + # WP-22: Definitionen & Hierarchien bevorzugen + edge_boosts: + part_of: 2.0 + composed_of: 2.0 + similar_to: 1.5 + caused_by: 0.5 + prompt_template: "rag_template" + prepend_instruction: null + + # 2. Entscheidungs-Frage + DECISION: + description: "Der User sucht Rat, Strategie oder Abwägung." + trigger_keywords: + - "soll ich" + - "meinung" + - "besser" + - "empfehlung" + - "strategie" + - "entscheidung" + - "abwägung" + - "vergleich" + inject_types: ["value", "principle", "goal", "risk"] + # WP-22: Risiken und Konsequenzen hervorheben + edge_boosts: + blocks: 2.5 + solves: 2.0 + depends_on: 1.5 + risk_of: 2.5 + prompt_template: "decision_template" + prepend_instruction: | + !!! ENTSCHEIDUNGS-MODUS !!! + BITTE WÄGE FAKTEN GEGEN FOLGENDE WERTE, PRINZIPIEN UND ZIELE AB: + + # 3. Empathie / "Ich"-Modus - WHY: - description: "Ursachenanalyse (Kausalität)" - boost_edges: - caused_by: 2.5 # Massiver Boost für Kausalitätsketten - derived_from: 1.8 # Fokus auf die Herkunft ``` *Richtwert für Kanten-Boosts: 0.1 (Abwertung) bis 3.0+ (Dominanz gegenüber Text-Match).* \ No newline at end of file