Les quotas et limites suivants s'appliquent aux régions Memory Storage, aux magasins de mémoire, aux écritures, aux recherches, à la consolidation de la mémoire (Dream), aux tâches asynchrones, au Scope, aux versions du SDK et de la CLI, ainsi qu'aux plugins d'agent.
Disponibilité du service et limites des ressources
Régions
Memory Storage est disponible dans les régions Chine (Pékin), Chine (Shanghai), Chine (Hangzhou), Chine (Shenzhen), Chine (Hong Kong) et Singapour.
Limites des magasins de mémoire
|
Élément |
Limite |
|
Caractères autorisés dans le nom du magasin de mémoire |
Lettres, chiffres et traits de soulignement uniquement |
|
Longueur du nom du magasin de mémoire |
Jusqu'à 32 caractères |
|
Longueur de la description du magasin de mémoire |
Jusqu'à 1 024 octets en UTF-8 |
|
Longueur des instructions d'extraction personnalisées |
Jusqu'à 4 096 caractères |
Après avoir créé un magasin de mémoire, attendez la fin de l'initialisation de l'index avant d'écrire ou de rechercher des données.
extractInstructions spécifie des instructions d'extraction de mémoire personnalisées au niveau du magasin de mémoire. Ces instructions sont injectées dans l'invite d'extraction et influencent l'extraction ultérieure de la mémoire à long terme dans le magasin de mémoire. Vous pouvez définir ces instructions lors de l'appel à CreateMemoryStore ou les modifier en appelant UpdateMemoryStore. Pour effacer les instructions, transmettez une chaîne vide. Si vous omettez ce champ, les instructions existantes restent inchangées.
Limites des opérations de mémoire
Règles relatives au Scope
|
Opération |
Exigence relative au Scope |
Joker |
|
Ajouter des mémoires |
|
Non |
|
Rechercher des mémoires à long terme |
|
Autorisé pour |
|
Interroger des mémoires à court terme |
Les quatre niveaux du Scope sont requis. |
Non |
|
Obtenir une mémoire à long terme |
Les quatre niveaux du Scope sont requis. |
Non |
|
Mettre à jour une mémoire à long terme |
Les quatre niveaux du Scope sont requis. |
Non |
|
Supprimer une mémoire à long terme |
Les quatre niveaux du Scope sont requis. |
Non |
|
Lister des mémoires à long terme |
Spécifiez le Scope par niveau. |
Oui |
|
Lister les valeurs du Scope ( |
Spécifiez le Scope par niveau. |
Oui |
|
Interroger les tâches d'extraction ( |
Spécifiez le Scope par niveau. |
Oui |
|
Interroger les audits de requête |
Spécifiez le Scope par niveau. |
Oui |
Les jokers doivent respecter la hiérarchie du Scope. Après avoir utilisé * à un niveau donné, tous les niveaux suivants doivent également utiliser * ou rester vides. Par exemple, app-001/user-001/*/* est valide, mais app-001/*/agent-001/* ne l'est pas.
Limites de la mémoire de fichier et de l'affichage des fichiers
|
Élément |
Limite ou comportement |
|
Scope |
Les quatre niveaux, |
|
Chemin du fichier |
Le chemin canonique doit commencer par |
|
Contenu du fichier |
Texte UTF-8 valide uniquement |
|
Taille du fichier |
Jusqu'à 100 Kio (102 400 octets) par fichier |
|
Fichiers actuels dans un Scope |
Jusqu'à 2 000 fichiers par défaut |
|
Pagination de la liste des fichiers |
|
|
Écritures simultanées |
|
|
Caviardage des versions historiques |
Irréversible. Le caviardage efface uniquement les versions historiques sélectionnées et ne modifie pas le fichier actuel. |
|
Affichages de fichiers |
Lecture seule. Gérez les mémoires à l'aide d'interfaces structurées telles que le SDK ou la CLI. |
Si le contenu du fichier, le chemin ou le nombre de fichiers dépasse la limite correspondante, le service renvoie respectivement PAYLOAD_TOO_LARGE, VALIDATION_ERROR ou QUOTA_EXCEEDED. Si le condensé d'une écriture simultanée ne correspond pas, le service renvoie SHA_MISMATCH. Lisez le dernier fichier avant de décider de réessayer.
Limites d'écriture de mémoire
|
Élément |
Limite |
|
Nombre de |
Jusqu'à 20 |
|
Longueur totale du contenu des |
Jusqu'à 32 000 octets en UTF-8 |
|
Longueur du |
Jusqu'à 32 000 octets en UTF-8 |
|
Longueur de |
Jusqu'à 256 caractères |
|
Nombre de clés |
Jusqu'à 16 |
|
Longueur de la clé |
Jusqu'à 64 caractères |
|
Longueur de la valeur |
Jusqu'à 1 024 caractères |
Fournissez au moins l'un des éléments suivants : messages ou text. Le joker * n'est pas autorisé dans le Scope lors de l'ajout de mémoires.
Visibilité des écritures asynchrones
AddMemories.sync a pour valeur par défaut false, ce qui active les écritures asynchrones. Les écritures asynchrones deviennent visibles comme suit :
Les messages bruts sont écrits en premier et peuvent être interrogés immédiatement en tant que mémoires à court terme.
L'extraction de la mémoire à long terme s'exécute en arrière-plan.
Une fois l'extraction de la mémoire à long terme et l'actualisation de l'index terminées, les mémoires peuvent être récupérées en appelant
SearchMemories.
Pour afficher immédiatement les résultats d'extraction après une écriture lors d'un test, définissez sync sur true. Un bref délai d'actualisation de l'index peut toujours se produire avant que les mémoires à long terme ne soient consultables après la fin d'une écriture synchrone. Vous pouvez également appeler GetMemoryTask et transmettre le requestId renvoyé par AddMemories pour interroger l'état de la tâche d'extraction asynchrone et les ID des unités de mémoire extraites.
Valeurs par défaut de recherche
|
Paramètre |
Valeur par défaut |
Description |
|
|
|
Nombre maximal de résultats à renvoyer. La valeur par défaut est 10 et le maximum est 50. Le filtrage par pertinence ou la déduplication sémantique peuvent entraîner un nombre de résultats inférieur à topK. |
|
|
|
Indique si le reclassement est activé. |
|
|
|
Indique si les preuves sources à court terme doivent être incluses dans le champ |
|
|
|
Seuil de pertinence dans la plage |
Lorsque vous recherchez des mémoires à long terme, appId et tenantId sont requis. Vous pouvez utiliser le joker * pour agentId et runId.
Interrogations de mémoires à court terme
ListMemoryStoreMessages interroge les messages de session bruts. Les quatre niveaux du Scope, appId, tenantId, agentId et runId, sont requis. Les jokers ne sont pas pris en charge.
Utilisez cette API pour :
Afficher les messages de session bruts.
Rejouer une session spécifique.
Dépanner l'extraction de la mémoire à long terme.
Limites de la consolidation de mémoire (Dream)
La consolidation de mémoire (Dream) est une tâche asynchrone qui affine et fusionne les mémoires stockées, tout en extrayant des compétences et des profils. Les API associées sont CreateMemoryDreamTask, GetMemoryDreamTask, ListMemoryDreamTasks, ListMemoryDreamActions, ApplyMemoryDreamActions et CancelMemoryDreamTask.
Limites de CreateMemoryDreamTask
|
Élément |
Limite |
|
Nombre d'éléments |
Obligatoire. Jusqu'à 20. |
|
|
|
|
|
|
|
|
|
|
|
|
|
Longueur de |
Jusqu'à 4 000 octets en UTF-8 |
|
|
Jusqu'à 100 par requête |
Valeurs d'énumération
|
Champ |
Valeurs |
|
|
|
|
|
|
|
|
|
|
Clés |
|
|
État de la tâche (champ |
|
|
Type d'action (champ |
|
|
État de l'action (champ |
|
Lorsque applyMode=proposal, la tâche génère des actions dans l'état proposed. Appelez ApplyMemoryDreamActions pour appliquer explicitement les actions. Lorsque le mode safe_auto est utilisé, le service applique automatiquement les actions sûres qui respectent les seuils de confiance. Les actions EMIT_SKILL et EMIT_PROFILE sont écrites directement par la tâche Dream et ne nécessitent pas d'application manuelle.
Tâches asynchrones et pagination des listes
|
API |
Limite par défaut |
Limite maximale |
|
|
50 |
100 |
|
|
100 |
100 |
|
|
50 |
100 |
|
|
100 |
100 |
Les valeurs d'état des tâches d'extraction pour ListMemoryTasks.status ou task.status renvoyées par GetMemoryTask sont queued / running / completed / failed / needs_reconcile.
GetMemoryTask et ListMemoryTasks dépendent de l'index des tâches. Après la première écriture, le service nécessite un certain temps pour construire l'index des tâches. Pendant cette période, ces API peuvent renvoyer 409 CONFLICT avec le message ingest task index is still building, please retry shortly. Réessayez ultérieurement.
CLI, SDK et plugins
Pagination de la CLI
Les commandes de liste de la CLI relatives à la mémoire ne renvoient qu'une seule page de résultats et ne récupèrent pas automatiquement les pages suivantes. Pour récupérer la page suivante, utilisez le jeton nextToken présent dans la réponse.
Exemple :
tablestore-agent-cli memory list-units \
--store agent_memory \
--app-id app-001 \
--next-token <token>
Création automatique d'instance Tablestore
Si ots_endpoint et ots_instance_name ne sont pas configurés, la CLI crée et réutilise automatiquement une instance Tablestore gérée dans la région Chine (Pékin) ou Chine (Hangzhou) lorsque vous exécutez la commande doctor ou effectuez une opération. La création de l'instance prend un certain temps et le résultat est enregistré dans le fichier de configuration local.
Si vous configurez manuellement un endpoint et un nom d'instance par la suite, la CLI utilise l'instance explicitement configurée.
Versions des SDK et de la CLI
|
SDK ou outil |
Version requise |
|
SDK Python |
|
|
SDK Node.js |
|
|
Agent Storage SDK pour Python |
|
|
Agent Storage SDK pour TypeScript |
|
|
Agent Storage SDK pour Go |
|
|
CLI |
|
Remarques sur les plugins d'agent
Par défaut, les plugins Hermes et OpenClaw effectuent des recherches across les agents et les sessions du locataire actuel, en utilisant agentId=* et runId=*. Si votre activité métier n'autorise pas le partage des mémoires entre agents ou sessions, utilisez le SDK pour contrôler la portée de recherche ou modifiez la configuration du plugin.
Limites de mise à niveau progressive et de retour arrière
Les trois commutateurs suivants sont désactivés par défaut et fonctionnent de manière indépendante :
memory_unit_v2_write_enabled=false: le service ne génère ni n'accepte les champs d'écriture V2.memory_unit_v2_projection_enabled=false: le service conserve le format d'octets hérité pour les projections de fichiers.search_session_affinity_mode=off: le service conserve le comportement de recherche à voie unique hérité et les champs de réponse associés.
Privilégiez un déploiement serveur en premier lieu. Commencez par mettre à niveau tous les réplicas vers une version capable de lire les colonnes V2 et de reconnaître contextScope ainsi que les nouveaux champs de réponse, tout en maintenant les commutateurs désactivés. Une fois tous les réplicas hérités supprimés, les clients peuvent commencer à envoyer contextScope. Ensuite, changez le mode en shadow puis en on. Les serveurs hérités rejettent strictement les champs inconnus. Si les clients envoient contextScope avant que tous les réplicas ne soient mis à niveau, le cluster en version mixte renvoie une erreur HTTP 400.
N'activez pas les écritures V2 ni les projections de fichiers V2 dans un cluster en version mixte. Après l'écriture d'une ligne V2, ne revenez pas directement à un analyseur ou un rédacteur hérité qui ne reconnaît pas les colonnes V2. Une écriture de ligne complète héritée peut écraser ou supprimer les nouveaux champs. Pour revenir sur le comportement de l'application, passez à une version compatible capable de lire les données V2 avec tous les nouveaux commutateurs désactivés, plutôt que de revenir à un binaire antérieur à V2.