191 lines
5.7 KiB
Markdown
191 lines
5.7 KiB
Markdown
# 📘 Mindnet Skript-Handbuch
|
||
|
||
Dieses Handbuch dokumentiert die implementierten Skripte für das Projekt **mindnet Wissensnetzwerk**.
|
||
Es beschreibt Zweck, Parameter und typische Aufrufe. Alle Beispiele sind geprüft und lauffähig.
|
||
|
||
Alle Skripte liegen in `~/mindnet/scripts/`.
|
||
Ausführung erfolgt **im aktivierten venv**:
|
||
|
||
cd ~/mindnet
|
||
source .venv/bin/activate
|
||
|
||
---
|
||
|
||
## 1. Vault anlegen (für Tests)
|
||
|
||
### `make_test_vault.py`
|
||
|
||
**Zweck:**
|
||
Erstellt einen kleinen, nachvollziehbaren Test-Vault mit Markdown-Dateien.
|
||
Szenarien: offene Links, nachträgliche Anlage fehlender Notes, geänderte Chunk-Grenzen.
|
||
|
||
**Parameter:**
|
||
- `--out PATH` : Zielverzeichnis (Default: `./test_vault`)
|
||
- `--force` : Existierenden Ordner löschen und neu anlegen
|
||
- `--with-missing` : Optional – auch die `missing-note` gleich anlegen
|
||
|
||
**Hinweise für Tests**
|
||
1) Erster Import (dry-run oder --apply): Es gibt einen „leeren“ Link [[missing-note]].
|
||
2) Lege danach eine Datei für „missing-note“ an (mit gleicher ID im YAML) und importiere erneut:
|
||
-> Erwartung: Edges für ehemals leeren Link werden korrekt nachgezogen (references + backlink).
|
||
3) Ändere den Body von exp-one.md so, dass andere Chunk-Grenzen entstehen und importiere erneut:
|
||
-> Erwartung: Chunks/Edges/Note werden für betroffene Noten aktualisiert.
|
||
|
||
Kompatibel mit:
|
||
- note.schema.json: 'created'/'updated' müssen strings sein. (Wichtig!)
|
||
|
||
**Beispiele:**
|
||
|
||
python3 -m scripts.make_test_vault --out ./test_vault --force
|
||
python3 -m scripts.make_test_vault --out ./test_vault --force --with-missing
|
||
|
||
---
|
||
|
||
## 2. Import in Qdrant
|
||
|
||
### `import_markdown.py`
|
||
|
||
**Zweck:**
|
||
Importiert Notes/Chunks/Edges aus einem Vault nach Qdrant.
|
||
- prüft Frontmatter
|
||
- chunked Inhalte + Embeddings
|
||
- erzeugt Edges (`references`, `references_at`, `backlink`)
|
||
- erkennt geänderte Dateien automatisch
|
||
- optional: Purge der alten Chunks/Edges pro Note
|
||
|
||
**Parameter:**
|
||
- `--vault PATH` : (Pflicht) Vault-Verzeichnis
|
||
- `--apply` : Änderungen wirklich durchführen (sonst Dry-Run)
|
||
- `--purge-before-upsert` : Vor Upsert alte Chunks/Edges **nur der geänderten Notes** löschen
|
||
- `--note-id ID` : Nur eine bestimmte Note importieren
|
||
|
||
**Beispiele:**
|
||
|
||
python3 -m scripts.import_markdown --vault ./vault
|
||
python3 -m scripts.import_markdown --vault ./vault --apply
|
||
python3 -m scripts.import_markdown --vault ./vault --apply --purge-before-upsert
|
||
|
||
---
|
||
|
||
## 3. Konsistenzprüfungen
|
||
|
||
### `audit_vault_vs_qdrant.py`
|
||
|
||
**Zweck:**
|
||
Vergleicht Vault-Inhalte mit Qdrant.
|
||
- Zählt Notes/Chunks/Edges
|
||
- Verifiziert Anzahl Wikilinks vs. Edges
|
||
- Meldet Mismatches pro Note
|
||
|
||
**Parameter:**
|
||
- `--vault PATH` : Vault-Verzeichnis
|
||
- `--prefix STR` : Prefix für Qdrant-Collections (Default: `mindnet`)
|
||
|
||
**Beispiel:**
|
||
|
||
python3 -m scripts.audit_vault_vs_qdrant --vault ./vault --prefix mindnet
|
||
|
||
---
|
||
|
||
### `validate_edges.py`
|
||
|
||
**Zweck:**
|
||
Prüft die Edges-Collection in Qdrant.
|
||
- Zählt Edges pro Typ
|
||
- Kontrolliert Invarianten (z. B. jede Reference hat Backlink)
|
||
- Listet unresolved Edges auf
|
||
|
||
**Parameter:**
|
||
- `--prefix STR` : Prefix für Qdrant-Collections
|
||
- `--details` : Detailausgabe mit Beispielen
|
||
|
||
**Beispiel:**
|
||
|
||
python3 -m scripts.validate_edges --prefix mindnet --details
|
||
|
||
---
|
||
|
||
## 4. Qdrant zurücksetzen
|
||
|
||
### `reset_qdrant.py`
|
||
|
||
**Zweck:**
|
||
Setzt die Qdrant-Collections zurück.
|
||
- „wipe“: löscht Collections komplett (inkl. Schema)
|
||
- „truncate“: löscht nur Inhalte, behält Collections
|
||
|
||
**Parameter:**
|
||
- `--mode {wipe,truncate}` : Aktion
|
||
- `--prefix STR` : Prefix der Collections (Default: `mindnet`)
|
||
- `--yes` : Automatische Bestätigung
|
||
- `--dry-run` : Nur anzeigen, nicht ausführen
|
||
|
||
**Beispiele:**
|
||
|
||
python3 -m scripts.reset_qdrant --mode truncate --prefix mindnet --yes
|
||
python3 -m scripts.reset_qdrant --mode wipe --prefix mindnet --yes
|
||
|
||
---
|
||
|
||
## 5. Diagnose
|
||
|
||
### `diagnose_changed.py`
|
||
|
||
**Zweck:**
|
||
Prüft, ob die Datei-Hashes (`sha256`) mit den gespeicherten `hash_fulltext` in Qdrant übereinstimmen.
|
||
Hilft, wenn der Importer zu viele Dateien als „changed“ erkennt.
|
||
|
||
**Parameter:**
|
||
- `--vault PATH` : Vault-Verzeichnis
|
||
- `--prefix STR` : Prefix (Default: `mindnet`)
|
||
- `--note-id ID` : Nur bestimmte Note prüfen
|
||
- `--all` : Alle Notes prüfen
|
||
|
||
**Beispiel:**
|
||
|
||
python3 -m scripts.diagnose_changed --vault ./vault --prefix mindnet --all
|
||
|
||
---
|
||
|
||
## 6. Unresolved Links nachträglich auflösen
|
||
|
||
### `resolve_unresolved_references.py`
|
||
|
||
**Zweck:**
|
||
Prüft offene Wikilinks (`status=unresolved`) und fügt Edges nach, wenn inzwischen passende Notizen existieren.
|
||
|
||
**Parameter:**
|
||
- `--prefix STR` : Prefix für Qdrant-Collections
|
||
- `--apply` : Änderungen wirklich ausführen (sonst nur Vorschau)
|
||
|
||
**Beispiele:**
|
||
|
||
python3 -m scripts.resolve_unresolved_references --prefix mindnet
|
||
python3 -m scripts.resolve_unresolved_references --prefix mindnet --apply
|
||
|
||
---
|
||
|
||
# ✅ Typische Workflows
|
||
|
||
### A) Vault neu importieren
|
||
|
||
python3 -m scripts.reset_qdrant --mode truncate --prefix mindnet --yes
|
||
python3 -m scripts.import_markdown --vault ./vault --apply
|
||
python3 -m scripts.audit_vault_vs_qdrant --vault ./vault --prefix mindnet
|
||
|
||
### B) Änderungen einspielen (mit Purge für geänderte Notes)
|
||
|
||
python3 -m scripts.import_markdown --vault ./vault --apply --purge-before-upsert
|
||
python3 -m scripts.audit_vault_vs_qdrant --vault ./vault --prefix mindnet
|
||
|
||
### C) Unresolved Links nachziehen
|
||
|
||
python3 -m scripts.resolve_unresolved_references --prefix mindnet --apply
|
||
python3 -m scripts.validate_edges --prefix mindnet --details
|
||
|
||
### D) Test-Vault Szenario durchspielen
|
||
|
||
python3 -m scripts.make_test_vault --out ./test_vault --force
|
||
python3 -m scripts.import_markdown --vault ./test_vault --apply
|
||
python3 -m scripts.audit_vault_vs_qdrant --vault ./test_vault --prefix mindnet
|