name: zwei-vektor-gedaechtnisse
description: "Crumbforest hat ZWEI getrennte Vektor-Gedächtnisse — backbone (pgvector, Personas) und nullfeld (qdrant, Krümel-Chat)"
metadata:
node_type: memory
type: project
originSessionId: 73a2568a-f76d-4f0a-9431-129dc27b0519


Es gibt zwei Vektor-Gedächtnisse. Nicht verwechseln — ich habe das einmal
falsch herum aufgerollt und backbone diagnostiziert, obwohl die Frage nullfeld betraf.

Die Trennung ist Absicht, kein Wildwuchs (User: "deswegen das setup"):
nullfeld = qdrant + MySQL — der gesprächige Krümel-Chat, darf leichtfüßig sein.
backbone = pgvector auf ACID/Postgres — das Gedächtnis, muss halten.
Also: auf nullfeld nie Postgres suchen (mein Fehler: sudo -u postgres psql und
metadata::text — es ist pymysql/MariaDB, Cast geht per CAST(x AS CHAR)).

nullfeld — der Chat, mit dem der User tatsächlich spricht:
- vector-collector-nullfeld.sh (Bash) klont alle Repos aus dem LOKALEN Gitea-Bare
(/var/lib/gitea/data/gitea-repositories/branko) → /opt/crumbforest/docs/crumbforest/imported
- indexiert nach qdrant, Collection docs_crumbforest — EINE Collection,
kein Persona-Filter. Was gesammelt ist, sieht jede Persona.
- bedient von crumbforest.service (FastAPI), Provider openrouter / gemini-2.0-flash
- Log: /var/log/crumbforest/chat_history.jsonl
- Gitea läuft auf nullfeld → der Collector liest die Repos lokal, sieht also
jeden Push sofort. Wenn eine Persona etwas Neues nicht kennt: Collector lief
vor dem Push. Einfach nochmal laufen lassen.
- User: "die cloudcat die geantwortet hat ist NUR nullfeld und zeitlos fĂźr krĂźmel"

backbone — CloudCat als aktiver Chat nach installierten Repos:
- forest_seed.py (Python) → pgvector forest_memory in crumbforest_db
- hardcodiertes REPO_MAP mit persona_tag: admin→Deepbit, creative→FunkFox,
hardware→Capacitoby, None→OZMAI (alle). Ansible-Crumbforest = admin,
OZM-Keks-Handbuch-v1 + CrumbCodex-v.0.0 = None (alle Personas).
- Deshalb liegen Handbuch-Rinden im Keks-Handbuch und nicht im Ansible-Repo.

How to apply: Bei "Persona kennt X nicht" zuerst fragen, WELCHER Chat gemeint
ist (Log-Pfad/Host prĂźfen), bevor man eine Pipeline diagnostiziert. FĂźr den
KrĂźmel-Chat: nullfeld-Collector. FĂźr backbone: Checkout pullen + forest_seed.py.

Korrektur zu UPDATE-VEKTOR-SEED.md: Der dort dokumentierte Caveat "backbone
hat keinen Credential-Helper, kein Auto-Pull" gilt nicht mehr — Stand
2026-07-14 läuft git fetch auf backbone durch (523579a..87d40ef). Der Checkout
in /opt/crumbforest/repos/Ansible-Crumbforest war nur neun Tage alt, weil
niemand gepullt hat. Siehe [[netbox-token-und-rename]] fßr eine ähnliche Falle.