mindnet_obsidian/docs/Interview_Config_Guide.md
Lars 8186ca5ce0
Some checks are pending
Node.js build / build (20.x) (push) Waiting to run
Node.js build / build (22.x) (push) Waiting to run
Enhance interview configuration and documentation for WP-26 integration
- Added the `Interview_Config_Guide.md` for comprehensive instructions on creating interview profiles and utilizing various note types.
- Updated `00_Dokumentations_Index.md` to include links to the new guide and improved navigation for WP-26 related resources.
- Enhanced `06_Konfigurationsdateien_Referenz.md` with references to the new guide and clarified YAML structure for interview configurations.
- Introduced `audit_geburtsdatei.md` for detailed analysis of section connections and edge types, highlighting critical issues and recommendations for improvement.
- Improved renderer tests to ensure proper handling of section types and edge generation, aligning with the new WP-26 features.
2026-01-30 12:37:06 +01:00

858 lines
24 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Interview Config Guide - Vollständige Anleitung für `interview_config.yaml`
> **Version:** 1.0.0
> **Stand:** 2025-01-25
> **Zielgruppe:** Administratoren, GenAI-Assistenten, Plugin-Entwickler
> **Zweck:** Vollständige Dokumentation zur Erstellung von Interview-Profilen für verschiedene Note-Typen
---
## Inhaltsverzeichnis
1. [Überblick](#überblick)
2. [Grundstruktur](#grundstruktur)
3. [Root-Level Felder](#root-level-felder)
4. [Profile-Definition](#profile-definition)
5. [Step-Typen](#step-typen)
6. [WP-26 Features (Section Types & Block-IDs)](#wp-26-features-section-types--block-ids)
7. [Beispiele für verschiedene Note-Typen](#beispiele-für-verschiedene-note-typen)
8. [Best Practices & Patterns](#best-practices--patterns)
9. [Validierung & Fehlerbehandlung](#validierung--fehlerbehandlung)
---
## Überblick
Die `interview_config.yaml` definiert **Interview-Profile** für die strukturierte Erstellung von Notes im Obsidian Vault. Jedes Profil beschreibt einen **Wizard-Flow** mit mehreren **Steps**, die nacheinander durchlaufen werden, um eine Note zu erstellen.
### Wichtige Konzepte
- **Profile:** Ein Interview-Profil entspricht einem Note-Typ (z.B. `experience`, `insight`, `decision`)
- **Steps:** Einzelne Schritte im Interview-Wizard (z.B. Text-Eingabe, Frontmatter-Feld, Loop)
- **Loops:** Wiederholbare Steps für Listen von Items
- **Section Types (WP-26):** Typisierung von Abschnitten innerhalb einer Note
- **Block-IDs (WP-26):** Eindeutige Referenzpunkte für Intra-Note-Verlinkungen
---
## Grundstruktur
```yaml
version: 3
frontmatter_whitelist:
- id
- title
- type
- status
# ... weitere erlaubte Frontmatter-Keys
ui_defaults:
modal:
width: "clamp(720px, 88vw, 1100px)"
height: "clamp(640px, 86vh, 920px)"
editor:
preview_toggle: true
toolbar: true
full_width_inputs: true
profiles:
- key: profile_key
label: "Anzeige-Name"
note_type: experience
# ... Profile-Definition
```
---
## Root-Level Felder
### `version` (string, optional)
**Standard:** `3`
Die Versionsnummer der Config-Datei. Aktuell wird Version `3` verwendet.
### `frontmatter_whitelist` (array of strings, optional)
Liste von Frontmatter-Keys, die im Wizard bearbeitet werden können.
**Standard-Keys (immer verfügbar):**
- `id`
- `title`
- `type`
- `status`
- `retriever_weight`
- `chunking_profile`
- `tags`
- `aliases`
- `created`
- `interview_profile`
**Beispiel:**
```yaml
frontmatter_whitelist:
- custom_field
- priority
```
### `ui_defaults` (object, optional)
Standard-UI-Einstellungen für den Interview-Wizard.
**Felder:**
- `modal.width` (string): CSS-Width für das Modal
- `modal.height` (string): CSS-Height für das Modal
- `editor.preview_toggle` (boolean): Preview-Toggle anzeigen
- `editor.toolbar` (boolean): Toolbar anzeigen
- `editor.full_width_inputs` (boolean): Volle Breite für Inputs
### `profiles` (array, **required**)
Liste von Interview-Profilen. Siehe [Profile-Definition](#profile-definition).
---
## Profile-Definition
Jedes Profil definiert einen vollständigen Interview-Wizard für einen Note-Typ.
### Pflichtfelder
- **`key`** (string, required): Eindeutiger Schlüssel für das Profil (z.B. `experience_cluster`)
- **`label`** (string, required): Anzeige-Name im UI
- **`note_type`** (string, required): Note-Typ (muss mit `types.yaml` übereinstimmen, z.B. `experience`, `insight`, `decision`)
- **`steps`** (array, required): Liste von Steps (mindestens ein Step)
### Optionale Felder
- **`group`** (string, optional): Gruppierung für UI (z.B. `experience`, `insight`)
- **`defaults`** (object, optional): Standardwerte für Frontmatter
- `status` (string): Standard-Status (z.B. `active`, `stable`)
- `folder` (string): Standard-Ordner für neue Notes
- `chunking_profile` (string): Standard-Chunking-Profil
- `retriever_weight` (number): Standard-Retriever-Weight
- `tags` (array of strings): Standard-Tags
- **`edging`** (object, optional): Semantic Mapping Konfiguration
- `mode` (string): `"none"` | `"post_run"` | `"inline_micro"` | `"both"` (Standard: `"none"`)
- `wrapperCalloutType` (string, optional): Override für Wrapper-Callout-Typ
- `wrapperTitle` (string, optional): Override für Wrapper-Titel
- `wrapperFolded` (boolean, optional): Override für Wrapper-Folded-State
**Beispiel:**
```yaml
profiles:
- key: experience_basic
group: experience
label: "Erfahrung (Basis)"
note_type: experience
defaults:
status: active
folder: "03_experience"
chunking_profile: timeline
edging:
mode: both
steps:
# ... Steps
```
---
## Step-Typen
### 1. `capture_frontmatter` - Frontmatter-Feld erfassen
Erfasst ein einzelnes Frontmatter-Feld.
**Felder:**
- `id` (string, required): Eindeutige Step-ID
- `kind` (string, required): `"capture_frontmatter"`
- `field` (string, required): Frontmatter-Feld-Name (muss in `frontmatter_whitelist` sein)
- `label` (string, optional): Anzeige-Name (Standard: `field`)
- `required` (boolean, optional): Ob erforderlich (Standard: `false`)
- `prompt` (string, optional): Prompt-Text für den Benutzer
- `input.kind` (string, optional): Input-Typ (`text_line`, `number`, `select`, etc.)
- `input.min` (number, optional): Min-Wert für `number`
- `input.max` (number, optional): Max-Wert für `number`
- `input.step` (number, optional): Step-Wert für `number`
- `input.options` (array, optional): Optionen für `select`
**Beispiel:**
```yaml
- id: title
kind: capture_frontmatter
field: title
label: "Titel"
required: true
prompt: "Gib einen Titel für die Note ein"
- id: retriever_weight
kind: capture_frontmatter
field: retriever_weight
label: "Retriever Weight"
required: false
input:
kind: number
min: -3
max: 3
step: 1
```
### 2. `capture_text` - Mehrzeiligen Text erfassen
Erfasst mehrzeiligen Text und erzeugt eine Section in der Note.
**Felder:**
- `id` (string, required): Eindeutige Step-ID
- `kind` (string, required): `"capture_text"`
- `label` (string, optional): Anzeige-Name
- `required` (boolean, optional): Ob erforderlich (Standard: `false`)
- `prompt` (string, optional): Prompt-Text für den Benutzer
- `section` (string, optional): Markdown-Section-Header (z.B. `"## 📖 Kontext"`)
- Wenn leer (`""`), wird kein Section-Header erzeugt (z.B. in Loops)
- **WP-26 Felder:** Siehe [WP-26 Features](#wp-26-features-section-types--block-ids)
**Beispiel:**
```yaml
- id: context
kind: capture_text
section: "## 📖 Kontext"
label: "Kontext"
required: true
prompt: "Beschreibe den Kontext der Erfahrung"
section_type: experience
generate_block_id: true
```
### 3. `capture_text_line` - Einzeiligen Text erfassen
Erfasst einzeiligen Text, optional mit Heading-Level.
**Felder:**
- `id` (string, required): Eindeutige Step-ID
- `kind` (string, required): `"capture_text_line"`
- `label` (string, optional): Anzeige-Name
- `required` (boolean, optional): Ob erforderlich (Standard: `false`)
- `prompt` (string, optional): Prompt-Text für den Benutzer
- `heading_level.enabled` (boolean, optional): Heading-Level-Selector anzeigen (Standard: `false`)
- `heading_level.default` (number, optional): Standard-Heading-Level 1-6 (Standard: `2`)
- **WP-26 Felder:** Siehe [WP-26 Features](#wp-26-features-section-types--block-ids)
**Beispiel:**
```yaml
- id: subtitle
kind: capture_text_line
label: "Untertitel"
heading_level:
enabled: true
default: 1
prompt: "Kurzer Untertitel"
section_type: experience
generate_block_id: true
```
### 4. `loop` - Wiederholbare Steps
Erzeugt eine Liste von Items, die durch wiederholte Ausführung der Sub-Steps erzeugt werden.
**Felder:**
- `id` (string, required): Eindeutige Step-ID
- `kind` (string, required): `"loop"`
- `label` (string, optional): Anzeige-Name für die Loop
- `item_label` (string, optional): Anzeige-Name für einzelne Items (z.B. `"Erlebnis"`)
- `min_items` (number, optional): Minimale Anzahl Items (Standard: `0`)
- `max_items` (number, optional): Maximale Anzahl Items (kein Limit, wenn nicht gesetzt)
- `steps` (array, required): Liste von Sub-Steps (werden für jedes Item ausgeführt)
- `output.join` (string, optional): String zum Verbinden der Items (Standard: `"\n\n"`)
- `ui.mode` (string, optional): UI-Modus (`subwizard` | `inline`, Standard: `inline`)
- `ui.commit` (string, optional): Commit-Modus (`explicit_add` | `on_next`, Standard: `explicit_add`)
- `ui.allow_edit` (boolean, optional): Bearbeitung erlauben (Standard: `false`)
- `ui.allow_delete` (boolean, optional): Löschen erlauben (Standard: `false`)
- `ui.allow_reorder` (boolean, optional): Neuordnen erlauben (Standard: `false`)
- `ui.show_item_overview` (boolean, optional): Item-Übersicht anzeigen (Standard: `false`)
**Beispiel:**
```yaml
- id: actions
kind: loop
label: "Handlungen"
item_label: "Handlung"
min_items: 1
steps:
- id: action_heading
kind: capture_text_line
label: "Handlungsüberschrift"
required: true
heading_level:
enabled: true
default: 3
section_type: decision
generate_block_id: true
- id: action_description
kind: capture_text
section: ""
label: "Beschreibung"
required: true
```
**Verschachtelte Loops:**
```yaml
- id: groups
kind: loop
label: "Erlebnis-Gruppen"
steps:
- id: group_heading
kind: capture_text_line
label: "Überschrift"
- id: entries
kind: loop
label: "Einträge"
steps:
- id: entry
kind: capture_text_line
label: "Listeneintrag"
```
### 5. `review` - Review & Apply Step
Zeigt eine Vorschau der generierten Note und ermöglicht abschließende Checks.
**Felder:**
- `id` (string, required): Eindeutige Step-ID
- `kind` (string, required): `"review"`
- `label` (string, optional): Anzeige-Name (Standard: `"Review & Apply"`)
- `checks` (array of strings, optional): Liste von Checks
- `lint_current_note`: Lint-Check für die generierte Note
- `missing_targets`: Prüft auf fehlende Link-Targets
- `missing_frontmatter_id`: Prüft auf fehlende Frontmatter-ID
**Beispiel:**
```yaml
- id: review
kind: review
label: "Review & Apply"
checks:
- lint_current_note
- missing_targets
- missing_frontmatter_id
```
### 6. `instruction` - Anweisung anzeigen
Zeigt eine reine Anweisung ohne Input.
**Felder:**
- `id` (string, required): Eindeutige Step-ID
- `kind` (string, required): `"instruction"`
- `label` (string, optional): Anzeige-Name
- `content` (string, required): Markdown-Inhalt der Anweisung
**Beispiel:**
```yaml
- id: intro
kind: instruction
label: "Einführung"
content: |
# Willkommen zum Interview
Dieses Interview hilft dir, eine strukturierte Note zu erstellen.
```
### 7. `llm_dialog` - LLM-Dialog (experimentell)
Öffnet einen LLM-Dialog für Text-Generierung oder -Verdichtung.
**Felder:**
- `id` (string, required): Eindeutige Step-ID
- `kind` (string, required): `"llm_dialog"`
- `label` (string, optional): Anzeige-Name
- `mode` (string, optional): `"manual"` | `"auto"` (Standard: `"manual"`)
- `prompt_template` (string, required): Prompt-Template für den LLM
- `output_target.kind` (string, required): Output-Ziel (`section_append` | `replace`)
- `output_target.section` (string, optional): Section für `section_append`
**Beispiel:**
```yaml
- id: llm_refine
kind: llm_dialog
label: "LLM Verdichtung"
mode: manual
prompt_template: |
Verdichte die bisherigen Inhalte zu 3-5 Bulletpoints.
Erfinde keine Fakten.
output_target:
kind: section_append
section: "## 🧠 Verdichtung (LLM Vorschlag)"
```
### 8. `entity_picker` - Entity-Auswahl (experimentell)
Ermöglicht die Auswahl einer bestehenden Note aus dem Vault.
**Felder:**
- `id` (string, required): Eindeutige Step-ID
- `kind` (string, required): `"entity_picker"`
- `label` (string, optional): Anzeige-Name
- `prompt` (string, optional): Prompt-Text
- `required` (boolean, optional): Ob erforderlich (Standard: `false`)
- `labelField` (string, optional): Feld-Key für Wikilink-Label
---
## WP-26 Features (Section Types & Block-IDs)
**Wichtig:** Diese Features sind nur für `capture_text` und `capture_text_line` Steps verfügbar.
### `section_type` (string, optional)
Definiert den **Section-Type** für diese Section. Überschreibt den `note_type` für diese Section.
**Verwendung:**
- Für **Edge-Type-Vorschläge** basierend auf `graph_schema.md`
- Für **Type-Boost-Scoring** im Retriever
- Für **Agentic Validation** (Phase 3)
**Beispiel:**
```yaml
- id: insight
kind: capture_text
section: "## 💡 Einsicht"
section_type: insight # Typ-Wechsel: experience -> insight
```
**Fallback-Logik:**
- Wenn `section_type` nicht gesetzt ist, wird der `note_type` des Profils verwendet
- Bei verschachtelten Sections wird der Section-Type der übergeordneten Section verwendet (basierend auf Heading-Level)
### `block_id` (string, optional)
Definiert eine **explizite Block-ID** für diese Section. Die Block-ID wird als `^block-id` am Ende der Überschrift erzeugt.
**Beispiel:**
```yaml
- id: situation
kind: capture_text
section: "## ⚡ Situation"
block_id: "sit" # Erzeugt: ## ⚡ Situation ^sit
```
**Wichtig:** Block-IDs müssen **eindeutig** sein. In Loops werden automatisch Nummerierungen angehängt (z.B. `action_heading-1`, `action_heading-2`).
### `generate_block_id` (boolean, optional)
Wenn `true`, wird automatisch eine Block-ID aus der Step-ID generiert (slugified).
**Beispiel:**
```yaml
- id: context
kind: capture_text
section: "## 📖 Kontext"
generate_block_id: true # Erzeugt: ## 📖 Kontext ^context
```
**Regeln:**
- Wenn sowohl `block_id` als auch `generate_block_id: true` gesetzt sind, hat `block_id` Priorität
- In Loops wird automatisch eine Nummerierung angehängt (z.B. `context-1`, `context-2`)
### `references` (array, optional)
Definiert **explizite Referenzen** zu vorherigen Sections (Block-IDs).
**Struktur:**
```yaml
references:
- block_id: <block_id_der_referenzierten_section>
edge_type: <optional_vorgeschlagener_edge_type>
```
**Beispiel:**
```yaml
- id: situation
kind: capture_text
section: "## ⚡ Situation"
section_type: experience
block_id: "sit"
references:
- block_id: context
edge_type: derived_from # Explizite Referenz zu vorheriger Section
```
**Verhalten:**
- Referenzen werden als **Intra-Note-Edges** erzeugt (`is_internal: true`)
- Der `edge_type` wird als **Vorschlag** verwendet (kann im `SectionEdgesOverviewModal` geändert werden)
- Wenn kein `edge_type` angegeben ist, wird ein Typ aus `graph_schema.md` vorgeschlagen
- **Automatische Rückwärts-Edges** werden in der Ziel-Section erzeugt (basierend auf dem inversen Edge-Type)
**Wichtig:** `block_id` muss auf eine **vorherige Section** verweisen (nicht auf zukünftige Sections).
---
## Beispiele für verschiedene Note-Typen
### Experience (Erfahrung)
```yaml
- key: experience_single
group: experience
label: "Experience Einzelereignis"
note_type: experience
defaults:
status: active
chunking_profile: timeline
edging:
mode: both
steps:
- id: title
kind: capture_frontmatter
field: title
label: "Titel"
required: true
- id: context
kind: capture_text
section: "## 📖 Kontext"
label: "Kontext"
required: true
prompt: "In welchem Rahmen ist es passiert?"
section_type: experience
generate_block_id: true
- id: trigger
kind: capture_text
section: "## ⚡ Auslöser"
label: "Auslöser"
required: false
prompt: "Was hat es ausgelöst?"
section_type: experience
generate_block_id: true
references:
- block_id: context
edge_type: derived_from
- id: transformation
kind: capture_text
section: "## 🧠 Innere Transformation"
label: "Innere Transformation"
required: false
prompt: "Was hat sich innerlich verändert?"
section_type: insight # Typ-Wechsel
generate_block_id: true
- id: review
kind: review
label: "Review & Apply"
checks:
- lint_current_note
- missing_targets
```
### Insight (Einsicht)
```yaml
- key: insight_basic
group: insight
label: "Insight Basis"
note_type: insight
defaults:
status: active
folder: "04_insight"
edging:
mode: both
steps:
- id: title
kind: capture_frontmatter
field: title
label: "Titel"
required: true
- id: insight
kind: capture_text
section: "## 💡 Einsicht"
label: "Einsicht"
required: true
prompt: "Beschreibe die Einsicht"
section_type: insight
generate_block_id: true
- id: source
kind: capture_text
section: "## 📚 Quelle"
label: "Quelle"
required: false
prompt: "Woher stammt diese Einsicht?"
section_type: insight
generate_block_id: true
references:
- block_id: insight
edge_type: source_of
- id: application
kind: capture_text
section: "## 🎯 Anwendung"
label: "Anwendung"
required: false
prompt: "Wie wird diese Einsicht angewendet?"
section_type: decision # Typ-Wechsel
generate_block_id: true
references:
- block_id: insight
edge_type: foundation_for
- id: review
kind: review
label: "Review & Apply"
checks:
- lint_current_note
```
### Decision (Entscheidung)
```yaml
- key: decision_basic
group: decision
label: "Decision Basis"
note_type: decision
defaults:
status: active
folder: "05_decision"
edging:
mode: both
steps:
- id: title
kind: capture_frontmatter
field: title
label: "Titel"
required: true
- id: context
kind: capture_text
section: "## 📖 Kontext"
label: "Kontext"
required: true
prompt: "In welchem Kontext wurde die Entscheidung getroffen?"
section_type: experience
generate_block_id: true
- id: options
kind: loop
label: "Optionen"
item_label: "Option"
min_items: 2
steps:
- id: option_text
kind: capture_text
section: ""
label: "Option"
required: true
prompt: "Beschreibe eine Option"
- id: decision
kind: capture_text
section: "## 🎯 Entscheidung"
label: "Entscheidung"
required: true
prompt: "Welche Entscheidung wurde getroffen?"
section_type: decision
generate_block_id: true
references:
- block_id: context
edge_type: derived_from
- id: rationale
kind: capture_text
section: "## 🧠 Begründung"
label: "Begründung"
required: false
prompt: "Warum wurde diese Entscheidung getroffen?"
section_type: insight
generate_block_id: true
references:
- block_id: decision
edge_type: based_on
- id: review
kind: review
label: "Review & Apply"
checks:
- lint_current_note
- missing_targets
```
### Principle (Prinzip)
```yaml
- key: principle_basic
group: principle
label: "Principle Basis"
note_type: principle
defaults:
status: stable
chunking_profile: principle_dense
retriever_weight: 2
steps:
- id: title
kind: capture_frontmatter
field: title
label: "Titel"
required: true
- id: statement
kind: capture_text
section: "## 🧭 Prinzip"
label: "Prinzip"
required: true
prompt: "Formuliere das Prinzip als klaren Satz."
section_type: principle
generate_block_id: true
- id: retriever_weight
kind: capture_frontmatter
field: retriever_weight
label: "Retriever Weight"
required: false
input:
kind: number
min: -3
max: 3
step: 1
- id: review
kind: review
label: "Review & Apply"
checks:
- lint_current_note
```
---
## Best Practices & Patterns
### 1. Section-Type-Wechsel dokumentieren
Wenn ein Section-Type-Wechsel stattfindet, sollte dies im Kommentar dokumentiert werden:
```yaml
- id: transformation
kind: capture_text
section: "## 🧠 Innere Transformation"
section_type: insight # Typ-Wechsel: experience -> insight
generate_block_id: true
```
### 2. Block-IDs konsistent benennen
- Verwende **kurze, aussagekräftige** Block-IDs (z.B. `sit`, `ctx`, `ins`)
- In Loops werden automatisch Nummerierungen angehängt
- Vermeide **kollidierende** Block-IDs innerhalb eines Profils
### 3. Referenzen zu vorherigen Sections
- Referenzen müssen auf **vorherige Sections** verweisen (nicht zukünftige)
- Verwende **explizite `edge_type`-Vorschläge**, wenn die Beziehung klar ist
- Lasse `edge_type` weg, wenn das System aus `graph_schema.md` vorschlagen soll
### 4. Loops für Listen verwenden
- Verwende `loop` für **wiederholbare Items** (z.B. Handlungen, Optionen, Erlebnisse)
- Setze `min_items` für **erforderliche Listen**
- Verwende `section: ""` für Steps innerhalb von Loops, die keine eigene Section erzeugen sollen
### 5. Review-Step immer am Ende
- Jedes Profil sollte mit einem `review` Step enden
- Aktiviere relevante Checks (`lint_current_note`, `missing_targets`, etc.)
### 6. Edging-Mode konfigurieren
- `mode: "both"` für vollständige Edge-Unterstützung (inline + post-run)
- `mode: "inline_micro"` für nur Inline-Edge-Vorschläge
- `mode: "post_run"` für nur Post-Run-Edge-Abfrage
- `mode: "none"` für keine Edge-Unterstützung
### 7. Frontmatter-Felder dokumentieren
- Dokumentiere **Custom-Frontmatter-Felder** in `frontmatter_whitelist`
- Verwende **sinnvolle Defaults** in `defaults` für bessere UX
---
## Validierung & Fehlerbehandlung
### YAML-Syntax-Fehler
- **Syntax-Fehler** werden beim Laden erkannt und geloggt
- **Last-Known-Good:** Letzte gültige Config wird bei Fehlern verwendet
- **Warnings:** Ungültige Felder werden als Warnings geloggt, nicht als Fehler
### Step-Validierung
- **Fehlende Pflichtfelder:** Werden als Fehler erkannt
- **Ungültige Step-Kinds:** Werden als Warnings geloggt
- **Ungültige Block-ID-Referenzen:** Werden zur Laufzeit erkannt (keine Validierung zur Config-Zeit)
### Live-Reload
- **Debounced:** 200ms Delay für Performance
- **Automatisch:** Bei Dateiänderungen
- **Manuell:** Über Commands möglich
---
## GenAI-Prompt-Template
Wenn du ein GenAI-Assistent bist und ein neues Interview-Profil erstellen sollst, verwende folgendes Template:
```
Erstelle ein Interview-Profil für den Note-Typ "{note_type}" mit folgenden Anforderungen:
1. **Profil-Informationen:**
- Key: {profile_key}
- Label: {display_name}
- Group: {group}
- Note-Type: {note_type}
2. **Default-Werte:**
- Status: {status}
- Folder: {folder}
- Chunking-Profile: {chunking_profile} (optional)
- Retriever-Weight: {retriever_weight} (optional)
3. **Steps:**
{step_descriptions}
4. **WP-26 Features:**
- Section-Types: {section_types}
- Block-IDs: {block_ids}
- Referenzen: {references}
5. **Edging:**
- Mode: {edging_mode}
6. **Review:**
- Checks: {review_checks}
Nutze die Beispiele aus der Dokumentation als Vorlage und stelle sicher, dass:
- Alle Pflichtfelder gesetzt sind
- Block-IDs eindeutig sind
- Referenzen auf vorherige Sections verweisen
- Section-Types konsistent mit graph_schema.md sind
- Ein Review-Step am Ende steht
```
---
## Zusammenfassung
Die `interview_config.yaml` ist eine mächtige Konfigurationsdatei für die strukturierte Erstellung von Notes. Mit WP-26 Features können Sections typisiert und referenziert werden, was zu besseren Edge-Vorschlägen und Retrieval-Ergebnissen führt.
**Wichtigste Punkte:**
1. Jedes Profil benötigt `key`, `label`, `note_type` und `steps`
2. WP-26 Features (`section_type`, `block_id`, `generate_block_id`, `references`) sind nur für `capture_text` und `capture_text_line` verfügbar
3. Block-IDs müssen eindeutig sein (automatische Nummerierung in Loops)
4. Referenzen müssen auf vorherige Sections verweisen
5. Ein Review-Step sollte immer am Ende stehen
---
**Ende der Interview Config Guide**