Agent Memory ist eine Research Preview-Funktion. Fordern Sie Zugriff an, um sie auszuprobieren.
Managed Agents API-Sitzungen sind standardmäßig kurzlebig. Wenn eine Sitzung endet, geht alles, was der Agent gelernt hat, verloren. Memory Stores ermöglichen es dem Agent, Erkenntnisse über Sitzungen hinweg zu bewahren: Benutzereinstellungen, Projektkonventionen, frühere Fehler und Domänenkontexte.
Alle Managed Agents API-Anfragen erfordern den Beta-Header managed-agents-2026-04-01. Ein zusätzlicher Beta-Header ist für Research Preview-Funktionen erforderlich. Das SDK setzt diese Beta-Header automatisch.
Ein Memory Store ist eine arbeitsbereichsbezogene Sammlung von Textdokumenten, die für Claude optimiert sind. Wenn ein oder mehrere Memory Stores an eine Sitzung angehängt werden, prüft der Agent die Stores automatisch, bevor er eine Aufgabe startet, und schreibt dauerhafte Erkenntnisse nach Abschluss – ohne zusätzliche Eingabeaufforderungen oder Konfiguration auf Ihrer Seite.
Jedes Memory in einem Store kann direkt über die API oder die Console aufgerufen und bearbeitet werden, was Abstimmung, Import und Export von Memories ermöglicht.
Jede Änderung an einem Memory erstellt eine unveränderliche Memory-Version, um Auditing und Rollback von Memory-Änderungen zu unterstützen.
Geben Sie dem Store einen name und eine description. Die Beschreibung wird an den Agent weitergeleitet und teilt ihm mit, was der Store enthält.
store = client.beta.memory_stores.create(
name="User Preferences",
description="Per-user preferences and project context.",
)
print(store.id) # memstore_01Hx...Die Memory Store id (memstore_...) ist das, was Sie beim Anhängen des Stores an eine Sitzung übergeben.
Laden Sie einen Store vor mit Referenzmaterial, bevor ein Agent läuft:
client.beta.memory_stores.memories.write(
memory_store_id=store.id,
path="/formatting_standards.md",
content="All reports use GAAP formatting. Dates are ISO-8601...",
)Einzelne Memories innerhalb des Stores sind auf 100 KB (~25K Token) begrenzt. Strukturieren Sie Memory als viele kleine fokussierte Dateien, nicht als wenige große.
Memory Stores werden im Array resources[] der Sitzung angehängt.
Fügen Sie optional einen prompt ein, wenn Sie Claude sitzungsspezifische Anweisungen zur Verwendung dieses Memory Stores geben möchten. Er wird Claude zusätzlich zum name und description des Memory Stores bereitgestellt und ist auf 4.096 Zeichen begrenzt.
Sie können auch access konfigurieren. Der Standard ist read_write, aber read_only wird auch unterstützt (im Beispiel unten explizit gezeigt).
session = client.beta.sessions.create(
agent=agent.id,
environment_id=environment.id,
resources=[
{
"type": "memory_store",
"memory_store_id": store.id,
"access": "read_write",
"prompt": "User preferences and project context. Check before starting any task.",
}
],
)Pro Sitzung werden maximal 8 Memory Stores unterstützt. Hängen Sie mehrere Stores an, wenn verschiedene Teile des Memory unterschiedliche Besitzer oder Zugriffsregeln haben. Häufige Gründe:
Wenn Memory Stores an eine Sitzung angehängt werden, erhält der Agent automatisch Zugriff auf Memory-Tools. Die Interaktionen des Agenten mit Memory Stores werden als agent.tool_use-Ereignisse im Event-Stream registriert.
| Tool | Beschreibung |
|---|---|
memory_list | Listet Memories in einem Store auf, optional gefiltert nach Pfadpräfix. |
memory_search | Volltextsuche über Memory-Inhalte. |
memory_read | Liest den Inhalt eines Memory. |
memory_write | Erstellt oder überschreibt ein Memory unter einem Pfad. |
memory_edit | Ändert ein vorhandenes Memory. |
memory_delete | Entfernt ein Memory. |
Memory Stores können direkt über die API verwaltet werden. Verwenden Sie dies zum Erstellen von Review-Workflows, zum Korrigieren fehlerhafter Memories oder zum Seeding von Stores vor dem Ausführen einer Sitzung.
List gibt keinen Memory-Inhalt zurück, nur Objektmetadaten. Verwenden Sie path_prefix für verzeichnisbezogene Listen (fügen Sie einen nachgestellten Schrägstrich ein: /notes/ entspricht /notes/a.md, aber nicht /notes_backup/old.md).
page = client.beta.memory_stores.memories.list(
store.id,
path_prefix="/",
)
for memory in page.data:
print(
f"{memory.path} ({memory.size_bytes} bytes, sha={memory.content_sha256[:8]})"
)Das Abrufen eines einzelnen Memory gibt den vollständigen Inhalt zurück.
mem = client.beta.memory_stores.memories.retrieve(
memory_id,
memory_store_id=store.id,
)
print(mem.content)Verwenden Sie memories.write, um ein Memory nach Pfad zu erstellen oder zu aktualisieren. Wenn unter dem Pfad nichts vorhanden ist, wird es erstellt; wenn bereits ein Memory vorhanden ist, wird sein Inhalt ersetzt. Um ein vorhandenes Memory nach mem_... ID zu ändern (z. B. um seinen Pfad umzubenennen oder eine Inhaltsbearbeitung sicher anzuwenden), verwenden Sie stattdessen memories.update (siehe Update a memory unten).
mem = client.beta.memory_stores.memories.write(
memory_store_id=store.id,
path="/preferences/formatting.md",
content="Always use tabs, not spaces.",
)Übergeben Sie precondition={"type": "not_exists"} an memories.write, um es zu einer Create-Only-Schutzmaßnahme zu machen. Wenn bereits ein Memory unter dem Pfad vorhanden ist, gibt der Schreibvorgang 409 memory_precondition_failed zurück, anstatt es zu ersetzen. Verwenden Sie dies beim Seeding eines Stores, wenn Sie vermeiden möchten, dass vorhandene Inhalte überschrieben werden.
client.beta.memory_stores.memories.write(
memory_store_id=store.id,
path="/preferences/formatting.md",
content="Always use 2-space indentation.",
precondition={"type": "not_exists"},
)Um ein vorhandenes Memory sicher zu bearbeiten (lesen, ändern, zurückschreiben, ohne eine gleichzeitige Änderung zu überschreiben), verwenden Sie stattdessen memories.update mit einer content_sha256-Vorbedingung. Siehe Update a memory unten.
memories.update() ändert ein vorhandenes Memory nach seiner mem_... ID. Sie können content, path (eine Umbenennung) oder beides in einem Aufruf ändern.
Das Umbenennen auf einen besetzten Pfad gibt 409 conflict zurück. Der Aufrufer muss den Blocker zuerst löschen oder umbenennen, oder precondition={"type": "not_exists"} übergeben, um die Umbenennung zu einem No-Op zu machen, wenn bereits etwas unter dem Ziel vorhanden ist.
Das folgende Beispiel benennt ein Memory in einen Archivpfad um:
client.beta.memory_stores.memories.update(
mem.id,
memory_store_id=store.id,
path="/archive/2026_q1_formatting.md",
)Um den Inhalt eines Memory zu bearbeiten, ohne eine gleichzeitige Schreiboperation zu überschreiben, übergeben Sie eine content_sha256-Vorbedingung. Das Update wird nur angewendet, wenn der gespeicherte Hash immer noch dem entspricht, den Sie gelesen haben; bei Nichtübereinstimmung gibt es 409 memory_precondition_failed zurück. Zu diesem Zeitpunkt lesen Sie das Memory erneut und versuchen es erneut mit dem aktuellen Status.
client.beta.memory_stores.memories.update(
memory_id=mem.id,
memory_store_id=store.id,
content="CORRECTED: Always use 2-space indentation.",
precondition={"type": "content_sha256", "content_sha256": mem.content_sha256},
)client.beta.memory_stores.memories.delete(
mem.id,
memory_store_id=store.id,
)Übergeben Sie optional expected_content_sha256 für einen bedingten Löschvorgang.
Jede Mutation zu einem Memory erstellt eine unveränderliche Memory-Version (memver_...). Versionen sammeln sich über die Lebensdauer des übergeordneten Memory an und bilden die Audit- und Rollback-Oberfläche darunter. Der Live-memories.retrieve-Aufruf gibt immer den aktuellen Head zurück; die Versions-Endpunkte geben Ihnen die vollständige Historie.
Eine neue Version wird bei jeder Mutation geschrieben:
memories.write zu einem Pfad erstellt eine Version mit operation: "created".memories.update, das content, path oder beides ändert, erstellt eine Version mit operation: "modified".memories.delete erstellt eine Version mit operation: "deleted".Verwenden Sie die Versions-Endpunkte, um zu überprüfen, welcher Benutzer oder Agent was und wann geändert hat, um einen vorherigen Snapshot zu überprüfen oder wiederherzustellen, und um mit Redact sensible Inhalte aus der Historie zu entfernen.
Listet paginierte Versionmetadaten für einen Store auf, neueste zuerst. Filtern Sie nach memory_id, operation (created, modified oder deleted), session_id, api_key_id oder einem created_at_gte/created_at_lte Zeitbereich. Die Listenantwort enthält nicht den content Body; rufen Sie einzelne Versionen mit retrieve ab, wenn Sie den vollständigen Inhalt benötigen.
for v in client.beta.memory_stores.memory_versions.list(
store.id,
memory_id=mem.id,
):
print(f"{v.id}: {v.operation}")Das Abrufen einer einzelnen Version gibt die gleichen Felder wie die Listenantwort plus den vollständigen content Body zurück.
version = client.beta.memory_stores.memory_versions.retrieve(
version_id,
memory_store_id=store.id,
)
print(version.content)Schwärzen entfernt Inhalte aus einer historischen Version, während die Audit-Spur erhalten bleibt (wer hat was wann getan). Verwenden Sie es für Compliance-Workflows wie das Entfernen von durchgesickerten Geheimnissen, PII oder Anfragen zur Benutzerlöschung. Schwärzen löscht content, content_sha256, content_size_bytes und path vollständig; alle anderen Felder, einschließlich des Akteurs und der Zeitstempel, bleiben erhalten.
client.beta.memory_stores.memory_versions.redact(
version_id,
memory_store_id=store.id,
)Was this page helpful?