Files
Hermes-Memory-Next-Level/docs/decisions/ADR-001-structured-memory-blocks.md
Florian Hartmann 33fb180855 Initial commit: Project structure, README, AGENTS.md, .env.example, docs
- README.md with project overview, status, architecture
- AGENTS.md with agent context and conventions
- .env.example with environment variables
- docs/research/agent-memory-solutions-2026.md (full research)
- docs/architecture/memory-tiers.md (4-tier architecture)
- docs/decisions/ADR-001-structured-memory-blocks.md
- Directory structure for src/, tests/, scripts/, logs/, data/
2026-06-03 22:25:43 +00:00

75 lines
2.0 KiB
Markdown

# ADR-001: Structured Memory Blocks
## Status
Accepted
## Kontext
Hermes Memory ist aktuell flaches Key-Value. Der Nutzer speichert manuell:
```
memory: "User prefers tables with │ separators"
```
Das Problem:
- Keine Typisierung (ist das eine Präferenz, ein Fakt, ein Projekt-State?)
- Keine Verknüpfung (welches Projekt? welche Person?)
- Keine Temporalität (wann gespeichert? wann zuletzt genutzt?)
- Keine Confidence (wie sicher ist die Extraktion?)
- Keine automatische Extraktion (Nutzer muss manuell speichern)
## Entscheidung
Wir führen **Structured Memory Blocks** ein:
```yaml
memory_block:
id: "uuid"
type: "user_preference" | "project_state" | "learned_pattern" | "entity_relationship" | "procedural"
category: "formatting" | "workflow" | "tech_stack" | "contact" | "project" | "skill"
key: "table_style"
value: "compact with │ separators"
source: "session_2026-06-03"
confidence: 0.95
entities: ["Flo", "waldseilgarten-crm"]
created_at: "2026-06-03T14:30:00Z"
updated_at: "2026-06-03T14:30:00Z"
access_count: 1
last_accessed: "2026-06-03T14:30:00Z"
```
## Konsequenzen
### Positiv
- Typisierung ermöglicht gezieltes Retrieval ("gib mir alle Präferenzen des Users")
- Entity-Linking ermöglicht Kontext-Navigation ("was wissen wir über Projekt X?")
- Temporalität ermöglicht "letzter Stand"-Abfragen
- Confidence ermöglicht Filterung nach Qualität
- Auto-Extraction kann strukturiert speichern
### Negativ
- Komplexer als Key-Value
- Migration bestehender Memories nötig
- Mehr Speicherplatz pro Memory
## Alternative
Key-Value beibehalten + Tags hinzufügen:
```
memory: "User prefers tables with │ separators"
tags: ["user_preference", "formatting", "Flo"]
```
Abgelehnt: Tags sind nicht strukturiert genug für Entity-Linking und Temporalität.
## Implementierung
1. SQLite-Schema für Memory Blocks
2. Migration bestehender `memory` Einträge
3. Erweitertes `memory` Tool in Hermes
4. Auto-Extraction produziert Blocks statt Strings
## Datum
2026-06-03