L'outil de mémoire permet à Claude de stocker et de récupérer des informations entre les conversations via un répertoire de fichiers de mémoire. Claude peut créer, lire, mettre à jour et supprimer des fichiers qui persistent entre les sessions, ce qui lui permet d'accumuler des connaissances au fil du temps sans tout conserver dans la fenêtre de contexte.
Il s'agit de la primitive clé pour la récupération de contexte juste-à-temps : plutôt que de charger toutes les informations pertinentes dès le départ, les agents stockent ce qu'ils apprennent en mémoire et le récupèrent à la demande. Cela permet de garder le contexte actif concentré sur ce qui est actuellement pertinent, un aspect essentiel pour les flux de travail de longue durée où tout charger en une seule fois saturerait la fenêtre de contexte. Consultez Effective context engineering pour une vue d'ensemble de ce modèle.
L'outil de mémoire fonctionne côté client : vous contrôlez où et comment les données sont stockées via votre propre infrastructure.
Contactez-nous via le formulaire de commentaires pour partager vos retours sur cette fonctionnalité.
Cette fonctionnalité est éligible à la Zero Data Retention (ZDR). Lorsque votre organisation dispose d'un accord ZDR, les données envoyées via cette fonctionnalité ne sont pas stockées après le retour de la réponse de l'API.
Lorsqu'il est activé, Claude vérifie automatiquement son répertoire de mémoire avant de commencer les tâches. Claude peut créer, lire, mettre à jour et supprimer des fichiers dans le répertoire /memories pour stocker ce qu'il apprend en travaillant, puis référencer ces souvenirs dans de futures conversations afin de traiter des tâches similaires plus efficacement ou de reprendre là où il s'était arrêté.
Comme il s'agit d'un outil côté client, Claude effectue des appels d'outil pour réaliser les opérations de mémoire, et votre application exécute ces opérations localement. Cela vous donne un contrôle total sur l'emplacement et le mode de stockage de la mémoire. Pour des raisons de sécurité, vous devez restreindre toutes les opérations de mémoire au répertoire /memories.
Lorsque vous demandez à Claude de vous aider sur une tâche, Claude vérifie d'abord automatiquement son répertoire de mémoire. Voici à quoi ressemble une interaction typique :
1. Requête de l'utilisateur :
"Help me respond to this customer service ticket."2. Claude vérifie le répertoire de mémoire :
"I'll help you respond to the customer service ticket. Let me check my memory for any previous context."Claude appelle l'outil de mémoire :
{
"type": "tool_use",
"id": "toolu_01C4D5E6F7G8H9I0J1K2L3M4",
"name": "memory",
"input": {
"command": "view",
"path": "/memories"
}
}3. Votre application renvoie le contenu du répertoire :
{
"type": "tool_result",
"tool_use_id": "toolu_01C4D5E6F7G8H9I0J1K2L3M4",
"content": "Here're the files and directories up to 2 levels deep in /memories, excluding hidden items and node_modules:\n4.0K\t/memories\n1.5K\t/memories/customer_service_guidelines.xml\n2.0K\t/memories/refund_policies.xml"
}4. Claude lit les fichiers pertinents :
{
"type": "tool_use",
"id": "toolu_01D5E6F7G8H9I0J1K2L3M4N5",
"name": "memory",
"input": {
"command": "view",
"path": "/memories/customer_service_guidelines.xml"
}
}5. Votre application renvoie le contenu du fichier :
{
"type": "tool_result",
"tool_use_id": "toolu_01D5E6F7G8H9I0J1K2L3M4N5",
"content": "Here's the content of /memories/customer_service_guidelines.xml with line numbers:\n 1\t<guidelines>\n 2\t<addressing_customers>\n 3\t- Always address customers by their first name\n 4\t- Use empathetic language\n..."
}6. Claude utilise la mémoire pour vous aider :
"Based on your customer service guidelines, I can help you craft a response. Please share the ticket details..."Pour la prise en charge des modèles, consultez la Référence des outils.
Pour utiliser l'outil de mémoire :
Pour gérer les opérations de l'outil de mémoire dans votre application, vous devez implémenter des gestionnaires pour chaque commande de mémoire. Les SDK fournissent des utilitaires pour l'outil de mémoire qui gèrent l'interface de l'outil. Vous pouvez créer une sous-classe de BetaAbstractMemoryTool (Python et C#), utiliser betaMemoryTool (TypeScript), ou implémenter BetaMemoryToolHandler (Java) pour implémenter votre propre backend de mémoire (basé sur des fichiers, base de données, stockage cloud, fichiers chiffrés, etc.).
Pour des exemples fonctionnels, consultez :
client = anthropic.Anthropic()
message = client.messages.create(
model="claude-opus-4-8",
max_tokens=2048,
messages=[
{
"role": "user",
"content": "I'm working on a Python web scraper that keeps crashing with a timeout error. Here's the problematic function:\n\n```python\ndef fetch_page(url, retries=3):\n for i in range(retries):\n try:\n response = requests.get(url, timeout=5)\n return response.text\n except requests.exceptions.Timeout:\n if i == retries - 1:\n raise\n time.sleep(1)\n```\n\nPlease help me debug this.",
}
],
tools=[{"type": "memory_20250818", "name": "memory"}],
)
print(message)Votre implémentation côté client doit gérer ces commandes de l'outil de mémoire. Bien que ces spécifications décrivent les comportements recommandés que Claude connaît le mieux, vous pouvez modifier votre implémentation et renvoyer des chaînes de caractères selon les besoins de votre cas d'utilisation.
Affiche le contenu d'un répertoire ou d'un fichier avec des plages de lignes optionnelles :
{
"command": "view",
"path": "/memories",
"view_range": [1, 10] // Optional: view specific lines
}Pour les répertoires : Renvoyez une liste qui affiche les fichiers et répertoires avec leurs tailles :
Here're the files and directories up to 2 levels deep in {path}, excluding hidden items and node_modules:
{size} {path}
{size} {path}/{filename1}
{size} {path}/{filename2}5.5K, 1.2M).) et node_modulesPour les fichiers : Renvoyez le contenu du fichier avec un en-tête et des numéros de ligne :
Here's the content of {path} with line numbers:
{line_numbers}{tab}{content}Formatage des numéros de ligne :
"File {path} exceeds maximum line limit of 999,999 lines."Exemple de sortie :
Here's the content of /memories/notes.txt with line numbers:
1 Hello World
2 This is line two
10 Line ten
100 Line one hundred"The path {path} does not exist. Please provide a valid path."Crée un nouveau fichier :
{
"command": "create",
"path": "/memories/notes.txt",
"file_text": "Meeting notes:\n- Discussed project timeline\n- Next steps defined\n"
}"File created successfully at: {path}""Error: File {path} already exists"Remplace du texte dans un fichier :
{
"command": "str_replace",
"path": "/memories/preferences.txt",
"old_str": "Favorite color: blue",
"new_str": "Favorite color: green"
}"The memory file has been edited." suivi d'un extrait de code du fichier modifié avec les numéros de ligne"Error: The path {path} does not exist. Please provide a valid path.""No replacement was performed, old_str `\{old_str}` did not appear verbatim in {path}."old_str apparaît plusieurs fois, renvoyez : "No replacement was performed. Multiple occurrences of old_str `\{old_str}` in lines: {line_numbers}. Please ensure it is unique"Si le chemin est un répertoire, renvoyez une erreur « le fichier n'existe pas ».
Insère du texte à une ligne spécifique :
{
"command": "insert",
"path": "/memories/todo.txt",
"insert_line": 2,
"insert_text": "- Review memory tool documentation\n"
}"The file {path} has been edited.""Error: The path {path} does not exist""Error: Invalid `insert_line` parameter: {insert_line}. It should be within the range of lines of the file: [0, {n_lines}]"Si le chemin est un répertoire, renvoyez une erreur « le fichier n'existe pas ».
Supprime un fichier ou un répertoire :
{
"command": "delete",
"path": "/memories/old_file.txt"
}"Successfully deleted {path}""Error: The path {path} does not exist"Supprime le répertoire et tout son contenu de manière récursive.
Renomme ou déplace un fichier/répertoire :
{
"command": "rename",
"old_path": "/memories/draft.txt",
"new_path": "/memories/final.txt"
}"Successfully renamed {old_path} to {new_path}""Error: The path {old_path} does not exist""Error: The destination {new_path} already exists"Renomme le répertoire.
Cette instruction est automatiquement incluse dans l'invite système lorsque l'outil de mémoire est activé :
IMPORTANT: ALWAYS VIEW YOUR MEMORY DIRECTORY BEFORE DOING ANYTHING ELSE.
MEMORY PROTOCOL:
1. Use the `view` command of your `memory` tool to check for earlier progress.
2. ... (work on the task) ...
- As you make progress, record status / progress / thoughts etc in your memory.
ASSUME INTERRUPTION: Your context window might be reset at any moment, so you risk losing any progress that is not recorded in your memory directory.Si vous observez que Claude crée des fichiers de mémoire désordonnés, vous pouvez inclure cette instruction :
Note: when editing your memory folder, always try to keep its content up-to-date, coherent and organized. You can rename or delete files that are no longer relevant. Do not create new files unless necessary.
Vous pouvez également guider ce que Claude écrit en mémoire. Par exemple : « Only write down information relevant to <topic> in your memory system. »
Voici des préoccupations de sécurité importantes lors de l'implémentation de votre stockage de mémoire :
Claude refusera généralement d'écrire des informations sensibles dans les fichiers de mémoire. Cependant, vous pouvez souhaiter implémenter une validation plus stricte qui supprime les informations potentiellement sensibles.
Envisagez de suivre la taille des fichiers de mémoire et d'empêcher les fichiers de devenir trop volumineux. Envisagez d'ajouter un nombre maximal de caractères que la commande de lecture de mémoire peut renvoyer, et laissez Claude paginer le contenu.
Envisagez de supprimer périodiquement les fichiers de mémoire qui n'ont pas été consultés depuis longtemps.
Des entrées de chemin malveillantes pourraient tenter d'accéder à des fichiers en dehors du répertoire /memories. Votre implémentation DOIT valider tous les chemins pour empêcher les attaques par traversée de répertoire.
Envisagez ces mesures de protection :
/memories../, ..\\, ou d'autres motifs de traversée%2e%2e%2f)pathlib.Path.resolve() et relative_to() de Python)L'outil de mémoire utilise des modèles de gestion des erreurs similaires à ceux de l'outil d'édition de texte. Consultez les sections des commandes d'outil individuelles ci-dessus pour les messages d'erreur et comportements détaillés. Les erreurs courantes incluent : fichier introuvable, erreurs de permission, chemins invalides et correspondances de texte en double.
L'outil de mémoire se combine avec l'édition de contexte pour gérer les conversations de longue durée. Pour plus de détails, consultez Édition de contexte.
L'outil de mémoire peut également être combiné avec la compaction, qui fournit un résumé côté serveur du contexte de conversation plus ancien. Alors que l'édition de contexte efface des résultats d'outils spécifiques côté client, la compaction résume automatiquement l'ensemble de la conversation côté serveur lorsqu'elle approche de la limite de la fenêtre de contexte.
Pour les flux de travail agentiques de longue durée, envisagez d'utiliser les deux : la compaction maintient le contexte actif gérable sans comptabilité côté client, et la mémoire conserve les informations importantes au-delà des limites de compaction afin que rien de critique ne soit perdu dans le résumé.
Pour les projets logiciels de longue durée qui s'étendent sur plusieurs sessions d'agent, les fichiers de mémoire doivent être initialisés délibérément, et non simplement écrits de manière ad hoc au fur et à mesure de l'avancement du travail. Le modèle ci-dessous transforme la mémoire en un mécanisme de récupération structuré, afin que chaque nouvelle session puisse reprendre exactement là où la précédente s'était arrêtée.
Session d'initialisation : la première session configure les artefacts de mémoire avant que tout travail substantiel ne commence. Cela inclut un journal de progression (suivant ce qui a été fait et ce qui vient ensuite), une liste de contrôle des fonctionnalités (définissant le périmètre du travail), et une référence à tout script de démarrage ou d'initialisation dont le projet a besoin.
Sessions suivantes : chaque nouvelle session commence par la lecture de ces artefacts de mémoire. Cela permet de récupérer l'état complet du projet en quelques secondes, sans avoir à réexplorer la base de code ni à retracer les décisions antérieures.
Mise à jour de fin de session : avant qu'une session ne se termine, elle met à jour le journal de progression avec ce qui a été accompli et ce qui reste à faire. Cela garantit que la session suivante dispose d'un point de départ précis.
Travaillez sur une seule fonctionnalité à la fois. Ne marquez une fonctionnalité comme terminée qu'après qu'une vérification de bout en bout confirme qu'elle fonctionne, et non simplement après que le code a été écrit. Cela maintient la fiabilité du journal de progression et empêche la dérive du périmètre de s'accumuler d'une session à l'autre.
Pour une étude de cas détaillée de ce modèle en pratique, incluant le script d'initialisation, la structure du fichier de progression et la récupération basée sur git, consultez Effective harnesses for long-running agents.
Répertoire des outils fournis par Anthropic et de leurs propriétés.
Gérez la longueur des conversations en parallèle de la mémoire.
Was this page helpful?