All checks were successful
Deploy mindnet to llm-node / deploy (push) Successful in 4s
1007 lines
35 KiB
Markdown
1007 lines
35 KiB
Markdown
# File: /config/types.yaml
|
|
###############################
|
|
version: 2.7.0 # WP-14 Update: Dynamisierung der Ingestion-Pipeline
|
|
|
|
# ==============================================================================
|
|
# 1. CHUNKING PROFILES
|
|
# ==============================================================================
|
|
|
|
chunking_profiles:
|
|
|
|
# A. SHORT & FAST
|
|
sliding_short:
|
|
strategy: sliding_window
|
|
enable_smart_edge_allocation: false
|
|
target: 200
|
|
max: 350
|
|
overlap: [30, 50]
|
|
|
|
# B. STANDARD & FAST
|
|
sliding_standard:
|
|
strategy: sliding_window
|
|
enable_smart_edge_allocation: false
|
|
target: 450
|
|
max: 650
|
|
overlap: [50, 100]
|
|
|
|
# C. SMART FLOW (Text-Fluss)
|
|
# Nutzt Sliding Window, aber mit LLM-Kanten-Analyse.
|
|
sliding_smart_edges:
|
|
strategy: sliding_window
|
|
enable_smart_edge_allocation: true
|
|
target: 400
|
|
max: 600
|
|
overlap: [50, 80]
|
|
|
|
# D. SMART STRUCTURE (Soft Split)
|
|
# Trennt bevorzugt an H2, fasst aber kleine Abschnitte zusammen ("Soft Mode").
|
|
structured_smart_edges:
|
|
strategy: by_heading
|
|
enable_smart_edge_allocation: true
|
|
split_level: 2
|
|
strict_heading_split: false
|
|
max: 600
|
|
target: 400
|
|
overlap: [50, 80]
|
|
|
|
# E. SMART STRUCTURE STRICT (H2 Hard Split)
|
|
# Trennt ZWINGEND an jeder H2.
|
|
# Verhindert, dass "Vater" und "Partner" (Profile) oder Werte verschmelzen.
|
|
structured_smart_edges_strict:
|
|
strategy: by_heading
|
|
enable_smart_edge_allocation: true
|
|
split_level: 2
|
|
strict_heading_split: true # Hard Mode
|
|
max: 600
|
|
target: 400
|
|
overlap: [50, 80]
|
|
|
|
# F. SMART STRUCTURE DEEP (H3 Hard Split + Merge-Check)
|
|
# Spezialfall für "Leitbild Prinzipien":
|
|
# - Trennt H1, H2, H3 hart.
|
|
# - Aber: Merged "leere" H2 (Tier 2) mit der folgenden H3 (MP1).
|
|
structured_smart_edges_strict_L3:
|
|
strategy: by_heading
|
|
enable_smart_edge_allocation: true
|
|
split_level: 3
|
|
strict_heading_split: true
|
|
max: 600
|
|
target: 400
|
|
overlap: [50, 80]
|
|
|
|
# ==============================================================================
|
|
# 2. DEFAULTS
|
|
# ==============================================================================
|
|
defaults:
|
|
retriever_weight: 1.0
|
|
chunking_profile: sliding_standard
|
|
edge_defaults: []
|
|
|
|
# ==============================================================================
|
|
# 3. INGESTION SETTINGS (WP-14 Dynamization)
|
|
# ==============================================================================
|
|
# Steuert, welche Notizen verarbeitet werden und wie Fallbacks aussehen.
|
|
ingestion_settings:
|
|
# Liste der Status-Werte, die beim Import ignoriert werden sollen.
|
|
ignore_statuses: ["system", "template", "archive", "hidden"]
|
|
# Standard-Typ, falls kein Typ im Frontmatter angegeben ist.
|
|
default_note_type: "concept"
|
|
|
|
# ==============================================================================
|
|
# 4. SUMMARY & SCAN SETTINGS
|
|
# ==============================================================================
|
|
# Steuert die Tiefe des Pre-Scans für den Context-Cache.
|
|
summary_settings:
|
|
max_summary_length: 500
|
|
pre_scan_depth: 600
|
|
|
|
# ==============================================================================
|
|
# 5. LLM SETTINGS
|
|
# ==============================================================================
|
|
# Steuerzeichen und Patterns zur Bereinigung der LLM-Antworten.
|
|
llm_settings:
|
|
cleanup_patterns: ["<s>", "</s>", "[OUT]", "[/OUT]", "```json", "```"]
|
|
|
|
# ==============================================================================
|
|
# 6. TYPE DEFINITIONS
|
|
# ==============================================================================
|
|
|
|
types:
|
|
|
|
experience:
|
|
chunking_profile: sliding_smart_edges
|
|
retriever_weight: 1.10 # Erhöht für biografische Relevanz
|
|
edge_defaults: ["derived_from", "references"]
|
|
detection_keywords: ["erleben", "reagieren", "handeln", "prägen", "reflektieren"]
|
|
schema:
|
|
- "Situation (Was ist passiert?)"
|
|
- "Meine Reaktion (Was habe ich getan?)"
|
|
- "Ergebnis & Auswirkung"
|
|
- "Reflexion & Learning (Was lerne ich daraus?)"
|
|
|
|
insight:
|
|
chunking_profile: sliding_smart_edges
|
|
retriever_weight: 1.20 # Hoch gewichtet für aktuelle Steuerung
|
|
edge_defaults: ["references", "based_on"]
|
|
detection_keywords: ["beobachten", "erkennen", "verstehen", "analysieren", "schlussfolgern"]
|
|
schema:
|
|
- "Beobachtung (Was sehe ich?)"
|
|
- "Interpretation (Was bedeutet das?)"
|
|
- "Bedürfnis (Was steckt dahinter?)"
|
|
- "Handlungsempfehlung"
|
|
|
|
project:
|
|
chunking_profile: sliding_smart_edges
|
|
retriever_weight: 0.97
|
|
edge_defaults: ["references", "depends_on"]
|
|
detection_keywords: ["umsetzen", "planen", "starten", "bauen", "abschließen"]
|
|
schema:
|
|
- "Mission & Zielsetzung"
|
|
- "Aktueller Status & Blockaden"
|
|
- "Nächste konkrete Schritte"
|
|
|
|
decision:
|
|
chunking_profile: structured_smart_edges_strict
|
|
retriever_weight: 1.00
|
|
edge_defaults: ["caused_by", "references"]
|
|
detection_keywords: ["entscheiden", "wählen", "abwägen", "priorisieren", "festlegen"]
|
|
schema:
|
|
- "Kontext & Problemstellung"
|
|
- "Betrachtete Optionen"
|
|
- "Die Entscheidung"
|
|
- "Begründung"
|
|
|
|
# --- PERSÖNLICHKEIT & IDENTITÄT ---
|
|
|
|
value:
|
|
chunking_profile: structured_smart_edges_strict
|
|
retriever_weight: 1.00
|
|
edge_defaults: ["related_to"]
|
|
detection_keywords: ["werten", "achten", "verpflichten", "bedeuten"]
|
|
schema:
|
|
- "Definition"
|
|
- "Warum mir das wichtig ist"
|
|
- "Leitsätze"
|
|
|
|
principle:
|
|
chunking_profile: structured_smart_edges_strict_L3
|
|
retriever_weight: 0.95
|
|
edge_defaults: ["derived_from", "references"]
|
|
detection_keywords: ["leiten", "steuern", "ausrichten", "handhaben"]
|
|
schema:
|
|
- "Das Prinzip"
|
|
- "Anwendung & Beispiele"
|
|
|
|
trait:
|
|
chunking_profile: structured_smart_edges_strict
|
|
retriever_weight: 1.10
|
|
edge_defaults: ["related_to"]
|
|
detection_keywords: ["begeistern", "können", "auszeichnen", "befähigen", "stärken"]
|
|
schema:
|
|
- "Eigenschaft / Talent"
|
|
- "Beispiele aus der Praxis"
|
|
- "Potenzial für die Zukunft"
|
|
|
|
obstacle:
|
|
chunking_profile: structured_smart_edges_strict
|
|
retriever_weight: 1.00
|
|
edge_defaults: ["blocks", "related_to"]
|
|
detection_keywords: ["blockieren", "fürchten", "vermeiden", "hindern", "zweifeln"]
|
|
schema:
|
|
- "Beschreibung der Hürde"
|
|
- "Ursprung / Auslöser"
|
|
- "Auswirkung auf Ziele"
|
|
- "Gegenstrategie"
|
|
|
|
belief:
|
|
chunking_profile: sliding_short
|
|
retriever_weight: 0.90
|
|
edge_defaults: ["related_to"]
|
|
detection_keywords: ["glauben", "meinen", "annehmen", "überzeugen"]
|
|
schema:
|
|
- "Der Glaubenssatz"
|
|
- "Ursprung & Reflexion"
|
|
|
|
profile:
|
|
chunking_profile: structured_smart_edges_strict
|
|
retriever_weight: 0.70
|
|
edge_defaults: ["references", "related_to"]
|
|
detection_keywords: ["verkörpern", "verantworten", "agieren", "repräsentieren"]
|
|
schema:
|
|
- "Rolle / Identität"
|
|
- "Fakten & Daten"
|
|
- "Historie"
|
|
|
|
|
|
idea:
|
|
chunking_profile: sliding_short
|
|
retriever_weight: 0.70
|
|
edge_defaults: ["leads_to", "references"]
|
|
detection_keywords: ["einfall", "gedanke", "potenzial", "möglichkeit"]
|
|
schema:
|
|
- "Der Kerngedanke"
|
|
- "Potenzial & Auswirkung"
|
|
- "Nächste Schritte"
|
|
|
|
skill:
|
|
chunking_profile: sliding_smart_edges
|
|
retriever_weight: 0.90
|
|
edge_defaults: ["references", "related_to"]
|
|
detection_keywords: ["lernen", "beherrschen", "üben", "fertigkeit", "kompetenz"]
|
|
schema:
|
|
- "Definition der Fähigkeit"
|
|
- "Aktueller Stand & Lernpfad"
|
|
- "Evidenz (Proof of Work)"
|
|
|
|
habit:
|
|
chunking_profile: sliding_short
|
|
retriever_weight: 0.85
|
|
edge_defaults: ["related_to", "triggered_by"]
|
|
detection_keywords: ["gewohnheit", "routine", "automatismus", "immer wenn"]
|
|
schema:
|
|
- "Auslöser (Trigger)"
|
|
- "Routine (Handlung)"
|
|
- "Belohnung (Reward)"
|
|
- "Strategie"
|
|
|
|
need:
|
|
chunking_profile: sliding_smart_edges
|
|
retriever_weight: 1.05
|
|
edge_defaults: ["related_to", "impacts"]
|
|
detection_keywords: ["bedürfnis", "brauchen", "mangel", "erfüllung"]
|
|
schema:
|
|
- "Das Bedürfnis"
|
|
- "Zustand (Mangel vs. Erfüllung)"
|
|
- "Bezug zu Werten"
|
|
|
|
motivation:
|
|
chunking_profile: sliding_smart_edges
|
|
retriever_weight: 0.95
|
|
edge_defaults: ["drives", "references"]
|
|
detection_keywords: ["motivation", "antrieb", "warum", "energie"]
|
|
schema:
|
|
- "Der Antrieb"
|
|
- "Zielbezug"
|
|
- "Energiequelle"
|
|
|
|
bias:
|
|
chunking_profile: sliding_short
|
|
retriever_weight: 0.80
|
|
edge_defaults: ["affects", "related_to"]
|
|
detection_keywords: ["denkfehler", "verzerrung", "vorurteil", "falle"]
|
|
schema: ["Beschreibung der Verzerrung", "Typische Situationen", "Gegenstrategie"]
|
|
|
|
state:
|
|
chunking_profile: sliding_short
|
|
retriever_weight: 0.60
|
|
edge_defaults: ["impacts"]
|
|
detection_keywords: ["stimmung", "energie", "gefühl", "verfassung"]
|
|
schema: ["Aktueller Zustand", "Auslöser", "Auswirkung auf den Tag"]
|
|
|
|
boundary:
|
|
chunking_profile: sliding_smart_edges
|
|
retriever_weight: 0.90
|
|
edge_defaults: ["protects", "related_to"]
|
|
detection_keywords: ["grenze", "nein sagen", "limit", "schutz"]
|
|
schema: ["Die Grenze", "Warum sie wichtig ist", "Konsequenz bei Verletzung"]
|
|
# --- STRATEGIE & RISIKO ---
|
|
|
|
goal:
|
|
chunking_profile: sliding_smart_edges
|
|
retriever_weight: 0.95
|
|
edge_defaults: ["depends_on", "related_to"]
|
|
schema: ["Zielzustand", "Zeitrahmen & KPIs", "Motivation"]
|
|
|
|
risk:
|
|
chunking_profile: sliding_short
|
|
retriever_weight: 0.85
|
|
edge_defaults: ["related_to", "blocks"]
|
|
detection_keywords: ["risiko", "gefahr", "bedrohung"]
|
|
schema: ["Beschreibung des Risikos", "Auswirkungen", "Gegenmaßnahmen"]
|
|
|
|
# --- BASIS & WISSEN ---
|
|
|
|
concept:
|
|
chunking_profile: sliding_smart_edges
|
|
retriever_weight: 0.60
|
|
edge_defaults: ["references", "related_to"]
|
|
schema: ["Definition", "Kontext", "Verwandte Konzepte"]
|
|
|
|
task:
|
|
chunking_profile: sliding_short
|
|
retriever_weight: 0.80
|
|
edge_defaults: ["depends_on", "part_of"]
|
|
schema: ["Aufgabe", "Kontext", "Definition of Done"]
|
|
|
|
journal:
|
|
chunking_profile: sliding_standard
|
|
retriever_weight: 0.80
|
|
edge_defaults: ["references", "related_to"]
|
|
schema: ["Log-Eintrag", "Gedanken"]
|
|
|
|
source:
|
|
chunking_profile: sliding_standard
|
|
retriever_weight: 0.50
|
|
edge_defaults: []
|
|
schema: ["Metadaten", "Zusammenfassung", "Zitate"]
|
|
|
|
glossary:
|
|
chunking_profile: sliding_short
|
|
retriever_weight: 0.40
|
|
edge_defaults: ["related_to"]
|
|
schema: ["Begriff", "Definition"]
|
|
|
|
person:
|
|
chunking_profile: sliding_standard
|
|
retriever_weight: 0.50
|
|
edge_defaults: ["related_to"]
|
|
schema: ["Rolle", "Beziehung", "Kontext"]
|
|
|
|
event:
|
|
chunking_profile: sliding_standard
|
|
retriever_weight: 0.60
|
|
edge_defaults: ["related_to"]
|
|
schema: ["Datum & Ort", "Teilnehmer", "Ergebnisse"]
|
|
|
|
# --- FALLBACK ---
|
|
|
|
default:
|
|
chunking_profile: sliding_standard
|
|
retriever_weight: 1.00
|
|
edge_defaults: ["references"]
|
|
schema: ["Inhalt"]
|
|
|
|
# File: /config/decision_engine.yaml
|
|
###################################
|
|
|
|
# config/decision_engine.yaml
|
|
# VERSION: 3.2.2 (WP-25a: Decoupled MoE Logic)
|
|
# STATUS: Active
|
|
# DESCRIPTION: Zentrale Orchestrierung der Multi-Stream-Engine.
|
|
# FIX:
|
|
# - Auslagerung der LLM-Profile in llm_profiles.yaml zur zentralen Wartbarkeit.
|
|
# - Integration von compression_thresholds zur Inhaltsverdichtung (WP-25a).
|
|
# - 100% Erhalt aller WP-25 Edge-Boosts und Filter-Typen (v3.1.6).
|
|
|
|
version: 3.2
|
|
|
|
settings:
|
|
llm_fallback_enabled: true
|
|
# "auto" nutzt den globalen Default-Provider aus der .env
|
|
router_provider: "auto"
|
|
# Verweis auf den Intent-Klassifizierer in der prompts.yaml
|
|
router_prompt_key: "intent_router_v1"
|
|
# Pfad zur neuen Experten-Konfiguration (WP-25a Architektur-Cleanliness)
|
|
profiles_config_path: "config/llm_profiles.yaml"
|
|
router_profile: "compression_fast"
|
|
|
|
# --- EBENE 1: STREAM-LIBRARY (Bausteine basierend auf types.yaml v2.7.0) ---
|
|
streams_library:
|
|
values_stream:
|
|
name: "Identität & Ethik"
|
|
# Referenz auf Experten-Profil (z.B. lokal via Ollama für Privacy)
|
|
llm_profile: "identity_safe"
|
|
compression_profile: "identity_safe"
|
|
compression_threshold: 2500
|
|
query_template: "Welche meiner Werte und Prinzipien betreffen: {query}"
|
|
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
|
|
|
|
facts_stream:
|
|
name: "Operative Realität"
|
|
llm_profile: "synthesis_pro"
|
|
compression_profile: "compression_fast"
|
|
compression_threshold: 3500
|
|
query_template: "Status, Ressourcen und Fakten zu: {query}"
|
|
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
|
|
|
|
biography_stream:
|
|
name: "Persönliche Erfahrung"
|
|
llm_profile: "synthesis_pro"
|
|
compression_profile: "compression_fast"
|
|
compression_threshold: 3000
|
|
query_template: "Welche Erlebnisse habe ich im Kontext von {query} gemacht?"
|
|
filter_types: ["experience", "journal", "profile", "person"]
|
|
top_k: 3
|
|
edge_boosts:
|
|
related_to: 1.5
|
|
experienced_in: 2.0
|
|
expert_for: 2.5
|
|
|
|
risk_stream:
|
|
name: "Risiko-Radar"
|
|
llm_profile: "synthesis_pro"
|
|
compression_profile: "compression_fast"
|
|
compression_threshold: 2500
|
|
query_template: "Gefahren, Hindernisse oder Risiken bei: {query}"
|
|
filter_types: ["risk", "obstacle", "bias"]
|
|
top_k: 3
|
|
edge_boosts:
|
|
blocks: 2.5
|
|
impacts: 2.0
|
|
risk_of: 2.5
|
|
|
|
tech_stream:
|
|
name: "Wissen & Technik"
|
|
llm_profile: "tech_expert"
|
|
compression_profile: "compression_fast"
|
|
compression_threshold: 4500
|
|
query_template: "Inhaltliche Details und Definitionen zu: {query}"
|
|
filter_types: ["concept", "source", "glossary", "idea", "insight", "skill", "habit"]
|
|
top_k: 5
|
|
edge_boosts:
|
|
uses: 2.5
|
|
implemented_in: 3.0
|
|
|
|
# --- EBENE 2: STRATEGIEN (Finale Komposition via MoE-Profile) ---
|
|
strategies:
|
|
FACT_WHEN:
|
|
description: "Abfrage von exakten Zeitpunkten und Terminen."
|
|
llm_profile: "synthesis_pro"
|
|
trigger_keywords: ["wann", "datum", "uhrzeit", "zeitpunkt"]
|
|
use_streams: ["facts_stream", "biography_stream", "tech_stream"]
|
|
prompt_template: "fact_synthesis_v1"
|
|
|
|
FACT_WHAT:
|
|
description: "Abfrage von Definitionen, Listen und Inhalten."
|
|
llm_profile: "synthesis_pro"
|
|
trigger_keywords: ["was ist", "welche sind", "liste", "übersicht", "zusammenfassung"]
|
|
use_streams: ["facts_stream", "tech_stream", "biography_stream"]
|
|
prompt_template: "fact_synthesis_v1"
|
|
|
|
DECISION:
|
|
description: "Der User sucht Rat, Strategie oder Abwägung."
|
|
llm_profile: "synthesis_pro"
|
|
trigger_keywords: ["soll ich", "sollte ich", "entscheidung", "abwägen", "priorität", "empfehlung"]
|
|
use_streams: ["values_stream", "facts_stream", "risk_stream"]
|
|
prompt_template: "decision_synthesis_v1"
|
|
prepend_instruction: |
|
|
!!! ENTSCHEIDUNGS-MODUS (AGENTIC MULTI-STREAM) !!!
|
|
Analysiere die Fakten vor dem Hintergrund meiner Werte und evaluiere die Risiken.
|
|
Wäge ab, ob das Vorhaben mit meiner langfristigen Identität kompatibel ist.
|
|
|
|
EMPATHY:
|
|
description: "Reaktion auf emotionale Zustände."
|
|
llm_profile: "synthesis_pro"
|
|
trigger_keywords: ["fühle", "traurig", "glücklich", "stress", "angst"]
|
|
use_streams: ["biography_stream", "values_stream"]
|
|
prompt_template: "empathy_template"
|
|
|
|
CODING:
|
|
description: "Technische Anfragen und Programmierung."
|
|
llm_profile: "tech_expert"
|
|
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 (Eingabemodus)."
|
|
llm_profile: "compression_fast"
|
|
use_streams: []
|
|
prompt_template: "interview_template"
|
|
|
|
|
|
# File: config/prompts.yaml — VERSION 3.2.2 (WP-25b: Hierarchical Model Sync)
|
|
# STATUS: Active
|
|
# FIX:
|
|
# - 100% Erhalt der Original-Prompts aus v3.1.2 für die Provider-Ebene (ollama, gemini, openrouter).
|
|
# - Integration der Modell-spezifischen Overrides für Gemini 2.0, Llama 3.3 und Qwen 2.5.
|
|
# - Hinzufügen des notwendigen 'compression_template' für die DecisionEngine v1.3.0.
|
|
|
|
system_prompt: |
|
|
Du bist 'mindnet', mein digitaler Zwilling und strategischer Partner.
|
|
|
|
DEINE IDENTITÄT:
|
|
- Du bist nicht nur eine Datenbank, sondern handelst nach MEINEN Werten und Zielen.
|
|
- Du passt deinen Stil dynamisch an die Situation an (Analytisch, Empathisch oder Technisch).
|
|
|
|
DEINE REGELN:
|
|
1. Deine Antwort muss zu 100% auf dem bereitgestellten KONTEXT basieren.
|
|
2. Halluziniere keine Fakten, die nicht in den Quellen stehen.
|
|
3. Antworte auf Deutsch (außer bei Code/Fachbegriffen).
|
|
|
|
# ---------------------------------------------------------
|
|
# 1. STANDARD: Fakten & Wissen (Intent: FACT_WHAT / FACT_WHEN)
|
|
# ---------------------------------------------------------
|
|
fact_synthesis_v1:
|
|
# --- Modell-spezifisch (WP-25b Optimierung) ---
|
|
"google/gemini-2.0-flash-exp:free": |
|
|
Analysiere die Wissens-Streams für: {query}
|
|
FAKTEN: {facts_stream} | BIOGRAFIE: {biography_stream} | TECHNIK: {tech_stream}
|
|
Nutze deine hohe Reasoning-Kapazität für eine tiefe Synthese. Antworte präzise auf Deutsch.
|
|
|
|
"meta-llama/llama-3.3-70b-instruct:free": |
|
|
Erstelle eine fundierte Synthese für die Frage: "{query}"
|
|
Nutze die Daten: {facts_stream}, {biography_stream} und {tech_stream}.
|
|
Trenne klare Fakten von Erfahrungen. Bleibe strikt beim bereitgestellten Kontext.
|
|
|
|
# --- EXAKTE Provider-Fallbacks aus v3.1.2 ---
|
|
ollama: |
|
|
WISSENS-STREAMS:
|
|
=========================================
|
|
FAKTEN & STATUS:
|
|
{facts_stream}
|
|
|
|
ERFAHRUNG & BIOGRAFIE:
|
|
{biography_stream}
|
|
|
|
WISSEN & TECHNIK:
|
|
{tech_stream}
|
|
=========================================
|
|
|
|
FRAGE:
|
|
{query}
|
|
|
|
ANWEISUNG:
|
|
Beantworte die Frage präzise basierend auf den Quellen.
|
|
Kombiniere harte Fakten mit persönlichen Erfahrungen, falls vorhanden.
|
|
Fasse die Informationen zusammen. Sei objektiv und neutral.
|
|
|
|
gemini: |
|
|
Beantworte die Wissensabfrage "{query}" basierend auf diesen Streams:
|
|
FAKTEN: {facts_stream}
|
|
BIOGRAFIE/ERFAHRUNG: {biography_stream}
|
|
TECHNIK: {tech_stream}
|
|
Kombiniere harte Fakten mit persönlichen Erfahrungen, falls vorhanden. Antworte strukturiert und präzise.
|
|
|
|
openrouter: |
|
|
Synthese der Wissens-Streams für: {query}
|
|
Inhalt: {facts_stream} | {biography_stream} | {tech_stream}
|
|
Antworte basierend auf dem bereitgestellten Kontext.
|
|
|
|
default: "Beantworte {query} basierend auf dem Kontext: {facts_stream} {biography_stream} {tech_stream}."
|
|
|
|
# ---------------------------------------------------------
|
|
# 2. DECISION: Strategie & Abwägung (Intent: DECISION)
|
|
# ---------------------------------------------------------
|
|
decision_synthesis_v1:
|
|
# --- Modell-spezifisch (WP-25b Optimierung) ---
|
|
"google/gemini-2.0-flash-exp:free": |
|
|
Agiere als strategischer Partner für: {query}
|
|
WERTE: {values_stream} | FAKTEN: {facts_stream} | RISIKEN: {risk_stream}
|
|
Prüfe die Fakten gegen meine Werte. Zeige Zielkonflikte auf. Gib eine klare Empfehlung.
|
|
|
|
# --- EXAKTE Provider-Fallbacks aus v3.1.2 ---
|
|
ollama: |
|
|
ENTSCHEIDUNGS-STREAMS:
|
|
=========================================
|
|
WERTE & PRINZIPIEN (Identität):
|
|
{values_stream}
|
|
|
|
OPERATIVE FAKTEN (Realität):
|
|
{facts_stream}
|
|
|
|
RISIKO-RADAR (Konsequenzen):
|
|
{risk_stream}
|
|
=========================================
|
|
|
|
ENTSCHEIDUNGSFRAGE:
|
|
{query}
|
|
|
|
ANWEISUNG:
|
|
Du agierst als mein Entscheidungs-Partner.
|
|
1. Analysiere die Faktenlage aus den Quellen.
|
|
2. Prüfe dies hart gegen meine strategischen Notizen (Werte & Prinzipien).
|
|
3. Wäge ab: Passt die technische/faktische Lösung zu meinen Werten?
|
|
|
|
FORMAT:
|
|
- **Analyse:** (Kurze Zusammenfassung der Fakten)
|
|
- **Abgleich:** (Gibt es Konflikte mit Werten/Zielen? Nenne die Quelle!)
|
|
- **Empfehlung:** (Klare Meinung: Ja/No/Vielleicht mit Begründung)
|
|
|
|
gemini: |
|
|
Agiere als mein strategischer Partner. Analysiere die Frage: {query}
|
|
Werte: {values_stream} | Fakten: {facts_stream} | Risiken: {risk_stream}.
|
|
Wäge ab und gib eine klare strategische Empfehlung ab.
|
|
|
|
openrouter: |
|
|
Strategische Multi-Stream Analyse für: {query}
|
|
Werte-Basis: {values_stream} | Fakten: {facts_stream} | Risiken: {risk_stream}
|
|
Bitte wäge ab und gib eine Empfehlung.
|
|
|
|
default: "Prüfe {query} gegen Werte {values_stream} und Fakten {facts_stream}."
|
|
|
|
# ---------------------------------------------------------
|
|
# 3. EMPATHY: Der Spiegel / "Ich"-Modus (Intent: EMPATHY)
|
|
# ---------------------------------------------------------
|
|
empathy_template:
|
|
# --- EXAKTE Provider-Fallbacks aus v3.1.2 ---
|
|
ollama: |
|
|
KONTEXT (ERFAHRUNGEN & WERTE):
|
|
=========================================
|
|
ERLEBNISSE & BIOGRAFIE:
|
|
{biography_stream}
|
|
|
|
WERTE & BEDÜRFNISSE:
|
|
{values_stream}
|
|
=========================================
|
|
|
|
SITUATION:
|
|
{query}
|
|
|
|
ANWEISUNG:
|
|
Du agierst jetzt als mein empathischer Spiegel.
|
|
1. Versuche nicht sofort, das Problem technisch zu lösen.
|
|
2. Zeige Verständnis für die Situation basierend auf meinen eigenen Erfahrungen ([EXPERIENCE]) oder Werten, falls im Kontext vorhanden.
|
|
3. Antworte in der "Ich"-Form oder "Wir"-Form. Sei unterstützend.
|
|
|
|
TONFALL:
|
|
Ruhig, verständnisvoll, reflektiert. Keine Aufzählungszeichen, sondern fließender Text.
|
|
|
|
gemini: "Sei mein digitaler Spiegel für {query}. Kontext: {biography_stream}, {values_stream}"
|
|
openrouter: "Empathische Reflexion der Situation {query}. Persönlicher Kontext: {biography_stream}, {values_stream}"
|
|
|
|
default: "Reflektiere empathisch über {query} basierend auf {biography_stream}."
|
|
|
|
# ---------------------------------------------------------
|
|
# 4. TECHNICAL: Der Coder (Intent: CODING)
|
|
# ---------------------------------------------------------
|
|
technical_template:
|
|
# --- Modell-spezifisch (WP-25b Optimierung) ---
|
|
"qwen/qwen-2.5-vl-7b-instruct:free": |
|
|
Du bist Senior Software Engineer. TASK: {query}
|
|
REFERENZEN: {tech_stream} | KONTEXT: {facts_stream}
|
|
Generiere validen, performanten Code. Nutze die Snippets aus dem Kontext.
|
|
|
|
# --- EXAKTE Provider-Fallbacks aus v3.1.2 ---
|
|
ollama: |
|
|
KONTEXT (WISSEN & PROJEKTE):
|
|
=========================================
|
|
TECHNIK & SNIPPETS:
|
|
{tech_stream}
|
|
|
|
PROJEKT-STATUS:
|
|
{facts_stream}
|
|
=========================================
|
|
|
|
TASK:
|
|
{query}
|
|
|
|
ANWEISUNG:
|
|
Du bist Senior Developer.
|
|
1. Ignoriere Smalltalk. Komm sofort zum Punkt.
|
|
2. Generiere validen, performanten Code basierend auf den Quellen.
|
|
3. Wenn Quellen fehlen, nutze dein allgemeines Programmierwissen, aber weise darauf hin.
|
|
|
|
FORMAT:
|
|
- Kurze Erklärung des Ansatzes.
|
|
- Markdown Code-Block (Copy-Paste fertig).
|
|
- Wichtige Edge-Cases.
|
|
|
|
gemini: "Generiere Code für {query} unter Berücksichtigung von {tech_stream} und {facts_stream}."
|
|
openrouter: "Technischer Support für {query}. Referenzen: {tech_stream}, Projekt-Kontext: {facts_stream}"
|
|
|
|
default: "Erstelle eine technische Lösung für {query}."
|
|
|
|
# ---------------------------------------------------------
|
|
# 5. INTERVIEW: Der "One-Shot Extractor" (WP-07)
|
|
# ---------------------------------------------------------
|
|
interview_template:
|
|
# --- EXAKTE Provider-Fallbacks aus v3.1.2 ---
|
|
ollama: |
|
|
TASK:
|
|
Du bist ein professioneller Ghostwriter. Verwandle den "USER INPUT" in eine strukturierte Notiz vom Typ '{target_type}'.
|
|
|
|
STRUKTUR (Nutze EXAKT diese Überschriften):
|
|
{schema_fields}
|
|
|
|
USER INPUT:
|
|
"{query}"
|
|
|
|
ANWEISUNG ZUM INHALT:
|
|
1. Analysiere den Input genau.
|
|
2. Schreibe die Inhalte unter die passenden Überschriften aus der STRUKTUR-Liste oben.
|
|
3. STIL: Schreibe flüssig, professionell und in der Ich-Perspektive. Korrigiere Grammatikfehler, aber behalte den persönlichen Ton bei.
|
|
4. Wenn Informationen für einen Abschnitt fehlen, schreibe nur: "[TODO: Ergänzen]". Erfinde nichts dazu.
|
|
|
|
OUTPUT FORMAT (YAML + MARKDOWN):
|
|
---
|
|
type: {target_type}
|
|
status: draft
|
|
title: (Erstelle einen treffenden, kurzen Titel für den Inhalt)
|
|
tags: [Tag1, Tag2]
|
|
---
|
|
|
|
# (Wiederhole den Titel hier)
|
|
|
|
## (Erster Begriff aus STRUKTUR)
|
|
(Text...)
|
|
|
|
## (Zweiter Begriff aus STRUKTUR)
|
|
(Text...)
|
|
|
|
gemini: "Extrahiere Daten für {target_type} aus {query}."
|
|
openrouter: "Strukturiere den Input {query} nach dem Schema {schema_fields} für Typ {target_type}."
|
|
|
|
default: "Extrahiere Informationen für {target_type} aus dem Input: {query}"
|
|
|
|
# ---------------------------------------------------------
|
|
# 6. WP-25b: PRE-SYNTHESIS COMPRESSION (Neu!)
|
|
# ---------------------------------------------------------
|
|
compression_template:
|
|
"mistralai/mistral-7b-instruct:free": |
|
|
Reduziere den Stream '{stream_name}' auf die Informationen, die für die Beantwortung der Frage '{query}' absolut notwendig sind.
|
|
BEHALTE: Harte Fakten, Projektnamen, konkrete Werte und Quellenangaben.
|
|
ENTFERNE: Redundante Einleitungen, Füllwörter und irrelevante Details.
|
|
|
|
INHALT:
|
|
{content}
|
|
|
|
KOMPRIMIERTE ANALYSE:
|
|
|
|
default: "Fasse das Wichtigste aus {stream_name} für die Frage {query} kurz zusammen: {content}"
|
|
|
|
# ---------------------------------------------------------
|
|
# 7. EDGE_ALLOCATION: Kantenfilter (Ingest)
|
|
# ---------------------------------------------------------
|
|
edge_allocation_template:
|
|
ollama: |
|
|
TASK:
|
|
Du bist ein strikter Selektor. Du erhältst eine Liste von "Kandidaten-Kanten" (Strings).
|
|
Wähle jene aus, die inhaltlich im "Textabschnitt" vorkommen oder relevant sind.
|
|
|
|
TEXTABSCHNITT:
|
|
"""
|
|
{chunk_text}
|
|
"""
|
|
|
|
KANDIDATEN (Auswahl-Pool):
|
|
{edge_list}
|
|
|
|
REGELN:
|
|
1. Die Kanten haben das Format "typ:ziel". Der "typ" ist variabel und kann ALLES sein.
|
|
2. Gib NUR die Strings aus der Kandidaten-Liste zurück, die zum Text passen.
|
|
3. Erfinde KEINE neuen Kanten.
|
|
4. Antworte als flache JSON-Liste.
|
|
|
|
DEIN OUTPUT (JSON):
|
|
|
|
gemini: |
|
|
TASK: Ordne Kanten einem Textabschnitt zu.
|
|
ERLAUBTE TYPEN: {valid_types}
|
|
TEXT: {chunk_text}
|
|
KANDIDATEN: {edge_list}
|
|
OUTPUT: STRIKT eine flache JSON-Liste ["typ:ziel"]. Kein Text davor/danach. Wenn nichts: []. Keine Objekte!
|
|
|
|
openrouter: |
|
|
TASK: Filtere relevante Kanten aus dem Pool.
|
|
ERLAUBTE TYPEN: {valid_types}
|
|
TEXT: {chunk_text}
|
|
POOL: {edge_list}
|
|
ANWEISUNG: Gib NUR eine flache JSON-Liste von Strings zurück.
|
|
BEISPIEL: ["kind:target", "kind:target"]
|
|
REGEL: Kein Text, keine Analyse, keine Kommentare. Wenn nichts passt, gib [] zurück.
|
|
OUTPUT:
|
|
|
|
default: "[]"
|
|
|
|
# ---------------------------------------------------------
|
|
# 8. SMART EDGE ALLOCATION: Extraktion (Ingest)
|
|
# ---------------------------------------------------------
|
|
edge_extraction:
|
|
ollama: |
|
|
TASK:
|
|
Du bist ein Wissens-Ingenieur für den digitalen Zwilling 'mindnet'.
|
|
Deine Aufgabe ist es, semantische Relationen (Kanten) aus dem Text zu extrahieren,
|
|
die die Hauptnotiz '{note_id}' mit anderen Konzepten verbinden.
|
|
|
|
ANWEISUNGEN:
|
|
1. Identifiziere wichtige Entitäten, Konzepte oder Ereignisse im Text.
|
|
2. Bestimme die Art der Beziehung (z.B. part_of, uses, related_to, blocks, caused_by).
|
|
3. Das Ziel (target) muss ein prägnanter Begriff sein.
|
|
4. Antworte AUSSCHLIESSLICH in validem JSON als Liste von Objekten.
|
|
|
|
BEISPIEL:
|
|
[[ {{"to": "Ziel-Konzept", \"kind\": \"beziehungs_typ\"}} ]]
|
|
|
|
TEXT:
|
|
"""
|
|
{text}
|
|
"""
|
|
|
|
DEIN OUTPUT (JSON):
|
|
|
|
gemini: |
|
|
Analysiere '{note_id}'. Extrahiere semantische Beziehungen.
|
|
ERLAUBTE TYPEN: {valid_types}
|
|
TEXT: {text}
|
|
OUTPUT: STRIKT JSON-Array von Objekten: [[{{"to\":\"Ziel\",\"kind\":\"typ\"}}]]. Kein Text davor/danach. Wenn nichts: [].
|
|
|
|
openrouter: |
|
|
TASK: Extrahiere semantische Relationen für '{note_id}'.
|
|
ERLAUBTE TYPEN: {valid_types}
|
|
TEXT: {text}
|
|
ANWEISUNG: Antworte AUSSCHLIESSLICH mit einem JSON-Array von Objekten.
|
|
FORMAT: [[{{"to\":\"Ziel-Begriff\",\"kind\":\"typ\"}}]]
|
|
STRIKTES VERBOT: Schreibe keine Einleitung, keine Analyse und keine Erklärungen.
|
|
Wenn keine Relationen existieren, antworte NUR mit: []
|
|
OUTPUT:
|
|
|
|
default: "[]"
|
|
|
|
# ---------------------------------------------------------
|
|
# 9. INGESTION: EDGE VALIDATION (Ingest/Validate)
|
|
# ---------------------------------------------------------
|
|
edge_validation:
|
|
# --- Modell-spezifisch (WP-25b Optimierung) ---
|
|
"mistralai/mistral-7b-instruct:free": |
|
|
Verify relation '{edge_kind}' for graph integrity.
|
|
Chunk: "{chunk_text}"
|
|
Target: "{target_title}" ({target_summary})
|
|
Respond ONLY with 'YES' or 'NO'.
|
|
|
|
# --- EXAKTE Provider-Fallbacks aus v3.1.2 ---
|
|
gemini: |
|
|
Bewerte die semantische Validität dieser Verbindung im Wissensgraph.
|
|
|
|
KONTEXT DER QUELLE (Chunk):
|
|
"{chunk_text}"
|
|
|
|
ZIEL-NOTIZ: "{target_title}"
|
|
ZIEL-BESCHREIBUNG (Zusammenfassung):
|
|
"{target_summary}"
|
|
|
|
GEPLANTE RELATION: "{edge_kind}"
|
|
|
|
FRAGE: Bestätigt der Kontext der Quelle die Beziehung '{edge_kind}' zum Ziel?
|
|
REGEL: Antworte NUR mit 'YES' oder 'NO'. Keine Erklärungen oder Smalltalk.
|
|
|
|
openrouter: |
|
|
Verify semantic relation for graph construction.
|
|
Source Context: {chunk_text}
|
|
Target Note: {target_title}
|
|
Target Summary: {target_summary}
|
|
Proposed Relation: {edge_kind}
|
|
Instruction: Does the source context support this relation to the target?
|
|
Result: Respond ONLY with 'YES' or 'NO'.
|
|
|
|
ollama: |
|
|
Bewerte die semantische Korrektheit dieser Verbindung.
|
|
QUELLE: {chunk_text}
|
|
ZIEL: {target_title} ({target_summary})
|
|
BEZIEHUNG: {edge_kind}
|
|
Ist diese Verbindung valide? Antworte NUR mit YES oder NO.
|
|
|
|
default: "YES"
|
|
|
|
# ---------------------------------------------------------
|
|
# 10. WP-25: INTENT ROUTING (Intent: CLASSIFY)
|
|
# ---------------------------------------------------------
|
|
intent_router_v1:
|
|
# --- Modell-spezifisch (WP-25b Optimierung) ---
|
|
"mistralai/mistral-7b-instruct:free": |
|
|
Classify query "{query}" into exactly one of these categories:
|
|
FACT_WHEN, FACT_WHAT, DECISION, EMPATHY, CODING, INTERVIEW.
|
|
Respond with the category name only.
|
|
|
|
# --- EXAKTE Provider-Fallbacks aus v3.1.2 ---
|
|
ollama: |
|
|
Analysiere die Nutzeranfrage und wähle die passende Strategie.
|
|
Antworte NUR mit dem Namen der Strategie.
|
|
|
|
STRATEGIEN:
|
|
- 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 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 strategy for Mindnet:
|
|
FACT_WHEN (timing/dates), FACT_WHAT (entities/lists/what/which), DECISION, EMPATHY, CODING, INTERVIEW.
|
|
Query: "{query}"
|
|
Response:
|
|
|
|
default: "FACT_WHAT"
|
|
|
|
# ---------------------------------------------------------
|
|
# 11. WP-25b: FALLBACK SYNTHESIS (Error Recovery)
|
|
# ---------------------------------------------------------
|
|
fallback_synthesis:
|
|
ollama: |
|
|
Beantworte die folgende Frage basierend auf dem bereitgestellten Kontext.
|
|
|
|
FRAGE:
|
|
{query}
|
|
|
|
KONTEXT:
|
|
{context}
|
|
|
|
ANWEISUNG:
|
|
Nutze den Kontext, um eine präzise Antwort zu geben. Falls der Kontext unvollständig ist, weise darauf hin.
|
|
|
|
gemini: |
|
|
Frage: {query}
|
|
Kontext: {context}
|
|
Antworte basierend auf dem Kontext.
|
|
|
|
openrouter: |
|
|
Answer the question "{query}" using the provided context: {context}
|
|
|
|
default: "Answer: {query}\n\nContext: {context}"
|
|
|
|
# file: retriever.yaml
|
|
###############################
|
|
version: 1.2
|
|
|
|
scoring:
|
|
# W_sem: skaliert den Term (semantic_score * retriever_weight)
|
|
# Empfehlung Startwert: 1.0 → Semantik bleibt Hauptsignal
|
|
semantic_weight: 1.0
|
|
|
|
# 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 # +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:
|
|
# --- 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. |