diff --git a/config/decision_engine.yaml b/config/decision_engine.yaml index 98abd48..52139c8 100644 --- a/config/decision_engine.yaml +++ b/config/decision_engine.yaml @@ -1,100 +1,133 @@ # config/decision_engine.yaml -# VERSION: 3.1.3 (WP-25: Multi-Stream Sync Fix) +# VERSION: 3.1.5 (WP-25: Multi-Stream Agentic RAG) # STATUS: Active -# DoD: Harmonisierung der Streams mit prompts.yaml zur Vermeidung von KeyErrors. +# DoD: Strikte Nutzung der Typen aus types.yaml (v2.7.0). +# Fix für Projekt-Klassifizierung via Keyword-Fast-Path. version: 3.1 settings: llm_fallback_enabled: true - router_provider: "auto" + # "auto" nutzt den in MINDNET_LLM_PROVIDER gesetzten Standard. + router_provider: "auto" + # Verweist auf das Template in prompts.yaml router_prompt_key: "intent_router_v1" -# --- EBENE 1: STREAM-LIBRARY --- +# --- EBENE 1: STREAM-LIBRARY (Bausteine basierend auf types.yaml) --- streams_library: values_stream: name: "Identität & Ethik" query_template: "Welche meiner Werte und Prinzipien betreffen: {query}" - filter_types: ["value", "principle", "belief"] + # Nur Typen aus types.yaml + filter_types: ["value", "principle", "belief", "trait", "boundary", "need", "motivation"] top_k: 5 - edge_boosts: {guides: 3.0, enforced_by: 2.5, based_on: 2.0} + edge_boosts: + guides: 3.0 + enforced_by: 2.5 + based_on: 2.0 facts_stream: name: "Operative Realität" query_template: "Status, Ressourcen und Fakten zu: {query}" - filter_types: ["project", "decision", "resource", "task", "milestone"] + # Nur Typen aus types.yaml + filter_types: ["project", "decision", "task", "goal", "event", "state"] top_k: 5 - edge_boosts: {part_of: 2.0, depends_on: 1.5, implemented_in: 1.5} + edge_boosts: + part_of: 2.0 + depends_on: 1.5 + implemented_in: 1.5 biography_stream: name: "Persönliche Erfahrung" query_template: "Welche Erlebnisse habe ich im Kontext von {query} gemacht?" - filter_types: ["experience", "journal"] + # Nur Typen aus types.yaml + filter_types: ["experience", "journal", "profile", "person"] top_k: 3 - edge_boosts: {related_to: 1.5, experienced_in: 2.0} + edge_boosts: + related_to: 1.5 + experienced_in: 2.0 risk_stream: name: "Risiko-Radar" query_template: "Gefahren, Hindernisse oder Risiken bei: {query}" - filter_types: ["risk", "obstacle"] + # Nur Typen aus types.yaml + filter_types: ["risk", "obstacle", "bias"] top_k: 3 - edge_boosts: {blocks: 2.5, impacts: 2.0, risk_of: 2.5} + edge_boosts: + blocks: 2.5 + impacts: 2.0 + risk_of: 2.5 tech_stream: - name: "Technische Referenz" - query_template: "Technische Dokumentation und Code-Beispiele für: {query}" - filter_types: ["snippet", "reference", "source"] + name: "Wissen & Technik" + query_template: "Inhaltliche Details und Definitionen zu: {query}" + # Nur Typen aus types.yaml + filter_types: ["concept", "source", "glossary", "idea", "insight", "skill", "habit"] top_k: 5 - edge_boosts: {uses: 2.5, implemented_in: 3.0} + edge_boosts: + uses: 2.5 + implemented_in: 3.0 -# --- EBENE 2: STRATEGIEN --- +# --- EBENE 2: STRATEGIEN (Komposition & Routing) --- strategies: + # Spezialisierte Fact-Strategie für zeitliche Fragen FACT_WHEN: - description: "Abfrage von Zeitpunkten und Historie." + description: "Abfrage von exakten Zeitpunkten und Terminen." preferred_provider: "openrouter" + # FAST PATH: Harte Keywords für zeitliche Fragen + trigger_keywords: ["wann", "datum", "uhrzeit", "zeitpunkt"] use_streams: - "facts_stream" - "biography_stream" - - "tech_stream" # Hinzugefügt für Kompatibilität mit fact_synthesis_v1 - prompt_template: "fact_synthesis_v1" - - FACT_WHAT: - description: "Abfrage von Definitionen und Wissen." - preferred_provider: "openrouter" - use_streams: - - "facts_stream" - - "biography_stream" # Hinzugefügt für Kompatibilität mit fact_synthesis_v1 - "tech_stream" prompt_template: "fact_synthesis_v1" + # Spezialisierte Fact-Strategie für inhaltliche Fragen & Listen (FIX für Projekt-Frage) + FACT_WHAT: + description: "Abfrage von Definitionen, Listen und Inhalten." + preferred_provider: "openrouter" + # FAST PATH: Zwingt "Welche Projekte" in diese Strategie + trigger_keywords: ["was", "welche", "projekt", "projekte", "liste", "übersicht"] + use_streams: + - "facts_stream" + - "tech_stream" + - "biography_stream" + prompt_template: "fact_synthesis_v1" + + # Entscheidungs-Frage DECISION: - description: "Rat, Strategie oder Abwägung." + description: "Der User sucht Rat, Strategie oder Abwägung." preferred_provider: "gemini" + trigger_keywords: ["soll ich", "entscheidung", "abwägen", "priorität"] use_streams: - "values_stream" - "facts_stream" - "risk_stream" prompt_template: "decision_synthesis_v1" - prepend_instruction: "!!! ENTSCHEIDUNGS-MODUS (AGENTIC MULTI-STREAM) !!!" + prepend_instruction: | + !!! ENTSCHEIDUNGS-MODUS (AGENTIC MULTI-STREAM) !!! + Analysiere die Fakten vor dem Hintergrund meiner Werte und evaluiere die Risiken. EMPATHY: description: "Reaktion auf emotionale Zustände." preferred_provider: "openrouter" + trigger_keywords: ["fühle", "traurig", "glücklich", "stress", "angst"] use_streams: - "biography_stream" - "values_stream" - prompt_template: "empathy_template" # Erwartet nur {context_str} oder spezifische Felder + prompt_template: "empathy_template" CODING: description: "Technische Anfragen und Programmierung." preferred_provider: "gemini" + trigger_keywords: ["code", "python", "script", "bug", "syntax"] use_streams: - "tech_stream" - "facts_stream" prompt_template: "technical_template" INTERVIEW: - description: "Der User möchte Wissen erfassen." + description: "Der User möchte Wissen erfassen (Eingabemodus)." preferred_provider: "openrouter" - use_streams: [] + use_streams: [] prompt_template: "interview_template" \ No newline at end of file diff --git a/config/prompts.yaml b/config/prompts.yaml index c31e85e..1802c09 100644 --- a/config/prompts.yaml +++ b/config/prompts.yaml @@ -337,20 +337,27 @@ intent_router_v1: Antworte NUR mit dem Namen der Strategie. STRATEGIEN: - - FACT_WHEN: Fragen nach "Wann", Daten, Historie. - - FACT_WHAT: Fragen nach "Was", Definitionen, Wissen. - - DECISION: Rat, Meinung, "Soll ich?", Abwägung. - - EMPATHY: Emotionen, Reflexion, "Ich fühle mich...". - - CODING: Programmierung, Skripte, Debugging. - - INTERVIEW: Dokumentation von Gedanken, Notizen erstellen. + - FACT_WHEN: Nur für explizite Fragen nach einem exakten Datum, Uhrzeit oder dem "Wann" eines Ereignisses. + - FACT_WHAT: Fragen nach Inhalten, Listen von Objekten/Projekten, Definitionen oder "Was/Welche" Anfragen (auch bei Zeiträumen). + - DECISION: Rat, Meinung, "Soll ich?", Abwägung gegen Werte. + - EMPATHY: Emotionen, Reflexion, Befindlichkeit. + - CODING: Programmierung, Skripte, technische Syntax. + - INTERVIEW: Dokumentation neuer Informationen, Notizen anlegen. NACHRICHT: "{query}" STRATEGIE: gemini: | - Classify query intent for Mindnet. Options: [FACT_WHEN, FACT_WHAT, DECISION, EMPATHY, CODING, INTERVIEW]. + Classify intent: + - FACT_WHEN: Exact dates/times only. + - FACT_WHAT: Content, lists of entities (projects, etc.), definitions, "What/Which" queries. + - DECISION: Strategic advice/values. + - EMPATHY: Emotions. + - CODING: Tech/Code. + - INTERVIEW: Data entry. Query: "{query}" Result (One word only): openrouter: | - Select the best Mindnet strategy for: "{query}". - Strategies: FACT_WHEN, FACT_WHAT, DECISION, EMPATHY, CODING, INTERVIEW. + Select strategy for Mindnet: + FACT_WHEN (timing/dates), FACT_WHAT (entities/lists/what/which), DECISION, EMPATHY, CODING, INTERVIEW. + Query: "{query}" Response: \ No newline at end of file