Files
Hermes-Memory-Next-Level/docs/research/agent-memory-solutions-2026.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

17 KiB
Raw Permalink Blame History

Deep Research: Agent Memory & Context Rot Solutions (2026)

Executive Summary

LLM-basierte Agenten verlieren ihren Zustand bei Context-Compression, weil Token-Limits durch verlustbehaftete Summarization oder naive Truncation "gelöst" werden. Die Lösung ist kein größeres Kontextfenster, sondern hierarchisches, strukturiertes Memory-Management über mehrere Tiers — von Working Memory (aktiver Prompt) bis Long-Term Memory (Vektor-Store + Knowledge Graph). Projekte wie Letta (OS-ähnliches Memory), Mem0 (Multi-Level Personal Memory), und Zep (asynchrone Long-Term Context) adressieren das Problem aktiv. Für Hermes Agent bedeutet das: Memory muss von flachem Key-Value zu strukturierten, gelabelten Blöcken mit Entity-Linking und temporaler Abfrage werden.


1. Context Rot: Warum Agenten ihren Zustand verlieren

Technische Ursachen

Mechanismus Beschreibung Auswirkung
Token-Limits Jedes LLM hat festes Kontextfenster (4K2M Tokens) Ältere Nachrichten müssen entfernt werden
Naive Truncation Einfaches Abschneiden alter Nachrichten Kompletter Verlust aller Informationen vor dem Cutoff
Summarization KI-generierte Zusammenfassung bei ~90% Auslastung Verlust von Details, Nuancen, implizitem Zustand
Sliding Window FIFO-Buffer, alte Nachrichten fallen raus Keine Persistenz, keine Rückwärtsnavigation
Session Reset Neue Session = leerer Kontext Totaler Zustandsverlust ohne Memory-Injection

Warum Summarization zerstört

Die meisten Frameworks (LangChain, etc.) ersetzen bei Erreichen eines Schwellenwerts (typisch 90% des Kontextfensters) die ältesten Nachrichten durch eine einzelne Zusammenfassung. Das Problem:

  • Verlust von Tool-Konfigurationen: "Wir haben gerade Docker-Compose auf Port 8080 konfiguriert" → "Docker wurde erwähnt"
  • Verlust von Präferenzen: "Nutzer hasst Bullet-Points, mag Tabellen mit │" → "Nutzer hat Formatierungspräferenzen"
  • Verlust von Projekt-Zustand: "Wir arbeiten an Zeile 47 in auth.service.ts" → "Es wurde an Authentifizierung gearbeitet"
  • Halluzinationen: Der Agent "ratet", was vorher passiert ist, anstatt es zu wissen

Der Hermes-spezifische Schmerz

Hermes nutzt session_search für vergangene Sessions, aber:

  • Keine automatische Memory-Extraktion: Wichtige Fakten werden nicht automatisch aus Sessions gezogen
  • Kein Entity-Linking: "Projekt X" in Session A und "Projekt X" in Session B sind nicht verknüpft
  • Keine Temporalität: "Was war der letzte Stand?" kann nicht beantwortet werden
  • Memory-Tool ist manuell: Der Nutzer muss aktiv memory aufrufen, um etwas zu speichern
  • Keine hierarchische Struktur: Alles ist flaches Key-Value, keine gelabelten Blöcke

2. Memory-Architekturen für Agenten

Memory-Typen (kognitive Psychologie)

Typ Beschreibung Beispiel für Agent
Episodic Konkrete Ereignisse/Episoden "Session vom 3.6.2026: Wir haben den Kundenprozess für Waldseilgarten modelliert"
Semantic Fakten, Konzepte, Beziehungen "Nutzer bevorzugt Tabellen mit │-Trennern, kein SAP B1"
Procedural Wie man Dinge tut "Für ECC-Integration: erst CODING.md lesen, dann planen"
Working Aktiver, kurzfristiger Kontext "Wir sind gerade bei Zeile 47 in auth.service.ts"

Speicher-Mechanismen

Mechanismus Stärke Schwäche Beste für
Vector Stores Semantische Ähnlichkeitssuche Keine strukturierten Beziehungen Fakten, Dokumente, große Mengen
Knowledge Graphs Strukturierte Beziehungen, Reasoning Aufbau-Komplexität Entitäten, Beziehungen, Projekte
Structured Memory Typisierte Blöcke, Labels Weniger flexibel als Vektor-Store User-Prefs, Projekt-State, Skills
Key-Value (current) Einfach, schnell Keine Semantik, keine Verknüpfung Einfache Fakten, kurze Notizen

3. Projekte & Frameworks im Detail

Letta (ehemals MemGPT) — OS-ähnliches Memory

Aspekt Details
GitHub letta-ai/letta
Kernidee Virtuelles Kontextfenster: Agent "denkt", er hat unendlichen Kontext, aber nur ein Subset ist im Prompt
Memory Blocks Strukturierte, gelabelte Blöcke: human, persona, project, preferences
Summarization Automatisch bei 90% Auslastung (SUMMARIZATION_TRIGGER_MULTIPLIER = 0.9)
Passage Manager Alle Nachrichten persistent gespeichert, auch nach Summarization
In-Context Messages Nur aktives Subset im Prompt, Rest aus DB geladen
Self-Management Eigene Memory-Tools: core_memory_append, core_memory_replace, core_memory_delete
Tool-Integration Agent kann selbst entscheiden, was wichtig ist und speichern

Relevanz für Hermes: Letta zeigt, dass Memory nicht passiv sein darf. Der Agent muss aktiv sein eigenes Memory verwalten können — nicht nur der Nutzer.

Mem0 — The Memory Layer for Personalized AI

Aspekt Details
GitHub mem0ai/mem0
Kernidee Multi-Level Memory für User, Session und Agent-State
Neuer Algorithmus (Apr 2026) Single-pass ADD-only Extraction, Entity Linking, Multi-Signal Retrieval
Retrieval Semantisch + BM25 + Entity Matching + Temporal Reasoning
Benchmarks 91.6 auf LoCoMo, 94.8 auf LongMemEval
Hybrid Search Kombination aus semantischer und Keyword-Suche
API Einfache REST-API für Integration in bestehende Agenten

Relevanz für Hermes: Mem0's Multi-Level-Approach passt perfekt zu Hermes' Profile-System. User-Memory + Session-Memory + Agent-State als separate Ebenen.

Zep AI — Long-Term Context for AI Assistants

Aspekt Details
GitHub getzep/zep-python
Kernidee Asynchrone Memory-Verarbeitung, die den Chat nicht blockiert
Auto-Summaries Generiert Zusammenfassungen aus Chat-Historie im Hintergrund
Fact Extraction Extrahiert Fakten ohne vordefiniertes Schema
Document Collections Vektor-Suche über Dokumente
Prompt-Strukturierung Automatisches Hinzufügen von Recent Messages + Summary + Relevant Context

Relevanz für Hermes: Zep's asynchrone Verarbeitung wäre ideal für Hermes' Cronjob-System — Memory-Extraktion im Hintergrund, nicht in der aktiven Session.

LangChain Memory — Modularer Ansatz

Memory-Typ Funktion
ConversationBufferMemory Speichert alle Nachrichten roh
ConversationSummaryMemory Summarisiert bei Overflow
VectorStoreRetrieverMemory RAG-basiertes Retrieval aus Vektor-Store
CombinedMemory Kombiniert mehrere Memory-Typen

Relevanz für Hermes: LangChain's modulares Design zeigt, dass Memory nicht entweder/oder sein muss. Mehrere Tiers gleichzeitig sind sinnvoll.

AutoGPT — Historischer Pioneer

Aspekt Details
GitHub Significant-Gravitas/AutoGPT
Historisch Einer der ersten Agenten mit Memory-Ansatz (2023)
Memory-Backends Lokale JSON, Redis, Pinecone, Weaviate
Aktueller Fokus Platform/Forge statt klassisches Memory

4. Praktische Ansätze & Patterns

Memory-Tiers

┌─────────────────────────────────────────────────────────────┐
│ TIER 1: WORKING MEMORY (Aktiver Prompt)                     │
│ • Aktuelle Nachrichten + relevante Kontext                   │
│ • 4K128K Tokens (je nach Modell)                          │
│ • Schnellster Zugriff, höchste Relevanz                     │
├─────────────────────────────────────────────────────────────┤
│ TIER 2: SHORT-TERM MEMORY (Letzte N Sessions)              │
│ • Vollständige Nachrichten der letzten 510 Sessions       │
│ • SQLite/JSON, schneller Zugriff                           │
│ • Für Rückfragen zu kürzlich abgeschlossenen Tasks         │
├─────────────────────────────────────────────────────────────┤
│ TIER 3: LONG-TERM MEMORY (Vektor-Store + Graph)              │
│ • Embeddings für semantische Suche                         │
│ • Knowledge Graph für Beziehungen                          │
│ • Fakten, Präferenzen, Projekt-Zustände                    │
├─────────────────────────────────────────────────────────────┤
│ TIER 4: ARCHIVE (Vollständige Historie)                    │
│ • Alle Sessions, alle Nachrichten                          │
│ • Nur bei Bedarf durchsucht (langsame Suche)               │
│ • Compliance, Audit, vollständige Rekonstruktion           │
└─────────────────────────────────────────────────────────────┘

Hierarchical Memory

  • Session-Ebene: Volle Nachrichten, aktueller Zustand
  • Tages-Ebene: Zusammenfassung der Sessions eines Tages
  • Wochen-Ebene: Zusammenfassung der Projekte einer Woche
  • Monats-Ebene: Langfristige Trends, gelernte Präferenzen

Checkpoint/Restore

  • Agent-State wird nach jedem signifikanten Schritt persistiert
  • Bei Context-Overflow oder Fehler: Restore auf letzten Checkpoint
  • Hermes-Analogon: session_search + Memory-Tool, aber automatisch

Session Bridging

  • Beim Start neuer Session: Relevante Memories aus vorherigen Sessions laden
  • "Memory Injection": System-Prompt wird mit relevantem Kontext angereichert
  • Hermes-Analogon: Aktuell manuell über memory tool, nicht automatisch

Memory Injection Patterns

Pattern Beschreibung Wann nutzen
RAG-Style Retrieve relevante Memories → Inject in Prompt Große Memory-Mengen, semantische Suche
Structured Blocks Typisierte Memory-Blöcke mit festen Labels User-Prefs, Projekt-State, wiederkehrende Daten
Self-Management Agent entscheidet selbst, was gespeichert/gelesen wird Komplexe, langlebige Agenten
Hybrid Kombination aus RAG + Structured + Self-Management Produktions-Agenten (Letta, Mem0)

5. Hermes-spezifische Analyse & Empfehlungen

Was Hermes bereits hat

Feature Status Bewertung
memory Tool Manuell Nutzer muss aktiv speichern
session_search FTS5-basiert Gut für Discovery, schlecht für State
skills System Wiederverwendbar Prozedurales Memory, aber statisch
profile System Isoliert Keine Cross-Profile Memory-Sync
cronjob Scheduler Könnte Memory-Extraktion im Hintergrund machen
MEMORY.md Manuell Nutzer muss selbst kuratieren

Was Hermes braucht

Priorität Feature Beschreibung Umsetzung
P0 Auto-Extraction Automatisches Extrahieren von Fakten aus Sessions Cronjob nach jeder Session
P0 Structured Blocks Gelabelte Memory-Blöcke statt flaches Key-Value memory Tool erweitern
P1 Entity Linking Verknüpfung von Memories über Entitäten Projekt-Namen, Personen, Konzepte
P1 Temporal Memory Zeitbewusstes Retrieval "Was war der letzte Stand von X?"
P1 Multi-Tier Unterschiedliche Speicher-Ebenen Working → Short-Term → Long-Term
P2 Self-Management Agent kann selbst Memory verwalten Memory-Tools für Agenten
P2 Summarization-Persistenz Zusammenfassungen bei Compression speichern Nicht verwerfen, sondern archivieren

Konkrete Umsetzungsvorschläge für Hermes

1. Memory-Block-Schema (erweitertes memory Tool)

# Statt:
memory: "User prefers tables with │ separators"

# Besser:
memory_block:
  type: "user_preference"
  category: "formatting"
  key: "table_style"
  value: "compact with │ separators"
  source: "session_2026-06-03"
  confidence: 0.95
  entities: ["Flo"]

2. Auto-Extraction Cronjob

# Nach jeder Session:
cronjob:
  schedule: "after_session_end"
  action: "extract_memories"
  # Extrahiert automatisch:
  # - User preferences (Formatierung, Workflow)
  # - Project state (aktuelle Dateien, offene Tasks)
  # - Learned patterns (was hat funktioniert, was nicht)
  # - Entity relationships (Projekt X → Datei Y → Config Z)

3. Entity-Linking Graph

[User: Flo] --prefers--> [Format: Tables with │]
[User: Flo] --works_on--> [Project: waldseilgarten-crm]
[Project: waldseilgarten-crm] --has_file--> [File: docker-compose.yml]
[Project: waldseilgarten-crm] --uses--> [Tech: NestJS + React]
[Session: 2026-06-03] --discussed--> [Topic: Kundenprozess]

4. Session-Start Memory-Injection

# Bevor die Session startet:
1. Suche relevante Memories für aktuellen Kontext
2. Lade Project-State (letzter Stand)
3. Lade User-Preferences (Formatierung, Workflow)
4. Lade offene Tasks / TODOs
5. Injected in System-Prompt

6. Vergleich: Bestehende Lösungen

Projekt Memory-Typ Self-Mgmt Multi-Tier Entity-Linking Temporal Integration Open Source
Letta Structured Blocks Python SDK
Mem0 Multi-Level REST API
Zep Async + Facts Python/JS SDK
LangChain Modular Python/JS
AutoGPT Configurable Python
Hermes (current) Key-Value Built-in

7. Empfehlungen für Hermes

Kurzfristig (12 Wochen)

  1. Memory-Blocks erweitern: memory Tool um type, category, entities erweitern
  2. Auto-Extraction-Prototype: Cronjob, der nach Sessions automatisch Fakten extrahiert (basierend auf session_search + LLM-Summarization)
  3. Project-State-Memory: Automatisches Speichern von aktuellem Projekt, offenen Dateien, letzten Änderungen

Mittelfristig (12 Monate)

  1. Entity-Linking: Einfacher Graph, der Projekte, Dateien, Personen, Konzepte verknüpft
  2. Multi-Tier Memory: SQLite für Short-Term, Vektor-Store (Chroma/Qdrant) für Long-Term
  3. Session-Start Injection: Automatisches Laden relevanter Memories beim Session-Start

Langfristig (36 Monate)

  1. Self-Management: Agent kann selbst entscheiden, was wichtig ist
  2. Hierarchical Summarization: Tages-/Wochen-/Monats-Zusammenfassungen
  3. Cross-Profile Memory: Geteilte Fakten über Profile hinweg (User-Prefs bleiben gleich)

8. Quellen & Referenzen

Primärquellen (GitHub)

Projekt URL Analysierte Dateien
Letta https://github.com/letta-ai/letta letta/agent.py, letta/memory.py, letta/system.py, letta/persistence_manager.py
Mem0 https://github.com/mem0ai/mem0 mem0/memory/main.py, mem0/configs/base.py, mem0/utils/main.py
Zep https://github.com/getzep/zep-python zep_python/client.py, zep_python/memory.py
AutoGPT https://github.com/Significant-Gravitas/AutoGPT autogpt/memory/
LangChain https://github.com/langchain-ai/langchain langchain/memory/

Dokumentation

  • Letta Docs: https://docs.letta.com/ — Memory Blocks, System Prompts, Tool Integration
  • Mem0 Docs: https://docs.mem0.ai/ — Memory Layer, Multi-Level Architecture, API Reference
  • Zep Docs: https://docs.getzep.com/ — Long-Term Memory, Fact Extraction, Async Processing
  • LangChain Memory: https://python.langchain.com/docs/modules/memory/ — Buffer, Summary, Vector Store

Papers & Benchmarks

  • LoCoMo Benchmark: Long-Context Memory Evaluation
  • LongMemEval: Long-term Memory Evaluation for Conversational Agents
  • Mem0 Benchmarks (Apr 2026): 91.6 LoCoMo, 94.8 LongMemEval

Hermes-Intern

  • memory Tool: ~/.hermes/memory/ (user + memory stores)
  • session_search: SQLite FTS5 in ~/.hermes/sessions.db
  • skills: ~/.hermes/skills/ (prozedurales Memory)
  • cronjob: ~/.hermes/cron/ (Scheduler für Background-Tasks)

Recherche durchgeführt: Juni 2026 SearXNG war für API-Anfragen nicht verfügbar (403 Forbidden), daher primär über direkte GitHub-Source-Analyse