- src/engram.py: Gedaechtniseinheit mit Confidence, Correctness, Links - src/store.py: SQLite FTS5 persistenter Speicher - src/retriever.py: Hybrid Suche + Reranking - src/cli.py: Kommandozeilen-Interface Issue: #1
4.7 KiB
4.7 KiB
Second Brain - Architektur
Vision
Ein zweites Gehirn für OpenClaw das:
- Kurzzeitgedächtnis: Aktuelle Sessions, Kontext, unverarbeitete Informationen
- Langzeitgedächtnis: Gesammeltes Wissen, bewertet, verknüpft, priorisiert
- Bewertungssystem: Jedes Faktum hat einen Vertrauenswert (0-1), korrektierbar
- Proaktivität: Agent wacht auf, prüft, handelt ohne expliziten Befehl
- Selbstheilung: Erkennt eigene Fehler, korrigiert, lernt daraus
Module
1. Engram Store (Gedächtnis-Einheiten)
Jede Information wird als "Engramm" gespeichert:
{
id: uuid
content: string (Markdown)
vector: [float...] (Embedding)
metadata: {
source: "user|agent|web|file"
confidence: 0.0-1.0
created: timestamp
modified: timestamp
access_count: int
last_accessed: timestamp
tags: [string...]
session_id: string|null
agent_id: string|null
},
correctness: {
confirmed: bool
confirmations: int
rejections: int
last_reviewed: timestamp
review_history: [
{ by: "user|agent", action: "confirm|reject|modify", at: timestamp, note: string }
]
},
links: [uuid...] (verbundene Engramme)
hierarchy: {
parent: uuid|null
children: [uuid...]
depth: int
}
}
2. Vector Store (ChromaDB)
- Lokale SQLite-basierte Vektor-Datenbank
- Kein externer Service nötig
- Embedding über sentence-transformers (all-MiniLM-L6-v2)
- ~22MB Modell, CPU-only, 384 Dimensionen
3. Neural Scorer
- Kleines Feed-Forward-Netz (PyTorch)
- Eingabe: Embedding + Metadaten (Alter, Zugriffshäufigkeit, Quelle)
- Ausgabe: Confidence-Score (0-1)
- Training: Reinforcement von User-Feedback (richtig/falsch)
4. Retrieval Engine
- Hybrid: Semantische Suche (Vektor) + Keyword (BM25-ähnlich)
- Reranking nach Confidence, Aktualität, Relevanz
- Contextual Compression: Nur relevante Teile zurückgeben
5. Proactivity Engine
- Cron-gesteuerte Hintergrundaufgaben
- Heartbeat-gesteuerte Prüfungen
- Trigger: Zeit, Events, Zustandsänderungen
- Entscheidet selbst: Was ist jetzt wichtig?
6. Error Correction
- Erkennt fehlgeschlagene Tool-Calls
- Speichert Fehler mit Kontext
- Analysiert Muster: "Immer wenn X, dann scheitert Y"
- Auto-Fix: Alternative Strategien, Fallbacks
7. Visualisierung
- Streamlit-Dashboard lokal
- Graph-Ansicht: Verknüpfte Engramme
- Timeline: Wann wurde was gelernt?
- Stats: Vertrauen, Korrektheit, Abdeckung
Tech Stack
| Komponente | Technologie | Warum |
|---|---|---|
| Vektor-DB | ChromaDB (lokal) | Kein externer Service, SQLite-basiert |
| Embeddings | sentence-transformers | Klein, schnell, offline |
| Neural Scorer | PyTorch (custom) | Trainierbar, lokal, kein API-Key |
| Frontend | Streamlit | Schnell, Python-nativ, interaktiv |
| Daten-Layer | Python-Klassen + SQLite | Kontrollierbar, debuggbar |
| Prozesse | Cron (OpenClaw built-in) + Heartbeat | Kein externer Scheduler |
Datenfluss
User Input / Event
|
v
[Parser] -> Engramm erstellen
|
v
[Embedding] -> Vektor generieren
|
v
[Vector Store] -> Speichern
|
v
[Neural Scorer] -> Initial-Confidence
|
v
[Link Engine] -> Mit bestehenden verknüpfen
|
v
[Retrieval] <- Anfrage
|
v
[Rerank] -> Beste Ergebnisse
|
v
[Response] -> An User / Agent
|
v
[Feedback Loop] <- Richtig/Falsch?
|
v
[Learn] -> Scorer trainieren, Confidence anpassen
Dateistruktur
second-brain/
├── src/
│ ├── __init__.py
│ ├── engram.py # Engramm-Modell
│ ├── store.py # ChromaDB-Wrapper
│ ├── embedder.py # Embedding-Engine
│ ├── scorer.py # Neural Confidence Scorer
│ ├── retriever.py # Hybrid Retrieval
│ ├── linker.py # Verknüpfungs-Engine
│ ├── proactivity.py # Proaktivitäts-Manager
│ ├── error_handler.py # Fehlererkennung & Korrektur
│ ├── trainer.py # RL-Training
│ └── config.py # Konfiguration
├── data/
│ ├── chromadb/ # Vector DB Files
│ ├── engrams.jsonl # Backup aller Engramme
│ └── scorer_model.pt # Trainiertes Scorer-Netz
├── docs/
│ ├── ARCHITECTURE.md
│ └── API.md
├── tests/
│ └── test_core.py
├── scripts/
│ └── init_db.py
└── app.py # Streamlit Dashboard
Nächste Schritte
- Kern-Module implementieren (Store, Embedder, Engram)
- Scorer mit Dummy-Daten trainieren
- Retrieval-Engine mit Testdaten validieren
- Dashboard bauen
- Cron-Jobs für Proaktivität setup
- Issue #1 & #2 adressieren (Looping verhindern)