From 5ab01c51502ea10adf204823af89cf0fefa6bef7 Mon Sep 17 00:00:00 2001 From: Lars Date: Thu, 1 Jan 2026 09:12:31 +0100 Subject: [PATCH] Update decision_engine.yaml and prompts.yaml for WP-25: Bump version to 3.1.5, enhance stream definitions with stricter type usage from types.yaml, and refine strategy descriptions for clarity. Introduce new trigger keywords for improved intent classification and ensure compatibility with multi-stream retrieval strategies. --- config/decision_engine.yaml | 97 +++++++++++++++++++++++++------------ config/prompts.yaml | 25 ++++++---- 2 files changed, 81 insertions(+), 41 deletions(-) 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