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

2.0 KiB

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:

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