- 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.
18 KiB
Mindnet Causal Assistant - Konfigurationsdateien Referenz
Version: 1.0.0
Stand: 2025-01-XX
Zielgruppe: Administratoren, Config-Manager
Inhaltsverzeichnis
- Überblick
- Edge Vocabulary (
edge_vocabulary.md) - Graph Schema (
graph_schema.md) - Interview Config (
interview_config.yaml) - Chain Roles (
chain_roles.yaml) - Chain Templates (
chain_templates.yaml) - Analysis Policies (
analysis_policies.yaml)
Überblick
Das Mindnet Causal Assistant Plugin verwendet mehrere Konfigurationsdateien, die im Vault gespeichert werden. Diese Dateien definieren:
- Edge Vocabulary: Kanonische Edge-Typen und Aliases
- Graph Schema: Empfehlungen für Edge-Typen basierend auf Note-Typen
- Interview Config: Profile, Steps, Loops für Note-Erstellung
- Chain Roles: Mapping von Edge-Typen zu kausalen Rollen
- Chain Templates: Vordefinierte Kettenmuster für Template Matching
- Analysis Policies: Policies für Findings (Severity, Unterdrückung)
Edge Vocabulary (edge_vocabulary.md)
Zweck
Definiert kanonische Edge-Typen und ihre Aliases für Normalisierung und Lookup.
Format
Markdown-Datei mit Tabellen-Struktur.
Struktur
# Edge Vocabulary
### Kategorie 1
| System-Typ (Canonical) | Inverser Typ | Erlaubte Aliasse (User) | Beschreibung | Kategorie |
| :--- | :--- | :--- | :--- | :--- |
| **`causes`** | `caused_by` | `verursacht`, `führt_zu` | Direkte Kausalität | Kausal |
| **`caused_by`** | `causes` | `ausgelöst_durch`, `wegen` | Umgekehrte Kausalität | Kausal |
### Kategorie 2
| System-Typ (Canonical) | Inverser Typ | Erlaubte Aliasse (User) | Beschreibung | Kategorie |
| :--- | :--- | :--- | :--- | :--- |
| **`influences`** | `influenced_by` | `beeinflusst`, `wirkt_auf` | Einfluss-Beziehung | Einfluss |
Parsing-Regeln
- H3-Überschriften (
###) werden als Kategorien erkannt - Tabellen werden geparst:
- Erste Spalte: Canonical Type (kann mit
**fett formatiert sein) - Zweite Spalte: Inverse Type (optional)
- Dritte Spalte: Aliases (komma-separiert, optional)
- Weitere Spalten: Beschreibung, Kategorie (optional)
- Erste Spalte: Canonical Type (kann mit
- Backticked Tokens (
\type``) werden extrahiert - Header-Zeilen werden übersprungen (enthält "Canonical", "System-Typ", etc.)
- Leere Zeilen oder Zeilen ohne Tokens werden übersprungen
Beispiel
# Edge Vocabulary
### Kausale Beziehungen
| System-Typ (Canonical) | Inverser Typ | Erlaubte Aliasse (User) | Beschreibung |
| :--- | :--- | :--- | :--- |
| **`causes`** | `caused_by` | `verursacht`, `führt_zu` | Direkte Kausalität |
| **`caused_by`** | `causes` | `ausgelöst_durch`, `wegen` | Umgekehrte Kausalität |
### Einfluss-Beziehungen
| System-Typ (Canonical) | Inverser Typ | Erlaubte Aliasse (User) | Beschreibung |
| :--- | :--- | :--- | :--- |
| **`influences`** | `influenced_by` | `beeinflusst`, `wirkt_auf` | Einfluss-Beziehung |
Verwendung
- Normalisierung:
vocabulary.normalize("ausgelöst_durch")→{ canonical: "caused_by", inverse: "causes" } - Lookup:
vocabulary.getCanonical("verursacht")→"causes" - Inverse:
vocabulary.getInverse("causes")→"caused_by"
Graph Schema (graph_schema.md)
Zweck
Definiert Empfehlungen für Edge-Typen basierend auf Source- und Target-Note-Typen.
Format
Markdown-Datei mit Sections und Tabellen.
Struktur
# Graph Schema
## Source: `experience`
| Target Type | Typical | Prohibited |
| :--- | :--- | :--- |
| `insight` | `causes`, `influences` | `part_of`, `instance_of` |
| `decision` | `influences` | `causes` |
## Source: `insight`
| Target Type | Typical | Prohibited |
| :--- | :--- | :--- |
| `decision` | `causes`, `enables` | `influences` |
Parsing-Regeln
- H2-Überschriften mit Pattern
## Source: \type`` werden als Source-Typ erkannt - Tabellen werden geparst:
- Erste Spalte: Target Type (in Backticks)
- Zweite Spalte: Typical Edge Types (komma-separiert)
- Dritte Spalte: Prohibited Edge Types (komma-separiert)
- Header-Zeilen werden übersprungen
- Leere Zeilen werden übersprungen
Beispiel
# Graph Schema
## Source: `experience`
| Target Type | Typical | Prohibited |
| :--- | :--- | :--- |
| `insight` | `causes`, `influences` | `part_of` |
| `decision` | `influences` | `causes` |
## Source: `insight`
| Target Type | Typical | Prohibited |
| :--- | :--- | :--- |
| `decision` | `causes`, `enables` | `influences` |
Verwendung
- Edge-Type-Selector: Zeigt Empfehlungen basierend auf Source-Note-Type
- Warnungen: Zeigt Warnungen bei prohibited Types
- Lookup:
schema.getTypicalEdgeTypes("experience", "insight")→["causes", "influences"]
Interview Config (interview_config.yaml)
Zweck
Definiert Profile, Steps, Loops für Note-Erstellung und Interviews.
Format
YAML-Datei mit strukturierter Hierarchie.
Vollständige Dokumentation
→ Interview_Config_Guide.md - Vollständige Anleitung mit:
- Alle Step-Typen (
capture_frontmatter,capture_text,capture_text_line,loop,review, etc.) - WP-26 Features (Section Types, Block-IDs, Referenzen)
- Beispiele für verschiedene Note-Typen (experience, insight, decision, principle)
- Best Practices & Patterns
- GenAI-Prompt-Template
Kurzübersicht
Root-Level
version(string, optional): Config-Version (aktuell:3)frontmatter_whitelist(array of strings, optional): Erlaubte Frontmatter-Keysui_defaults(object, optional): Standard-UI-Einstellungenprofiles(array, required): Liste von Profilen
Profile
key(string, required): Eindeutiger Profil-Schlüssellabel(string, required): Anzeige-Namenote_type(string, required): Note-Type (z.B.experience,insight,decision)group(string, optional): Gruppierung für UIdefaults(object, optional): Standardwerte (status, folder, chunking_profile, etc.)edging(object, optional): Semantic Mapping Konfiguration (mode,wrapperCalloutType, etc.)steps(array, required): Liste von Steps
Step-Typen
capture_frontmatter: Frontmatter-Feld erfassencapture_text: Mehrzeiligen Text erfassen (mit Section-Header)capture_text_line: Einzeiligen Text erfassen (optional mit Heading-Level)loop: Wiederholbare Steps für Listenreview: Review & Apply Stepinstruction: Anweisung anzeigenllm_dialog: LLM-Dialog (experimentell)entity_picker: Entity-Auswahl (experimentell)
WP-26 Features (nur für capture_text und capture_text_line)
section_type(string, optional): Section-Type (überschreibtnote_type)block_id(string, optional): Explizite Block-IDgenerate_block_id(boolean, optional): Automatische Block-ID-Generierungreferences(array, optional): Explizite Referenzen zu vorherigen Sections
Beispiel
version: 3
profiles:
- key: experience_basic
group: experience
label: "Erfahrung (Basis)"
note_type: experience
defaults:
status: active
folder: "03_experience"
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: "Beschreibe den Kontext"
section_type: experience
generate_block_id: true
- id: review
kind: review
label: "Review & Apply"
checks:
- lint_current_note
- missing_targets
Verwendung
- Profil-Auswahl: Profile werden in ProfileSelectionModal angezeigt
- Wizard: Steps werden als Wizard-Steps angezeigt
- Frontmatter: Frontmatter wird mit Whitelist generiert
- WP-26: Section-Types und Block-IDs werden für Edge-Vorschläge verwendet
Wann erscheint der Dialog „Verbindungen bearbeiten“ (Sektions-Links)?
Der Dialog zum Ändern der Sektions-Verbindungen (Section-Edges) erscheint beim Klick auf „Apply & Finish“ im Review-Step – aber nur wenn beides erfüllt ist:
-
Mindestens zwei Sections im Profil
Das gewählte Interview-Profil muss mindestens zwei Steps haben, die eine Section erzeugen:capture_textmit Feldsection(z. B.section: "## 📖 Kontext").capture_text_linemitheading_level.enabled: trueund (block_idodergenerate_block_id: true).
-
Edge-Vocabulary geladen
Die Dateiedge_vocabulary.mdmuss existieren und der Pfad in den Plugin-Einstellungen stimmen (z. B._system/dictionary/edge_vocabulary.md).
Beispiel: Ein Profil mit drei capture_text-Steps mit je section (z. B. Kontext, Auslöser, Transformation) erzeugt drei Sections → der Dialog erscheint. Optional können Sie section_type, block_id oder generate_block_id setzen, damit Block-IDs und Edge-Vorschläge aus dem Graph-Schema genutzt werden.
Chain Roles (chain_roles.yaml)
Zweck
Mappt Edge-Typen zu kausalen Rollen für Template Matching.
Format
YAML-Datei mit strukturierter Hierarchie.
Struktur
version: "1.0"
roles:
causal:
description: "Direkte kausale Beziehungen"
edge_types:
- causes
- caused_by
- resulted_in
influences:
description: "Einfluss-Beziehungen"
edge_types:
- influences
- affects
enables_constraints:
description: "Ermöglicht/Beschränkt-Beziehungen"
edge_types:
- enables
- constrains
provenance:
description: "Herkunfts-Beziehungen"
edge_types:
- derived_from
- based_on
Felder
Root-Level
version(string, optional): Config-Versionroles(object, required): Mapping von Rollen-Namen zu Rollen-Definitionen
Role
description(string, optional): Beschreibung der Rolleedge_types(array of strings, required): Liste von Edge-Typen, die zu dieser Rolle gehören
Standard-Rollen
causal: Direkte kausale Beziehungeninfluences: Einfluss-Beziehungenenables_constraints: Ermöglicht/Beschränkt-Beziehungenprovenance: Herkunfts-Beziehungen
Beispiel
version: "1.0"
roles:
causal:
description: "Direkte kausale Beziehungen"
edge_types:
- causes
- caused_by
- resulted_in
- resulted_from
influences:
description: "Einfluss-Beziehungen"
edge_types:
- influences
- affects
- impacts
enables_constraints:
description: "Ermöglicht/Beschränkt-Beziehungen"
edge_types:
- enables
- constrains
- limits
provenance:
description: "Herkunfts-Beziehungen"
edge_types:
- derived_from
- based_on
- originates_from
Verwendung
- Template Matching: Edge-Typen werden zu Rollen gemappt für Link-Constraints
- Findings:
no_causal_rolesFinding wird generiert, wenn keine causal Rollen gefunden werden - Lookup:
chainRoles.getRoleForEdgeType("causes")→"causal"
Chain Templates (chain_templates.yaml)
Zweck
Definiert vordefinierte Kettenmuster für Template Matching.
Format
YAML-Datei mit strukturierter Hierarchie.
Struktur
version: "1.0"
defaults:
matching:
required_links: false
templates:
- name: trigger_transformation_outcome
description: "Causal chain template"
slots:
- id: trigger
allowed_node_types: ["experience"]
- id: transformation
allowed_node_types: ["insight"]
- id: outcome
allowed_node_types: ["decision"]
links:
- from: trigger
to: transformation
allowed_edge_roles: ["causal"]
- from: transformation
to: outcome
allowed_edge_roles: ["causal"]
matching:
required_links: true
Felder
Root-Level
version(string, optional): Config-Versiondefaults(object, optional): Standardwertematching(object, optional): Standard-Matching-Parameterrequired_links(boolean, optional): Ob Links erforderlich sind (Standard:false)
profiles(object, optional): Profil-spezifische Defaultsdiscovery(object, optional): Discovery-Profil-Parameterdecisioning(object, optional): Decisioning-Profil-Parameter
templates(array, required): Liste von Templates
Template
name(string, required): Template-Namedescription(string, optional): Beschreibungslots(array, required): Slot-Definitionenlinks(array, optional): Link-Constraintsmatching(object, optional): Matching-Parameter (überschreibt Defaults)required_links(boolean, optional): Ob Links erforderlich sind
Slot
id(string, required): Slot-IDallowed_node_types(array of strings, required): Erlaubte Note-Types für diesen Slot
Link
from(string, required): Source-Slot-IDto(string, required): Target-Slot-IDallowed_edge_roles(array of strings, required): Erlaubte Edge-Rollen
Beispiel
version: "1.0"
defaults:
matching:
required_links: false
profiles:
discovery:
required_links: false
min_slots_filled_for_gap_findings: 1
min_score_for_gap_findings: 0
decisioning:
required_links: true
min_slots_filled_for_gap_findings: 2
min_score_for_gap_findings: 10
templates:
- name: trigger_transformation_outcome
description: "Causal chain: trigger → transformation → outcome"
slots:
- id: trigger
allowed_node_types: ["experience", "event"]
- id: transformation
allowed_node_types: ["insight"]
- id: outcome
allowed_node_types: ["decision", "action"]
links:
- from: trigger
to: transformation
allowed_edge_roles: ["causal"]
- from: transformation
to: outcome
allowed_edge_roles: ["causal"]
matching:
required_links: true
- name: loop_learning
description: "Learning loop: experience → learning → behavior → feedback"
slots:
- id: experience
allowed_node_types: ["experience"]
- id: learning
allowed_node_types: ["insight", "learning"]
- id: behavior
allowed_node_types: ["decision", "action"]
- id: feedback
allowed_node_types: ["experience", "event"]
links:
- from: experience
to: learning
allowed_edge_roles: ["causal", "influences"]
- from: learning
to: behavior
allowed_edge_roles: ["causal"]
- from: behavior
to: feedback
allowed_edge_roles: ["causal", "influences"]
- from: feedback
to: experience
allowed_edge_roles: ["causal", "influences"]
Verwendung
- Template Matching: Templates werden gegen lokalen Subgraph gematcht
- Findings:
missing_slot_*Findings werden generiert, wenn Slots fehlen - Link Constraints:
missing_link_constraintsFinding wird generiert, wenn Links fehlen (wennrequired_links=true)
Analysis Policies (analysis_policies.yaml)
Zweck
Definiert Policies für Findings (Severity, Unterdrückung, etc.).
Format
YAML-Datei (geplant, noch nicht vollständig implementiert).
Geplante Struktur
version: "1.0"
findings:
missing_slot_*:
default_severity: warn
profiles:
discovery:
severity: info
suppress_if:
- slots_filled < 2
decisioning:
severity: warn
suppress_if: []
dangling_target:
default_severity: error
suppress_if: []
missing_link_constraints:
default_severity: warn
suppress_if:
- required_links == false
no_causal_roles:
default_severity: info
suppress_if: []
Felder (geplant)
Root-Level
version(string, optional): Config-Versionfindings(object, required): Mapping von Finding-Codes zu Policies
Finding Policy
default_severity(string, required): Standard-Severity (error,warn,info)profiles(object, optional): Profil-spezifische Overridesdiscovery(object, optional): Discovery-Profil-Parameterdecisioning(object, optional): Decisioning-Profil-Parameter
suppress_if(array, optional): Bedingungen für Unterdrückung
Status
Noch nicht vollständig implementiert. Aktuell wird Severity-Policy teilweise in severityPolicy.ts gehandhabt.
Validierung & Fehlerbehandlung
YAML-Dateien
- 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
Markdown-Dateien
- Parsing-Fehler: Werden beim Laden erkannt und geloggt
- Fehlende Felder: Werden ignoriert oder mit Defaults gefüllt
- Warnings: Ungültige Zeilen werden übersprungen
Live-Reload
- Debounced: 200ms Delay für Performance
- Automatisch: Bei Dateiänderungen
- Manuell: Über Commands möglich
Best Practices
Versionierung
- Verwenden Sie Versionsnummern in Config-Dateien
- Dokumentieren Sie Änderungen
- Testen Sie Änderungen in Test-Vault
Struktur
- Verwenden Sie klare, konsistente Namen
- Kommentieren Sie komplexe Konfigurationen
- Gruppieren Sie verwandte Einträge
Wartung
- Regelmäßige Backups
- Git-Versionierung empfohlen
- Dokumentation von Custom-Konfigurationen
Ende der Konfigurationsdateien Referenz