Files
second-brain/docs/ARCHITECTURE.md
Otto 5e4f21e680 feat(core): Engram, Store, Retriever, CLI - Grundsystem Second Brain
- 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
2026-05-25 00:53:56 +02:00

170 lines
4.7 KiB
Markdown

# 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
1. Kern-Module implementieren (Store, Embedder, Engram)
2. Scorer mit Dummy-Daten trainieren
3. Retrieval-Engine mit Testdaten validieren
4. Dashboard bauen
5. Cron-Jobs für Proaktivität setup
6. Issue #1 & #2 adressieren (Looping verhindern)