MemGPT / Letta - OS-Style Agent Memory Cheatsheet
MemGPT ist die Techniken — und Letta das Framework, das aus ihr wuchs — für das Geben von LLM Agenten Betriebssystem-Style Memory Management. Die Kern Idee: behandele das Context Window wie RAM (schnell aber klein) und füge “Disk” in der Form von durchsuchbar Archival Memory hinzu. Der Agent selbst entscheidet, via Tool Calls, was in Haupt Kontext zu halten und was zu Speicher zu paging, dadurch Erhaltung kohärent Langzeitgedächtnis weit über das rohe Context Limit. (Das Projekt wird nun als Letta entwickelt.)
Installation
| Methode | Befehl |
|---|
| pip | pip install letta |
| Starte den Server | letta server |
| Docker | docker run -p 8283:8283 letta/letta:latest |
| ADE (Web UI) | verbinde die Agent Development Environment zum Server |
| Überprüfen | letta version |
Memory Architektur
| Ebene | Analogie | Inhalt |
|---|
| Main Context (Core Memory) | RAM | Persona + Key Fakten immer im Prompt |
| Recall Memory | Aktuelle Dateien | Konversations History, durchsuchbar |
| Archival Memory | Disk | Beliebige Langzeitfakten, durchsuchbar |
| Der Agent | Das OS | Entscheidet was zu Paging in/aus via Tools |
Core Memory (Immer In-Context)
| Block | Zweck |
|---|
persona | Wer der Agent ist / wie er sich verhält |
human | Was er über den User weiß |
| Custom Blocks | Domain-spezifische immer-vorliegende Fakten |
Der Agent bearbeitet diese Blocks mit Tools (core_memory_append, core_memory_replace) als er lernt.
Erstelle einen Agent
from letta_client import Letta
client = Letta(base_url="http://localhost:8283")
agent = client.agents.create(
name="assistant",
memory_blocks=[
{"label": "persona", "value": "Ich bin ein prägnanter, hilfsbereiter Assistant."},
{"label": "human", "value": "Des Users Name ist Nick."},
],
model="openai/gpt-4o",
embedding="openai/text-embedding-3-small",
)
response = client.agents.messages.create(
agent_id=agent.id,
messages=[{"role": "user", "content": "Remember I prefer dark mode."}],
)
| Tool (Agent-invoked) | Aktion |
|---|
core_memory_append | Hänge an ein immer-in-Context Block an |
core_memory_replace | Update ein Core Memory Block |
archival_memory_insert | Speichere ein Fakt zum Archival (Disk) |
archival_memory_search | Abrufe aus Archival Memory |
conversation_search | Durchsuche Recall Memory |
Archival Memory
| Befehl | Beschreibung |
|---|
client.agents.passages.create(agent_id, text=...) | Einfügen Archival Memory |
client.agents.passages.list(agent_id) | Zeige gespeicherte Passages auf |
| Agent Suche | Agent ruft archival_memory_search automatisch an wenn relevant |
Persistenz & State
| Feature | Notiz |
|---|
| Stateful Agenten | Agent State persistiert auf dem Server über Sitzungen |
| Storage | SQLite by Default; PostgreSQL für Production |
| Export/Import | Serialisiere Agenten zum Verschieben zwischen Deployments |
| Multi-Agent | Führe und koordiniere mehrere Stateful Agenten aus |
Common Workflows
# Ein langlaufender Assistant, der über Sitzungen hinweg erinnert
# 1) einmalige Erstellung mit Persona/Human Blocks
# 2) jede Sitzung, einfach Nachrichten versenden — Letta verwaltet Memory Paging
client.agents.messages.create(agent_id=agent.id,
messages=[{"role": "user", "content": "Was erinnerst dich an mich?"}])
# Der Agent durchsucht Recall/Archival und antwortet mit persistentem Kontext
MemGPT/Letta vs Andere Memory
| Aspekt | Letta (MemGPT) | Mem0 | Zep |
|---|
| Modell | OS-Style Paging, Agent-verwaltet | Multi-Tier Store | Temporal Graph |
| Statefulness | Server-Side Agenten | Library | Service |
| Control | Agent entscheidet Paging | App entscheidet | Service verwaltet |
| Beste für | Langläufige Autonome Agenten | Personalisierung | Temporal Fakten |
Ressourcen