<div align="center">

<img alt="simplemem-Logo" src="https://github.com/user-attachments/assets/6ea54ad1-e007-442c-99d7-1174b10d1fec" width="450">

<div align="center">

## Effizientes lebenslanges Gedächtnis für LLM-Agenten — Text & Multimodal

<small>Langzeitgedächtnisse speichern, komprimieren und abrufen mit semantisch verlustfreier Kompression. Jetzt mit multimodaler Unterstützung für Text, Bild, Audio & Video.</small>

</div>

<p><b>Funktioniert mit jeder KI-Plattform, die MCP (Textgedächtnis) oder Python-Integration (vollständig multimodal) unterstützt</b></p>

<table>
<tr>

<td align="center" width="100">
  <a href="https://www.anthropic.com/claude">
    <img src="https://cdn.simpleicons.org/claude/D97757" width="48" height="48" alt="Claude Desktop" />
  </a><br/>
  <sub>
    <a href="https://www.anthropic.com/claude"><b>Claude Desktop</b></a>
  </sub>
</td>

<td align="center" width="100">
  <a href="https://cursor.com">
    <picture>
      <source media="(prefers-color-scheme: dark)" srcset="https://cdn.simpleicons.org/cursor/FFFFFF">
      <img src="https://cdn.simpleicons.org/cursor/000000" width="48" height="48" alt="Cursor" />
    </picture>
  </a><br/>
  <sub>
    <a href="https://cursor.com"><b>Cursor</b></a>
  </sub>
</td>

<td align="center" width="100">
  <a href="https://lmstudio.ai">
    <img src="https://github.com/lmstudio-ai.png?size=200" width="48" height="48" alt="LM Studio" />
  </a><br/>
  <sub>
    <a href="https://lmstudio.ai"><b>LM Studio</b></a>
  </sub>
</td>

<td align="center" width="100">
  <a href="https://cherry-ai.com">
    <img src="https://github.com/CherryHQ.png?size=200" width="48" height="48" alt="Cherry Studio" />
  </a><br/>
  <sub>
    <a href="https://cherry-ai.com"><b>Cherry Studio</b></a>
  </sub>
</td>

<td align="center" width="100">
  <a href="https://pypi.org/project/simplemem/">
    <img src="https://cdn.simpleicons.org/pypi/3775A9" width="48" height="48" alt="PyPI" />
  </a><br/>
  <sub>
    <a href="https://pypi.org/project/simplemem/"><b>PyPI-Paket</b></a>
  </sub>
</td>

<td align="center" width="100">
  <sub><b>+ Jeder MCP-<br/>Client</b></sub>
</td>

</tr>
</table>

<div align="center">

<br/>

[🇬🇧 English](../../README.md) •
[🇨🇳 中文](./README.zh-CN.md) •
[🇯🇵 日本語](./README.ja.md) •
[🇰🇷 한국어](./README.ko.md) •
[🇪🇸 Español](./README.es.md) •
[🇫🇷 Français](./README.fr.md) •
**🇩🇪 Deutsch** •
[🇧🇷 Português](./README.pt-br.md)<br/>
[🇷🇺 Русский](./README.ru.md) •
[🇸🇦 العربية](./README.ar.md) •
[🇮🇹 Italiano](./README.it.md) •
[🇻🇳 Tiếng Việt](./README.vi.md) •
[🇹🇷 Türkçe](./README.tr.md)

<br/>

[![Projektseite](https://img.shields.io/badge/🎬_INTERAKTIVE_DEMO-Unsere_Website_besuchen-FF6B6B?style=for-the-badge&labelColor=FF6B6B&color=4ECDC4&logoColor=white)](https://aiming-lab.github.io/SimpleMem-Page)

<p align="center">
  <a href="https://arxiv.org/abs/2601.02553"><img src="https://img.shields.io/badge/arXiv-2601.02553-b31b1b?style=flat&labelColor=555" alt="arXiv"></a>
  <a href="https://github.com/aiming-lab/SimpleMem"><img src="https://img.shields.io/badge/github-SimpleMem-181717?style=flat&labelColor=555&logo=github&logoColor=white" alt="GitHub"></a>
  <a href="../../LICENSE"><img src="https://img.shields.io/github/license/aiming-lab/SimpleMem?style=flat&label=license&labelColor=555&color=2EA44F" alt="Lizenz"></a>
  <a href="https://github.com/aiming-lab/SimpleMem/pulls"><img src="https://img.shields.io/badge/PRs-welcome-brightgreen?style=flat&labelColor=555" alt="PRs willkommen"></a>
  <br/>
  <a href="https://pypi.org/project/simplemem/"><img src="https://img.shields.io/pypi/v/simplemem?style=flat&label=pypi&labelColor=555&color=3775A9&logo=pypi&logoColor=white" alt="PyPI"></a>
  <a href="https://pypi.org/project/simplemem/"><img src="https://img.shields.io/pypi/pyversions/simplemem?style=flat&label=python&labelColor=555&color=3775A9&logo=python&logoColor=white" alt="Python"></a>
  <a href="https://mcp.simplemem.cloud"><img src="https://img.shields.io/badge/MCP-mcp.simplemem.cloud-14B8A6?style=flat&labelColor=555" alt="MCP-Server"></a>
  <a href="https://github.com/aiming-lab/SimpleMem"><img src="https://img.shields.io/badge/Claude_Skills-supported-FFB000?style=flat&labelColor=555" alt="Claude Skills"></a>
  <br/>
  <a href="https://discord.gg/KA2zC32M"><img src="https://img.shields.io/badge/Discord-Chat_beitreten-5865F2?style=flat&labelColor=555&logo=discord&logoColor=white" alt="Discord"></a>
  <a href="../../fig/wechat_logo3.JPG"><img src="https://img.shields.io/badge/WeChat-Gruppe-07C160?style=flat&labelColor=555&logo=wechat&logoColor=white" alt="WeChat"></a>
</p>

<br/>

[🚀 Schnellstart](#-schnellstart) • [🌟 Überblick](#-überblick) • [📦 Installation](#-installation) • [🔌 MCP-Server](#-mcp-server-textgedächtnis) • [📊 Reproduzieren](#-paper-ergebnisse-reproduzieren) • [📝 Zitierung](#-zitierung)

</div>

</div>

<br/>

## 🔥 Neuigkeiten

- **[05/21/2026]** 📦 **Einheitliches `simplemem`-Paket — ein Import, automatisches Routing!** SimpleMem, Omni-SimpleMem und EvolveMem sind jetzt in einem einzigen Paket vereint. `from simplemem import SimpleMem` wählt automatisch das Text- oder multimodale Backend anhand der ersten aufgerufenen Methode aus, und `simplemem.optimize(...)` nutzt EvolveMems Selbstentwicklungs-Loop. Installation in einem Schritt mit `pip install -e .`.
- **[05/14/2026]** 🧬 **EvolveMem (v3.0) — Sich selbst weiterentwickelndes Gedächtnis via AutoResearch!** Die Abrufinfrastruktur selbst entwickelt sich jetzt durch LLM-gesteuerte Closed-Loop-Diagnose weiter. Auf LoCoMo übertrifft EvolveMem die stärkste Baseline um **+25,7 % relativ**; auf MemBench um **+18,9 % relativ**. Das System entdeckt völlig neue Abrufdimensionen, die im ursprünglichen Design nicht vorhanden waren. [EvolveMem ansehen →](../../EvolveMem/)
- **[04/02/2026]** 🧠 **Omni-SimpleMem (v2.0) — Multimodales Gedächtnis ist da!** SimpleMem unterstützt jetzt **Text-, Bild-, Audio- & Video**-Gedächtnis. Erreicht **neuen SOTA auf LoCoMo (F1=0,613, +47%)** und **Mem-Gallery (F1=0,810, +51%)** gegenüber dem bisherigen Bestwert. [Omni-SimpleMem ansehen →](../../OmniSimpleMem/)
- **[02/09/2026]** 🚀 **Sitzungsübergreifendes Gedächtnis — übertrifft Claude-Mem um 64%!** [Dokumentation zum sitzungsübergreifenden Betrieb ansehen →](../../cross/README.md)
- **[01/20/2026]** 📦 **SimpleMem ist jetzt auf PyPI verfügbar!** Installation via `pip install simplemem`. [Paket-Verwendungsanleitung ansehen →](../PACKAGE_USAGE.md)
- **[01/14/2026]** 🎉 **SimpleMem MCP-Server ist LIVE!** Cloud-gehostet unter [mcp.simplemem.cloud](https://mcp.simplemem.cloud). [MCP-Dokumentation ansehen →](../../MCP/README.md)
- **[01/05/2026]** SimpleMem-Paper wurde auf [arXiv](https://arxiv.org/abs/2601.02553) veröffentlicht!

---

## 📑 Inhaltsverzeichnis

- [🚀 Schnellstart](#-schnellstart)
- [🌟 Überblick](#-überblick)
- [📦 Installation](#-installation)
- [🐳 Docker](#-mit-docker-ausführen)
- [🔌 MCP-Server](#-mcp-server-textgedächtnis)
- [📊 Paper-Ergebnisse reproduzieren](#-paper-ergebnisse-reproduzieren)
- [🗺️ Fahrplan](#️-fahrplan)
- [📝 Zitierung](#-zitierung)

---

## 🚀 Schnellstart

### 🧠 Den grundlegenden Arbeitsablauf verstehen

Auf hoher Ebene funktioniert SimpleMem als Langzeitgedächtnissystem für LLM-basierte Agenten. Der Arbeitsablauf besteht aus drei einfachen Schritten:

1. **Informationen speichern** – Dialoge oder Fakten werden verarbeitet und in strukturierte, atomare Gedächtniseinheiten umgewandelt.
2. **Gedächtnis indizieren** – Gespeicherte Erinnerungen werden mithilfe semantischer Einbettungen und strukturierter Metadaten organisiert.
3. **Relevantes Gedächtnis abrufen** – Bei einer Abfrage ruft SimpleMem die relevantesten gespeicherten Informationen auf der Grundlage von Bedeutung statt Schlüsselwörtern ab.

Dieses Design ermöglicht es LLM-Agenten, Kontext aufrechtzuerhalten, vergangene Informationen effizient abzurufen und die wiederholte Verarbeitung redundanter Verläufe zu vermeiden.

### 🎓 Grundlegende Verwendung

SimpleMem wird als einzelnes `simplemem`-Paket ausgeliefert. Der Standard `mode="auto"` **erkennt automatisch**, welches Backend verwendet werden soll, basierend auf dem, was Sie aufrufen — keine manuelle Konfiguration erforderlich:

```python
from simplemem import SimpleMem

mem = SimpleMem()  # mode="auto" — Backend wird durch ersten Aufruf gewählt
```

Die erste aufgerufene Methode bestimmt das Backend:

| Erster Aufruf | Gewähltes Backend | Warum |
|:--|:--|:--|
| `add_dialogue()` | **Text** (SimpleMem) | Dialogbasierte API → Textmodus |
| `add_text()` / `add_image()` / `add_audio()` / `add_video()` | **Omni** (Omni-SimpleMem) | Multimodale API → Omni-Modus |

<table>
<tr>
<td width="50%">

**📝 Auto → Text** (reiner Texteingabe)

```python
from simplemem import SimpleMem

mem = SimpleMem()  # auto mode

# add_dialogue() → text backend auto-selected
mem.add_dialogue(
    "Alice",
    "Bob, let's meet at Starbucks tomorrow at 2pm",
    "2025-11-15T14:30:00",
)
mem.add_dialogue(
    "Bob",
    "Sure, I'll bring the market analysis report",
    "2025-11-15T14:31:00",
)
mem.finalize()

answer = mem.ask("When and where will Alice and Bob meet?")
# → "16 November 2025 at 2:00 PM at Starbucks"
```

</td>
<td width="50%">

**🧠 Auto → Omni** (multimodale Eingabe)

```python
from simplemem import SimpleMem

mem = SimpleMem()  # auto mode

# add_image() → omni backend auto-selected
mem.add_text(
    "User loves hiking in the Rocky Mountains.",
    tags=["session_id:D1"],
)
mem.add_image("photo.jpg", tags=["session_id:D1"])
mem.add_audio("voice_note.wav", tags=["session_id:D1"])

result = mem.query("What does the user enjoy?", top_k=5)
for item in result.items:
    print(item["summary"])

mem.close()
```

</td>
</tr>
</table>

> **💡 Tipp**: Der Auto-Modus wählt das leichteste Backend, das zu Ihren Daten passt. Sie können auch explizit `mode="text"` oder `mode="omni"` verwenden, wenn Sie dies bevorzugen.

---

### 🧬 Erweitert: Abrufkonfiguration optimieren

Passen Sie Abruf-Hyperparameter offline auf Ihrem eigenen Entwicklungsdatensatz an und verwenden Sie dann die resultierende `Config` für die Inferenz. Dies ist ein dünner Wrapper um EvolveMems Selbstentwicklungs-Loop:

```python
import simplemem
from simplemem import SimpleMem, load_config

# mem is a finalized SimpleMem instance with memories already built
dev_questions = [
    ("When is the meeting?", "2pm tomorrow at Starbucks"),
    ("What should Bob prepare?", "market analysis report"),
]
config = simplemem.optimize(mem, dev_questions, max_rounds=3)
config.save("my_config.json")

# Later, deploy with the optimized config
config = load_config("my_config.json")
mem = SimpleMem(config=config)
```

> EvolveMem führt einen LLM-gesteuerten Evaluate → Diagnose → Propose → Guard-Zyklus über Ihren Entwicklungsfragen aus und passt globale Abruf-Flags an (top_k, Fusionsmodus, Antwortverifikation, Reflexionsrunden, ...). Für die vollständige eigenständige Version mit Benchmark-Adaptern und kategorienspezifischen Überschreibungen, siehe [`EvolveMem/`](../../EvolveMem/).

---

### 🚄 Erweitert: Parallelverarbeitung

Für die großskalige Dialogverarbeitung aktivieren Sie den Parallelmodus:

```python
from simplemem import create

mem = create(
    mode="text",
    clear_db=True,
    enable_parallel_processing=True,  # ⚡ Parallel memory building
    max_parallel_workers=8,
    enable_parallel_retrieval=True,   # 🔍 Parallel query execution
    max_retrieval_workers=4
)
```

> **💡 Profi-Tipp**: Parallelverarbeitung reduziert die Latenz bei Batch-Operationen erheblich!

---

## 🌟 Überblick

**SimpleMem** ist ein einheitlicher Gedächtnis-Stack für LLM-Agenten, aufgebaut auf einem Prinzip: *semantisch verlustfreie* Erinnerungen bei hoher Informationsdichte speichern, damit ein Agent mehr abruft, während er deutlich weniger Token verbraucht. Das Paket vereint drei Arbeiten, die dieses Prinzip teilen, aber unterschiedliche Teile des Problems angehen.

### 📝 SimpleMem: der Effizienz-Kern (Text)

Die meisten Gedächtnissysteme erzwingen einen schlechten Kompromiss. Sie akkumulieren entweder passiv rohe Interaktionshistorie (redundant, tokenintensiv) oder führen teure Reasoning-Schleifen durch, um Rauschen zu filtern (langsam, kostspielig). SimpleMem komprimiert stattdessen Interaktionen durch eine dreistufige Pipeline:

| Stufe | Was sie tut |
|:--|:--|
| **1. Semantische strukturierte Kompression** | Destilliert unstrukturierte Interaktionen in kompakte Gedächtniseinheiten (in sich geschlossene Fakten mit aufgelösten Koreferenzen und absoluten Zeitstempeln), die jeweils durch mehrere komplementäre Ansichten für flexiblen Abruf indiziert werden. |
| **2. Online-Semantische-Synthese** | Fügt verwandten Kontext innerhalb einer Sitzung zu einheitlichen abstrakten Repräsentationen zusammen, wobei Redundanz beim Aufbau des Gedächtnisses statt zur Abfragezeit beseitigt wird. |
| **3. Absichtsbewusstes Abrufplanen** | Leitet die Suchabsicht hinter einer Abfrage ab, um zu entscheiden, *was* abgerufen werden soll, und stellt einen präzisen, kompakten Kontext zusammen. |

Auf dem LoCoMo-Benchmark liefert dies einen durchschnittlichen F1-Gewinn von 26,4 % gegenüber früheren Systemen, während der Token-Verbrauch zur Inferenzzeit um ca. 30x reduziert wird. Mechanismusdetails (hybride Indexschichten, Kompressionsbeispiele, Abrufplanung): [**SimpleMem Textgedächtnis →**](../text-memory.md).

### 🧠 Omni-SimpleMem: multimodales Gedächtnis (Text, Bild, Audio, Video)

Omni-SimpleMem erweitert die Kompression-zuerst-Philosophie auf vier Modalitäten, aufgebaut auf drei Prinzipien: **Selektive Aufnahme** (entropiegesteuertes Filtern pro Modalität), **Progressiver Abruf** (hybrides FAISS + BM25 mit pyramidenförmiger Token-Budget-Erweiterung) und **Wissensgraph-Augmentierung** (Multi-Hop-Cross-Modal-Reasoning). Statt handentworfen zu sein, wurde die Architektur von einer autonomen Forschungspipeline *entdeckt*, die rund 50 Experimente über zwei Benchmarks hinweg durchführte, Fehlermodi diagnostizierte, Architekturänderungen vorschlug und sogar Datenpipeline-Bugs ohne menschliche Eingriffe in der inneren Schleife behob. Bezeichnenderweise trugen die Bug-Fixes und Architekturänderungen jeweils mehr bei als alle Hyperparameter-Optimierungen zusammen, wobei das System von einer naiven Baseline zum Stand der Technik auf LoCoMo und Mem-Gallery gelangte. Vollständige Dokumentation: [**Omni-SimpleMem →**](../../OmniSimpleMem/).

### 🧬 EvolveMem: sich selbst weiterentwickelnder Abruf

EvolveMem schließt einen blinden Fleck, den fast jedes Gedächtnissystem teilt: Der gespeicherte Inhalt entwickelt sich weiter, aber die *Abruf*-Maschinerie (Bewertungsfunktionen, Fusionsstrategien, Antwortgenerierungsrichtlinien) bleibt nach dem Deployment eingefroren. EvolveMem führt einen geschlossenen AutoResearch-Prozess durch (**Evaluate → Diagnose → Propose → Guard → Repeat**), bei dem ein LLM Pro-Fragen-Fehler diagnostiziert und Konfigurationsänderungen vorschlägt, gesichert durch automatisches Rollback bei Regression und Explorations-Anreizen bei Stagnation. Es entdeckt neue Abrufdimensionen (Abfragezerlegung, Entitätsaustausch, Antwortverifikation), die nicht im ursprünglichen Design vorhanden waren, verbessert LoCoMo um 25,7 % relativ gegenüber der stärksten Baseline, und seine entwickelten Konfigurationen übertragen sich positiv auf andere Benchmarks. Vollständige Dokumentation: [**EvolveMem →**](../../EvolveMem/).

### Wie sie zusammenpassen

`from simplemem import SimpleMem` gibt Ihnen den Textkern mit automatischem Routing zum multimodalen Backend, und `simplemem.optimize(...)` nutzt EvolveMem zur Feinabstimmung des Abrufs auf Ihren eigenen Daten. Ein Paket, ein mentales Modell: verlustfrei komprimieren, nach Absicht abrufen und das System sich kontinuierlich weiterentwickeln lassen.

---

## 📦 Installation

### 📝 Hinweise für Erstbenutzer

- Stellen Sie sicher, dass Sie **Python 3.10+ in Ihrer aktiven Umgebung** verwenden, nicht nur global installiert.
- Ein OpenAI-kompatibler API-Schlüssel muss **vor dem Ausführen einer Gedächtniskonstruktion oder eines Abrufs** konfiguriert werden, sonst kann die Initialisierung fehlschlagen.
- Wenn Sie Nicht-OpenAI-Anbieter verwenden (z. B. Qwen oder Azure OpenAI), überprüfen Sie sowohl den Modellnamen als auch `OPENAI_BASE_URL` in `config.py`.
- Bei großen Dialogdatensätzen kann die Aktivierung der Parallelverarbeitung die Gedächtnisaufbauzeit erheblich reduzieren.

### 📋 Anforderungen

- 🐍 Python 3.10+
- 🔑 OpenAI-kompatible API (OpenAI, Qwen, Azure OpenAI usw.)

### 🛠️ Einrichtung

```bash
# 📥 Repository klonen
git clone https://github.com/aiming-lab/SimpleMem.git
cd SimpleMem

# 📦 Abhängigkeiten installieren (gepinnte Versionen)
pip install -r requirements.txt

# — ODER — als bearbeitbares Paket installieren
pip install -e .                  # Standard: Text + Multimodal + Evolver
pip install -e ".[server]"        # + MCP / HTTP-Server (mcp, fastapi, ...)
pip install -e ".[all]"           # Alles, einschließlich Entwicklungswerkzeuge

# ⚙️ API-Einstellungen konfigurieren
cp config.py.example config.py
# config.py mit Ihrem API-Schlüssel und Ihren Einstellungen bearbeiten
```

### ⚙️ Konfigurationsbeispiel

```python
# config.py
OPENAI_API_KEY = "your-api-key"
OPENAI_BASE_URL = None  # or custom endpoint for Qwen/Azure

LLM_MODEL = "gpt-4.1-mini"
EMBEDDING_MODEL = "Qwen/Qwen3-Embedding-0.6B"  # State-of-the-art retrieval
```

---

## 🐳 Mit Docker ausführen

Der **MCP-Server** kann in Docker für eine konsistente, isolierte Umgebung ausgeführt werden. Daten (LanceDB und Benutzer-DB) werden in einem Host-Volume gespeichert.

### Voraussetzungen

- [Docker](https://docs.docker.com/get-docker/) und [Docker Compose](https://docs.docker.com/compose/install/)

### Schnellstart

```bash
# Vom Repository-Stammverzeichnis
docker compose up -d
```

- **Web-UI:** http://localhost:8000/
- **REST-API:** http://localhost:8000/api/
- **MCP (SSE):** http://localhost:8000/mcp/sse?token=&lt;TOKEN&gt;

Daten werden in `./data` auf dem Host gespeichert (wird automatisch erstellt).

### Benutzerdefinierte Konfiguration

1. Kopieren Sie die Umgebungsvorlage und bearbeiten Sie sie:
   ```bash
   cp .env.example .env
   # .env bearbeiten: JWT_SECRET_KEY, ENCRYPTION_KEY, LLM_PROVIDER, Modell-URLs usw. setzen
   ```
2. Mit der Env-Datei ausführen:
   ```bash
   docker compose --env-file .env up -d
   ```

### Ollama auf dem Host verwenden

Wenn `LLM_PROVIDER=ollama` und Ollama auf Ihrem Rechner läuft (nicht in Docker), setzen Sie in `.env`:

```bash
LLM_PROVIDER=ollama
OLLAMA_BASE_URL=http://host.docker.internal:11434/v1
```

Unter Linux wird `host.docker.internal` automatisch über die Compose-Datei aktiviert.

### Nützliche Befehle

```bash
docker compose logs -f simplemem   # Logs verfolgen
docker compose down                 # Container stoppen und entfernen
```

> 📖 Für das Self-Hosting des MCP-Servers (Docker oder Bare Metal), siehe [MCP-Dokumentation](../../MCP/README.md).

---

## 🔌 MCP-Server *(Textgedächtnis)*

SimpleMem ist als **cloudgehosteter Gedächtnisdienst** über das Model Context Protocol (MCP) verfügbar und ermöglicht eine nahtlose Integration mit KI-Assistenten wie Claude Desktop, Cursor und anderen MCP-kompatiblen Clients.

**🌐 Cloud-Dienst**: [mcp.simplemem.cloud](https://mcp.simplemem.cloud) — oder Self-Hosting des MCP-Servers lokal mit [Docker](#-mit-docker-ausführen).

### Hauptfunktionen

| Funktion | Beschreibung |
|---------|-------------|
| **Streamable HTTP** | MCP 2025-03-26-Protokoll mit JSON-RPC 2.0 |
| **Multi-Tenant-Isolation** | Benutzerspezifische Datentabellen mit Token-Authentifizierung |
| **Hybridabruf** | Semantische Suche + Schlüsselwortabgleich + Metadatenfilterung |
| **Produktionsoptimiert** | Schnellere Antwortzeiten durch OpenRouter-Integration |

### Schnellkonfiguration

```json
{
  "mcpServers": {
    "simplemem": {
      "url": "https://mcp.simplemem.cloud/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_TOKEN"
      }
    }
  }
}
```

> 📖 Für detaillierte Einrichtungsanleitungen und Self-Hosting-Leitfaden, siehe [MCP-Dokumentation](../../MCP/README.md)

---

## 📊 Paper-Ergebnisse reproduzieren

Reproduzieren Sie die LoCoMo / MemBench / Mem-Gallery-Zahlen aus den Papers. Jede Säule hat ihren eigenen Benchmark-Runner in ihrem eigenen Verzeichnis. Installieren Sie zuerst die Benchmark-Extras: `pip install -e ".[benchmark]"`.

### 📝 SimpleMem (Text) — LoCoMo

Vom Repository-Stammverzeichnis ausführen:

```bash
python test_locomo10.py                       # vollständiger LoCoMo-Benchmark
python test_locomo10.py --num-samples 5       # schnelle Teilmenge
python test_locomo10.py --result-file my_results.json
```

### 🧬 EvolveMem — Selbstentwicklung + LoCoMo / MemBench

Aus dem Verzeichnis `EvolveMem/` ausführen (siehe [`EvolveMem/README.md`](../../EvolveMem/README.md)):

```bash
cd EvolveMem
python run_evolution.py --data data/locomo10.json --max-rounds 7
python run_benchmark.py locomo --sample 0 --initial weak --max-rounds 3
python run_benchmark.py membench --agent FirstAgent --max-rounds 3
```

### 🧠 Omni-SimpleMem — LoCoMo / Mem-Gallery

Aus dem Verzeichnis `OmniSimpleMem/` ausführen (siehe [`OmniSimpleMem/README.md`](../../OmniSimpleMem/README.md)):

```bash
cd OmniSimpleMem
python benchmarks/locomo/run_locomo.py --data-path /path/to/locomo10.json --model gpt-4o
```

---

## 🗺️ Fahrplan

Aktuelle Fähigkeiten nach Integrationskanal:

| Fähigkeit | Python (`pip install`) | MCP-Server (Claude Desktop, Cursor, ...) |
|:--|:--:|:--:|
| Textgedächtnis | ✅ | ✅ |
| Multimodal (Bild / Audio / Video) | ✅ | ⬜ geplant |
| `optimize()` sich selbst weiterentwickelnder Abruf | ✅ | ⬜ geplant |

Geplante Arbeiten zur Schließung der Lücke (der MCP-Server ist ein eigenständiger Multi-Tenant-Textdienst; dies sind echte Funktionen, keine Dokumentationsverbesserungen):

- [ ] **Multimodal über MCP.** `memory_add_image` / `memory_add_audio` / `memory_add_video`-Werkzeuge hinzufügen. Benötigt einen Datei-Upload-Pfad (Base64 oder URL, da MCP keine lokalen Dateipfade übergeben kann), eine Multi-Tenant-Anpassung des Omni-SimpleMem-Storage-Backends und serverseitigen Zugriff auf Vision-/Audio-Modelle.
- [ ] **EvolveMem über MCP.** `optimize()` als MCP-Werkzeug bereitstellen. Handhabbarer als Multimodal (Text rein, JSON-Konfiguration raus, kein Dateitransport), aber der MCP-Retriever berücksichtigt derzeit nur `semantic_top_k` / `keyword_top_k` der ~10 Dimensionen, die EvolveMem entwickelt. Erfordert die Erweiterung des MCP-Retrievers zur Unterstützung der verbleibenden Regler (strukturiertes top_k, Fusionsmodus/-gewichtungen, Entitätsaustausch, Abfragezerlegung, Antwortverifikation), einen Adapter zur Ausführung des Evolutionsloops über die gespeicherten Erinnerungen eines Mandanten, mandantenspezifische Konfigurationspersistenz und asynchrone Ausführung (der Loop ist LLM-intensiv und würde eine synchrone Anfrage zum Timeout bringen).
- [ ] **Docker** erbt beides automatisch, sobald der MCP-Server sie unterstützt (multimodale Abhängigkeiten zum Image hinzufügen und ein Omni-Storage-Volume).

Für vollständiges Multimodal und sich selbst weiterentwickelnden Abruf heute, verwenden Sie die Python-API (siehe [Schnellstart](#-schnellstart)).

---

## 📝 Zitierung

Wenn Sie SimpleMem in Ihrer Forschung verwenden, zitieren Sie bitte:

```bibtex
@article{simplemem2026,
  title={SimpleMem: Efficient Lifelong Memory for LLM Agents},
  author={Liu, Jiaqi and Su, Yaofeng and Xia, Peng and Zhou, Yiyang and Han, Siwei and  Zheng, Zeyu and Xie, Cihang and Ding, Mingyu and Yao, Huaxiu},
  journal={arXiv preprint arXiv:2601.02553},
  year={2026},
  url={https://arxiv.org/abs/2601.02553}
}
```

```bibtex
@article{evolvemem2026,
  title={EvolveMem: Self-Evolving Memory Architecture via AutoResearch for LLM Agents},
  author={Liu, Jiaqi and Ye, Xinyu and Xia, Peng and Zheng, Zeyu and Xie, Cihang and Ding, Mingyu and Yao, Huaxiu},
  journal={arXiv preprint arXiv:2605.13941},
  year={2026},
  url={https://arxiv.org/abs/2605.13941}
}
```

```bibtex
@article{omnisimplemem2026,
  title   = {Omni-SimpleMem: Autoresearch-Guided Discovery of Lifelong Multimodal Agent Memory},
  author  = {Liu, Jiaqi and Ling, Zipeng and Qiu, Shi and Liu, Yanqing and Han, Siwei and Xia, Peng and Tu, Haoqin and Zheng, Zeyu and Xie, Cihang and Fleming, Charles and Ding, Mingyu and Yao, Huaxiu},
  journal = {arXiv preprint arXiv:2604.01007},
  year    = {2026},
}
```

---

## 📄 Lizenz

Dieses Projekt ist unter der **MIT-Lizenz** lizenziert — siehe die [LICENSE](../../LICENSE)-Datei für Details.

---

## 🙏 Danksagungen

Wir möchten den folgenden Projekten und Teams danken:

- 🔍 **Einbettungsmodell**: [Qwen3-Embedding](https://github.com/QwenLM/Qwen) - Hochmoderne Abrufleistung
- 🗄️ **Vektordatenbank**: [LanceDB](https://lancedb.com/) - Hochleistungs-Spaltenspeicher
- 📊 **Benchmark**: [LoCoMo](https://github.com/snap-research/locomo) - Framework zur Bewertung von Langzeitgedächtnis
