Files
eltonandClaude Fable 5.1 4986ef0575 Baue den Index als SQLite mit FTS5 und sqlite-vec, dazu die Suche
Entscheidung Andreas 2026-09-04 (spine/core#8): kein Datenbankdienst. Der
Index ist eine abgeleitete Sicht auf die Markdown-Ablage in einer Datei im
Volume, jederzeit neu baubar. image/km/index.py zerlegt die Dateien in
Chunks (Chunking aus info/ai/scripts/index_docs.py übernommen), hält
Volltext in FTS5 und Vektoren aus bge-m3 in sqlite-vec, inkrementell über
SHA-256 je Datei. image/km/search.py sucht Volltext führend, Vektor
ergänzend, mit Filtern vor dem Ranking (0 Treffer statt gesperrt).

Ingest: Kommentare bei der Erstbefüllung repo-weit statt je Vorgang —
die erste Fassung hing bei live/live nach 371 Vorgängen; jetzt 2175 in zwei
Minuten. Gemessen: Volltext über 61.000 Chunks in 3 s, Vektoren 0,31 s je
Chunk auf der CPU-Box. Kein Bytecode mehr im Repo.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-04 18:04:35 +02:00

36 lines
1.6 KiB
Markdown

# image — der Dienst selbst
Hier entsteht `git.42i.org/spine/km`: die API, die Ablage, der MCP-Endpunkt und
die prüfende Schreibfunktion.
**Vorhanden:** `km/ingest_gitea.py` holt Tickets und Kommentare aus Gitea in
die Ablage ([../docs/ingest-gitea.md](../docs/ingest-gitea.md)); `km/index.py`
und `km/search.py` bauen den SQLite-Index (FTS5 + sqlite-vec) und suchen
darüber ([../docs/index-suche.md](../docs/index-suche.md)). Der Rest steht in
[../docs/konzept.md](../docs/konzept.md).
Die Reihenfolge, in der es sinnvoll wächst:
1. `read` und `search` über eine Ablage aus Markdown-Dateien — ohne die beiden
ist nichts nachprüfbar.
2. `write` **ohne** LLM-Prüfung, aber mit Kategorie und Namespace. Ab hier ist
der Dienst benutzbar und kann die ersten Einträge aufnehmen.
3. Die `index.md` je Verzeichnis, die jedes `write` fortschreibt.
4. `summary` über die `index.md`.
5. Die prüfende Schreibfunktion (LLM, Konflikte, `force`).
6. Der MCP-Endpunkt.
Die Reihenfolge ist nicht beliebig: Schritt 5 ist der einzige, der ein Modell
braucht und ausfallen kann. Er kommt zuletzt, damit der Dienst vorher schon
trägt — und damit man beim Abschalten der Prüfung sieht, was sie eigentlich
verhindert hat.
## Zwei Dinge, die beim Bauen schon feststehen
**Benannt nach der Fähigkeit, nicht nach dem Produkt** — die Regel aus
`spine/images`. `km` ist ein Versprechen auf Wissensverwaltung, keine Wette auf
eine bestimmte Ablage oder Suchmaschine.
**Die Ablage ist ein Volume, kein Datenbankgeheimnis.** Markdown auf Platte,
lesbar ohne den Dienst. Wer nur nachsehen will, was gespeichert ist, soll dafür
kein laufendes System brauchen.