Wiki¶
Das Wiki ist die zentrale Ablage für „wie wir Dinge tun", Runbooks, Service-Dokumentation, Notiz-Sammlungen.
Konzept¶
- Kategorien (Wurzel-Ebene) gruppieren Artikel
- Artikel in Markdown mit FTS-Index + Vector-Embeddings
- Service-Linking — ein Artikel kann an konkrete Profile-Checks oder einzelne Hosts hängen
- AI-RAG-Quelle — der AI-Chat zieht erste Hand aus dem Wiki
Artikel anlegen¶
/wiki → Neuer Artikel oder über Quick-Lookup auf der Service-Detail-Seite (siehe unten).
| Feld | Bedeutung |
|---|---|
| Titel | Pflicht |
| Kategorie | aus Liste oder neu anlegen |
| Tags | optional |
| Inhalt | Markdown, mit Toolbar und Live-Preview |
| Service-Verknüpfungen | n:m mit Profile-Checks |
| Host-spezifisch? | optional an einen oder mehrere Hosts binden |
Editor-Toolbar: H1/H2/H3, Bold, Italic, Code, Link, Listen, Tabelle, Code-Block. Markdown-Modus oder WYSIWYG (Toggle).
Service-Linking¶
Ein Artikel kann an Profile-Checks gebunden werden. Wirkung:
- Auf der Host-Detail-Seite erscheint im Service-Detail ein „Wiki"-Tab mit den verknüpften Artikeln
- AI-Service-Analyse priorisiert verknüpfte Artikel im RAG-Kontext
Beispiel: Ein Artikel „Disk-Voll-Lauf-Run-Book" kann an alle agent_disk-Profile-Checks gebunden werden — sobald ein Disk-Voll-Alert kommt, ist das Run-Book direkt erreichbar.
Host-spezifische Bindung über das wiki_article_services-Junction mit host_id Feld:
Sinnvoll für „Diese Maschine hat eine Eigenheit, die nicht für alle Hosts gilt".
Suche¶
/wiki hat eine Such-Leiste mit drei kombinierten Methoden:
- Volltext-Suche (deutscher FTS-Index)
- ILIKE-Fallback für partielle Strings (z. B. „backup" findet auch „backup-script")
- Vector-Suche (pgvector + Embeddings) für semantisch ähnliche Inhalte
Treffer-Liste mit Highlight, Kategorie-Badge, Tags.
Embeddings¶
Beim Speichern eines Artikels wird im Hintergrund ein Embedding berechnet:
- Modell:
nomic-embed-text(Default, via Ollama) oder konfigurierbar - Dimension: 4096 (
pgvectormitvector(4096)) - Speicherung:
wiki_articles.embedding
Embedding-Updates laufen asynchron (asyncio.create_task), damit das Speichern nicht blockt. Bei sehr großen Wikis kann der Sync nach Bulk-Imports etwas dauern — Status sichtbar in /admin/embeddings.
asyncpg-Cast für Vector
Bei eigenen SQL-Queries mit pgvector: CAST(:emb AS vector) statt ::vector benutzen — asyncpg interpretiert :: als Bind-Parameter und macht Cast unmöglich.
Quick-Lookup auf Service-Detail¶
Auf der Service-Zeile eines Hosts → Wiki-Lookup:
- AI fragt: „welche Artikel könnten relevant sein"
- Beste 3–5 Treffer als Slide-In-Panel
- Klick öffnet den Artikel im Modal
Schnellster Weg zu einem Run-Book mitten im Incident.
Soft-Delete¶
Artikel werden soft-deleted (siehe Papierkorb) — gelöscht heißt erstmal versteckt, nach 30 Tagen physisch weg.
Wiki-Artikel mit Service-Verknüpfungen verlieren beim Soft-Delete die Verknüpfung nicht — beim Restore ist alles wieder da.
Deep-Links¶
| URL | Wirkung |
|---|---|
/wiki |
Übersicht |
/wiki?article=<id> |
Artikel direkt öffnen |
/wiki?new=1 |
Neuer Artikel mit leerem Modal |
/wiki?category=<id> |
nur Kategorie filtern |
Sinnvoll für Bookmarks und Cross-Links aus Mails / Slack.
Permissions¶
| Permission | Wirkung |
|---|---|
wiki.view |
Artikel sehen |
wiki.edit |
Bearbeiten |
wiki.create |
Neue anlegen |
wiki.delete |
Soft-Delete |
wiki.purge |
endgültig aus Papierkorb löschen |
Anschluss¶
- AI-Chat & Analyse — Wiki als RAG-Quelle
- AI-Provider einrichten — wofür das Embedding-Modell ist