mindnet/docs/03_Technical_References/KONFIGURATION_EDGE_ZONEN.md

243 lines
7.0 KiB
Markdown

# Konfiguration von Edge-Zonen Headern (v4.2.0)
**Version:** v4.2.0
**Status:** Aktiv
## Übersicht
Das Mindnet-System unterstützt zwei Arten von speziellen Markdown-Sektionen für Kanten:
1. **LLM-Validierung Zonen** - Links, die vom LLM validiert werden
2. **Note-Scope Zonen** - Links, die der gesamten Note zugeordnet werden
Die Header-Namen für beide Zonen-Typen sind über Umgebungsvariablen konfigurierbar.
## Konfiguration via .env
### LLM-Validierung Header
**Umgebungsvariablen:**
- `MINDNET_LLM_VALIDATION_HEADERS` - Komma-separierte Liste von Header-Namen
- `MINDNET_LLM_VALIDATION_HEADER_LEVEL` - Header-Ebene (1-6, Default: 3 für `###`)
**Format:** Komma-separierte Liste von Header-Namen
**Default:**
```
MINDNET_LLM_VALIDATION_HEADERS=Unzugeordnete Kanten,Edge Pool,Candidates
MINDNET_LLM_VALIDATION_HEADER_LEVEL=3
```
**Beispiel:**
```env
MINDNET_LLM_VALIDATION_HEADERS=Unzugeordnete Kanten,Edge Pool,Candidates,Zu prüfende Links
MINDNET_LLM_VALIDATION_HEADER_LEVEL=3
```
**Verwendung in Markdown:**
```markdown
### Unzugeordnete Kanten
related_to:Ziel-Notiz
depends_on:Andere Notiz
```
**Wichtig:** Diese Bereiche werden **nicht als Chunks angelegt**, sondern nur die Kanten extrahiert.
### Note-Scope Zone Header
**Umgebungsvariablen:**
- `MINDNET_NOTE_SCOPE_ZONE_HEADERS` - Komma-separierte Liste von Header-Namen
- `MINDNET_NOTE_SCOPE_HEADER_LEVEL` - Header-Ebene (1-6, Default: 2 für `##`)
**Format:** Komma-separierte Liste von Header-Namen
**Default:**
```
MINDNET_NOTE_SCOPE_ZONE_HEADERS=Smart Edges,Relationen,Global Links,Note-Level Relations,Globale Verbindungen
MINDNET_NOTE_SCOPE_HEADER_LEVEL=2
```
**Beispiel:**
```env
MINDNET_NOTE_SCOPE_ZONE_HEADERS=Smart Edges,Relationen,Globale Verbindungen,Note-Level Links
MINDNET_NOTE_SCOPE_HEADER_LEVEL=2
```
**Verwendung in Markdown:**
```markdown
## Smart Edges
[[rel:depends_on|Globale Notiz]]
[[rel:part_of|System-Übersicht]]
```
**Wichtig:** Diese Bereiche werden **nicht als Chunks angelegt**, sondern nur die Kanten extrahiert.
## Konfiguration in prod.env
Fügen Sie die folgenden Zeilen zu Ihrer `.env` oder `config/prod.env` hinzu:
```env
# --- WP-24c v4.2.0: Konfigurierbare Markdown-Header für Edge-Zonen ---
# Komma-separierte Liste von Headern für LLM-Validierung
MINDNET_LLM_VALIDATION_HEADERS=Unzugeordnete Kanten,Edge Pool,Candidates
# Header-Ebene für LLM-Validierung (1-6, Default: 3 für ###)
MINDNET_LLM_VALIDATION_HEADER_LEVEL=3
# Komma-separierte Liste von Headern für Note-Scope Zonen
MINDNET_NOTE_SCOPE_ZONE_HEADERS=Smart Edges,Relationen,Global Links,Note-Level Relations,Globale Verbindungen
# Header-Ebene für Note-Scope Zonen (1-6, Default: 2 für ##)
MINDNET_NOTE_SCOPE_HEADER_LEVEL=2
```
**Wichtig:** Beide Zonen-Typen werden **nicht als Chunks angelegt**. Nur die Kanten werden extrahiert, der Text selbst wird vom Chunking ausgeschlossen.
## Unterschiede
### LLM-Validierung Zonen
- **Header-Ebene:** Konfigurierbar via `MINDNET_LLM_VALIDATION_HEADER_LEVEL` (Default: 3 = `###`)
- **Zweck:** Links werden vom LLM validiert
- **Provenance:** `global_pool`
- **Scope:** `chunk` (wird Chunks zugeordnet)
- **Aktivierung:** Nur wenn `enable_smart_edge_allocation: true`
- **Chunking:** ❌ **Diese Bereiche werden NICHT als Chunks angelegt** - nur Kanten werden extrahiert
**Beispiel:**
```markdown
### Unzugeordnete Kanten
related_to:Mögliche Verbindung
depends_on:Unsichere Notiz
```
### Note-Scope Zonen
- **Header-Ebene:** Konfigurierbar via `MINDNET_NOTE_SCOPE_HEADER_LEVEL` (Default: 2 = `##`)
- **Zweck:** Links werden der gesamten Note zugeordnet
- **Provenance:** `explicit:note_zone`
- **Scope:** `note` (Note-weite Verbindung)
- **Aktivierung:** Immer aktiv
- **Chunking:** ❌ **Diese Bereiche werden NICHT als Chunks angelegt** - nur Kanten werden extrahiert
**Beispiel:**
```markdown
## Smart Edges
[[rel:depends_on|Globale Notiz]]
[[rel:part_of|System-Übersicht]]
```
## Best Practices
### ✅ Empfohlen
1. **Konsistente Header-Namen:**
- Nutzen Sie aussagekräftige Namen
- Dokumentieren Sie die verwendeten Header in Ihrem Team
2. **Minimale Konfiguration:**
- Nutzen Sie die Defaults, wenn möglich
- Nur bei Bedarf anpassen
3. **Dokumentation:**
- Dokumentieren Sie benutzerdefinierte Header in Ihrer Projekt-Dokumentation
### ❌ Vermeiden
1. **Zu viele Header:**
- Zu viele Optionen können verwirrend sein
- Beschränken Sie sich auf 3-5 Header pro Typ
2. **Ähnliche Namen:**
- Vermeiden Sie Header, die sich zu ähnlich sind
- Klare Unterscheidung zwischen LLM-Validierung und Note-Scope
## Technische Details
### Code-Referenzen
- **LLM-Validierung:** `app/core/chunking/chunking_processor.py` (Zeile 66-72)
- **Note-Scope Zonen:** `app/core/graph/graph_derive_edges.py``get_note_scope_zone_headers()`
### Fallback-Verhalten
- Wenn die Umgebungsvariable nicht gesetzt ist, werden die Defaults verwendet
- Wenn die Variable leer ist, werden ebenfalls die Defaults verwendet
- Header-Namen werden case-insensitive verglichen
### Regex-Escape
- Header-Namen werden automatisch für Regex escaped
- Sonderzeichen in Header-Namen sind sicher
## Beispiel-Konfiguration
```env
# Eigene Header-Namen für LLM-Validierung (H3)
MINDNET_LLM_VALIDATION_HEADERS=Zu prüfende Links,Kandidaten,Edge Pool
MINDNET_LLM_VALIDATION_HEADER_LEVEL=3
# Eigene Header-Namen für Note-Scope Zonen (H2)
MINDNET_NOTE_SCOPE_ZONE_HEADERS=Globale Relationen,Note-Verbindungen,Smart Links
MINDNET_NOTE_SCOPE_HEADER_LEVEL=2
```
**Alternative:** Beide auf H2 setzen:
```env
MINDNET_LLM_VALIDATION_HEADER_LEVEL=2
MINDNET_NOTE_SCOPE_HEADER_LEVEL=2
```
**Verwendung:**
```markdown
---
type: decision
title: Meine Notiz
---
# Inhalt
## Globale Relationen
[[rel:depends_on|System-Architektur]]
### Zu prüfende Links
related_to:Mögliche Verbindung
```
## FAQ
**Q: Kann ich beide Zonen-Typen in einer Notiz verwenden?**
A: Ja, beide können gleichzeitig verwendet werden.
**Q: Was passiert, wenn ein Header in beiden Listen steht?**
A: Die Note-Scope Zone hat Vorrang (wird als Note-Scope behandelt).
**Q: Können Header-Namen Leerzeichen enthalten?**
A: Ja, Leerzeichen werden beibehalten.
**Q: Werden Header-Namen case-sensitive verglichen?**
A: Nein, der Vergleich ist case-insensitive.
**Q: Kann ich Header-Namen mit Sonderzeichen verwenden?**
A: Ja, Sonderzeichen werden automatisch für Regex escaped.
## Zusammenfassung
-**LLM-Validierung:**
- `MINDNET_LLM_VALIDATION_HEADERS` (Header-Namen, komma-separiert)
- `MINDNET_LLM_VALIDATION_HEADER_LEVEL` (Header-Ebene 1-6, Default: 3)
-**Nicht als Chunks angelegt** - nur Kanten werden extrahiert
-**Note-Scope Zonen:**
- `MINDNET_NOTE_SCOPE_ZONE_HEADERS` (Header-Namen, komma-separiert)
- `MINDNET_NOTE_SCOPE_HEADER_LEVEL` (Header-Ebene 1-6, Default: 2)
-**Nicht als Chunks angelegt** - nur Kanten werden extrahiert
-**Format:** Komma-separierte Liste für Header-Namen
-**Fallback:** Defaults werden verwendet, falls nicht konfiguriert
-**Case-insensitive:** Header-Namen werden case-insensitive verglichen